author | Da Risk <da_risk@beem-project.com> |
Sun, 15 Mar 2015 18:03:03 +0100 | |
changeset 1040 | 197a85a35cba |
parent 940 | src/com/beem/project/beem/otr/BeemOtrManager.java@21d4502baa67 |
child 1043 | 9b965359eaea |
permissions | -rw-r--r-- |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
1 |
/* |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
2 |
BEEM is a videoconference application on the Android Platform. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
3 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
4 |
Copyright (C) 2009-2011 by Frederic-Charles Barthelery, |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
5 |
Nikita Kozlov, |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
6 |
Vincent Veronis. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
7 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
8 |
This file is part of BEEM. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
9 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
10 |
BEEM is free software: you can redistribute it and/or modify |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
11 |
it under the terms of the GNU General Public License as published by |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
12 |
the Free Software Foundation, either version 3 of the License, or |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
13 |
(at your option) any later version. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
14 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
15 |
BEEM is distributed in the hope that it will be useful, |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
16 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
17 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
18 |
GNU General Public License for more details. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
19 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
20 |
You should have received a copy of the GNU General Public License |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
21 |
along with BEEM. If not, see <http://www.gnu.org/licenses/>. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
22 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
23 |
Please send bug reports with examples or suggestions to |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
24 |
contact@beem-project.com or http://www.beem-project.com/ |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
25 |
|
936 | 26 |
*/ |
911
ca323cff3ac9
I have reimplemented the BeemOtrService in a more "centralized" way.
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff
changeset
|
27 |
package com.beem.project.beem.otr; |
ca323cff3ac9
I have reimplemented the BeemOtrService in a more "centralized" way.
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff
changeset
|
28 |
|
915 | 29 |
import java.io.IOException; |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
30 |
import java.security.KeyPair; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
31 |
import java.util.HashMap; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
32 |
import java.util.Map; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
33 |
|
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
34 |
import net.java.otr4j.OtrEngine; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
35 |
import net.java.otr4j.OtrEngineHost; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
36 |
import net.java.otr4j.OtrEngineImpl; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
37 |
import net.java.otr4j.OtrEngineListener; |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
38 |
import net.java.otr4j.OtrException; |
915 | 39 |
import net.java.otr4j.OtrKeyManagerImpl; |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
40 |
import net.java.otr4j.OtrPolicy; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
41 |
import net.java.otr4j.OtrPolicyImpl; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
42 |
import net.java.otr4j.session.SessionID; |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
43 |
import net.java.otr4j.session.SessionStatus; |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
44 |
import android.util.Log; |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
45 |
|
911
ca323cff3ac9
I have reimplemented the BeemOtrService in a more "centralized" way.
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff
changeset
|
46 |
import com.beem.project.beem.service.ChatAdapter; |
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
47 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
48 |
/** |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
49 |
* BeemOtrManager. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
50 |
*/ |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
51 |
public class BeemOtrManager implements OtrEngineHost { |
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
52 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
53 |
private static final String TAG = "BeemOtrEngineHostImpl"; |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
54 |
private static BeemOtrManager INSTANCE; |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
55 |
//We will have a global policy for Beem as long as we won't need to modify the policy per chat. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
56 |
private static final OtrPolicy mGlobalPolicy = new OtrPolicyImpl(OtrPolicy.ALLOW_V2 | OtrPolicy.ERROR_START_AKE); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
57 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
58 |
private OtrEngine mOtrEngine; |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
59 |
private OtrKeyManagerImpl mOtrKeyManager; |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
60 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
61 |
//Map of chat, needed because of the message injection |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
62 |
private final Map<SessionID, ChatAdapter> mChats = new HashMap<SessionID, ChatAdapter>(); |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
63 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
64 |
/** |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
65 |
* Private constructor prevents instantiation from other classes. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
66 |
*/ |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
67 |
private BeemOtrManager() { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
68 |
mOtrEngine = new OtrEngineImpl(this); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
69 |
mOtrEngine.addOtrEngineListener(new BeemOtrListener()); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
70 |
try { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
71 |
mOtrKeyManager = new OtrKeyManagerImpl("/sdcard/beem.keystore"); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
72 |
} catch (IOException e) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
73 |
e.printStackTrace(); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
74 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
75 |
} |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
76 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
77 |
/** |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
78 |
* getOtrManager. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
79 |
* @return OtrEngine |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
80 |
*/ |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
81 |
public OtrEngine getOtrManager() { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
82 |
return mOtrEngine; |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
83 |
} |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
84 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
85 |
/** |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
86 |
* BeemOtrManager.getInstance. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
87 |
* @return BeemOtrManager |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
88 |
*/ |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
89 |
public static BeemOtrManager getInstance() { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
90 |
if (INSTANCE == null) |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
91 |
INSTANCE = new BeemOtrManager(); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
92 |
return INSTANCE; |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
93 |
} |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
94 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
95 |
/** |
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
96 |
* We must call addChat before stating a new otr session because we will need the chat instance for message |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
97 |
* injection. |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
98 |
* @param sessionID the otr sessionID. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
99 |
* @param chat instance. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
100 |
*/ |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
101 |
public void addChat(final SessionID sessionID, final ChatAdapter chat) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
102 |
mChats.put(sessionID, chat); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
103 |
Log.d(TAG, "adding new OTR session " + sessionID); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
104 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
105 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
106 |
/** |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
107 |
* We must remove the chat from the map after we ended the corresponding otr session. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
108 |
* @param sessionID the otr sessionID to remove. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
109 |
*/ |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
110 |
public void removeChat(final SessionID sessionID) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
111 |
mChats.remove(sessionID); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
112 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
113 |
|
936 | 114 |
/** |
937 | 115 |
* get the fingerprint of the remote part. |
936 | 116 |
* @param sessionID the otr session |
117 |
* @return a string containing the fingerprint |
|
118 |
*/ |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
119 |
public String getRemoteFingerprint(final SessionID sessionID) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
120 |
return mOtrKeyManager.getRemoteFingerprint(sessionID); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
121 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
122 |
|
936 | 123 |
/** |
937 | 124 |
* set the remote fingerprint as verified. |
936 | 125 |
* @param sessionId the current otr session |
126 |
*/ |
|
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
127 |
public void verifyRemoteFingerprint(final SessionID sessionId) { |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
128 |
mOtrKeyManager.verify(sessionId); |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
129 |
} |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
130 |
|
936 | 131 |
/** |
937 | 132 |
* unsetthe remote fingerprint as verified. |
936 | 133 |
* @param sessionId the current otr session |
134 |
*/ |
|
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
135 |
public void unverifyRemoteFingerprint(final SessionID sessionId) { |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
136 |
mOtrKeyManager.unverify(sessionId); |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
137 |
} |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
138 |
|
936 | 139 |
/** |
937 | 140 |
* get the local fingerprint. |
936 | 141 |
* @param sessionID the otr session |
142 |
* @return a string containing the fingerprint |
|
143 |
*/ |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
144 |
public String getLocalFingerprint(final SessionID sessionID) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
145 |
return mOtrKeyManager.getLocalFingerprint(sessionID); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
146 |
} |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
147 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
148 |
@Override |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
149 |
public void injectMessage(SessionID sessionID, String msg) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
150 |
ChatAdapter chat = mChats.get(sessionID); |
931
7552d41aebec
add a function to inject xmpp messages
Nikita Kozlov <nikita@beem-project.com>
parents:
930
diff
changeset
|
151 |
chat.injectMessage(msg); |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
152 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
153 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
154 |
@Override |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
155 |
public void showWarning(SessionID sessionID, String warning) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
156 |
Log.d(TAG, "Warning for " + sessionID + " : " + warning); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
157 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
158 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
159 |
@Override |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
160 |
public void showError(SessionID sessionID, String error) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
161 |
Log.d(TAG, "Error for " + sessionID + " : " + error); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
162 |
} |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
163 |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
164 |
@Override |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
165 |
public OtrPolicy getSessionPolicy(SessionID sessionID) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
166 |
return mGlobalPolicy; |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
167 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
168 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
169 |
@Override |
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
170 |
public KeyPair getKeyPair(SessionID sessionID) { |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
171 |
KeyPair kp = mOtrKeyManager.loadLocalKeyPair(sessionID); |
912
bf953743f5a1
rewrite BeemOtrManager as a singleton and merge it with BeemOtrEngineHostImpl
Nikita Kozlov <nikita@mbdsys.com>
parents:
911
diff
changeset
|
172 |
|
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
173 |
if (kp != null) |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
174 |
return kp; |
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
175 |
|
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
176 |
mOtrKeyManager.generateLocalKeyPair(sessionID); |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
177 |
return mOtrKeyManager.loadLocalKeyPair(sessionID); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
178 |
} |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
179 |
|
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
180 |
/** |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
181 |
* BeemOtrListener. |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
182 |
*/ |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
183 |
private class BeemOtrListener implements OtrEngineListener { |
915 | 184 |
|
185 |
@Override |
|
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
186 |
public void sessionStatusChanged(final SessionID sessionID) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
187 |
Log.d(TAG, "OTR Status changed for " + sessionID + " : " + mOtrEngine.getSessionStatus(sessionID)); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
188 |
if (mOtrKeyManager.loadRemotePublicKey(sessionID) == null) { |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
189 |
mOtrKeyManager.savePublicKey(sessionID, mOtrEngine.getRemotePublicKey(sessionID)); |
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
190 |
} |
929
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
191 |
|
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
192 |
SessionStatus status = mOtrEngine.getSessionStatus(sessionID); |
a4bbcfbd0a91
managing otr fingerprint authentication
Nikita Kozlov <nikita@beem-project.com>
parents:
928
diff
changeset
|
193 |
|
930
54664632dcc9
fix bug on otr status
Nikita Kozlov <nikita@beem-project.com>
parents:
929
diff
changeset
|
194 |
if (status.equals(SessionStatus.ENCRYPTED) && mOtrKeyManager.isVerified(sessionID)) { |
54664632dcc9
fix bug on otr status
Nikita Kozlov <nikita@beem-project.com>
parents:
929
diff
changeset
|
195 |
mChats.get(sessionID).otrStateChanged("AUTHENTICATED"); |
937 | 196 |
} else { |
197 |
if (status.equals(SessionStatus.FINISHED)) { |
|
198 |
try { |
|
199 |
mChats.get(sessionID).localEndOtrSession(); |
|
200 |
} catch (OtrException e) { |
|
940 | 201 |
Log.w(TAG, "error when closing local otr session", e); |
937 | 202 |
} |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
203 |
} |
939 | 204 |
else { |
937 | 205 |
mChats.get(sessionID).otrStateChanged(status.toString()); |
939 | 206 |
} |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
207 |
} |
915 | 208 |
} |
921
ab30d289a86c
adding a keystore for otr, adding buttons which display fingerprints
Nikita Kozlov <nikita@beem-project.com>
parents:
915
diff
changeset
|
209 |
} |
911
ca323cff3ac9
I have reimplemented the BeemOtrService in a more "centralized" way.
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff
changeset
|
210 |
} |