app/src/main/java/com/beem/project/beem/otr/BeemOtrManager.java
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--
Move the app into an app submodule which respect the default gradle layout
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
    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
Nikita Kozlov <nikita@mbdsys.com>
parents: 914
diff changeset
    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
Nikita Kozlov <nikita@mbdsys.com>
parents: 914
diff changeset
    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
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   114
    /**
937
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   115
     * get the fingerprint of the remote part.
936
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   116
     * @param sessionID the otr session
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   117
     * @return a string containing the fingerprint
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   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
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   123
    /**
937
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   124
     * set the remote fingerprint as verified.
936
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   125
     * @param sessionId the current otr session
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   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
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   131
    /**
937
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   132
     * unsetthe remote fingerprint as verified.
936
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   133
     * @param sessionId the current otr session
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   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
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   139
    /**
937
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   140
     * get the local fingerprint.
936
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   141
     * @param sessionID the otr session
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   142
     * @return a string containing the fingerprint
f78522cede87 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 931
diff changeset
   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
Nikita Kozlov <nikita@mbdsys.com>
parents: 914
diff changeset
   184
Nikita Kozlov <nikita@mbdsys.com>
parents: 914
diff changeset
   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
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   196
	    } else {
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   197
		if (status.equals(SessionStatus.FINISHED)) {
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   198
		    try {
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   199
			mChats.get(sessionID).localEndOtrSession();
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   200
		    } catch (OtrException e) {
940
21d4502baa67 checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 939
diff changeset
   201
			Log.w(TAG, "error when closing local otr session", e);
937
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   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
15ff3a283d9c checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 937
diff changeset
   204
		else {
937
961b324cf4dd checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 936
diff changeset
   205
		    mChats.get(sessionID).otrStateChanged(status.toString());
939
15ff3a283d9c checkstyle
Nikita Kozlov <nikita@elyzion.net>
parents: 937
diff changeset
   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
Nikita Kozlov <nikita@mbdsys.com>
parents: 914
diff changeset
   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
}