aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs/conversations/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'src/eu/siacs/conversations/crypto')
-rw-r--r--src/eu/siacs/conversations/crypto/OtrEngine.java61
-rw-r--r--src/eu/siacs/conversations/crypto/PgpEngine.java21
2 files changed, 44 insertions, 38 deletions
diff --git a/src/eu/siacs/conversations/crypto/OtrEngine.java b/src/eu/siacs/conversations/crypto/OtrEngine.java
index 7960aa2b..0ef112c6 100644
--- a/src/eu/siacs/conversations/crypto/OtrEngine.java
+++ b/src/eu/siacs/conversations/crypto/OtrEngine.java
@@ -17,6 +17,7 @@ import org.json.JSONObject;
import android.content.Context;
import android.util.Log;
+import eu.siacs.conversations.Config;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.persistance.DatabaseBackend;
import eu.siacs.conversations.xmpp.stanzas.MessagePacket;
@@ -29,9 +30,7 @@ import net.java.otr4j.session.InstanceTag;
import net.java.otr4j.session.SessionID;
public class OtrEngine implements OtrEngineHost {
-
- private static final String LOGTAG = "xmppService";
-
+
private Account account;
private OtrPolicy otrPolicy;
private KeyPair keyPair;
@@ -45,17 +44,17 @@ public class OtrEngine implements OtrEngineHost {
this.otrPolicy.setAllowV3(true);
this.keyPair = loadKey(account.getKeys());
}
-
+
private KeyPair loadKey(JSONObject keys) {
if (keys == null) {
return null;
}
try {
- BigInteger x = new BigInteger(keys.getString("otr_x"),16);
- BigInteger y = new BigInteger(keys.getString("otr_y"),16);
- BigInteger p = new BigInteger(keys.getString("otr_p"),16);
- BigInteger q = new BigInteger(keys.getString("otr_q"),16);
- BigInteger g = new BigInteger(keys.getString("otr_g"),16);
+ BigInteger x = new BigInteger(keys.getString("otr_x"), 16);
+ BigInteger y = new BigInteger(keys.getString("otr_y"), 16);
+ BigInteger p = new BigInteger(keys.getString("otr_p"), 16);
+ BigInteger q = new BigInteger(keys.getString("otr_q"), 16);
+ BigInteger g = new BigInteger(keys.getString("otr_g"), 16);
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
DSAPublicKeySpec pubKeySpec = new DSAPublicKeySpec(y, p, q, g);
DSAPrivateKeySpec privateKeySpec = new DSAPrivateKeySpec(x, p, q, g);
@@ -70,26 +69,28 @@ public class OtrEngine implements OtrEngineHost {
return null;
}
}
-
+
private void saveKey() {
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
KeyFactory keyFactory;
try {
keyFactory = KeyFactory.getInstance("DSA");
- DSAPrivateKeySpec privateKeySpec = keyFactory.getKeySpec(privateKey, DSAPrivateKeySpec.class);
- DSAPublicKeySpec publicKeySpec = keyFactory.getKeySpec(publicKey, DSAPublicKeySpec.class);
- this.account.setKey("otr_x",privateKeySpec.getX().toString(16));
- this.account.setKey("otr_g",privateKeySpec.getG().toString(16));
- this.account.setKey("otr_p",privateKeySpec.getP().toString(16));
- this.account.setKey("otr_q",privateKeySpec.getQ().toString(16));
- this.account.setKey("otr_y",publicKeySpec.getY().toString(16));
+ DSAPrivateKeySpec privateKeySpec = keyFactory.getKeySpec(
+ privateKey, DSAPrivateKeySpec.class);
+ DSAPublicKeySpec publicKeySpec = keyFactory.getKeySpec(publicKey,
+ DSAPublicKeySpec.class);
+ this.account.setKey("otr_x", privateKeySpec.getX().toString(16));
+ this.account.setKey("otr_g", privateKeySpec.getG().toString(16));
+ this.account.setKey("otr_p", privateKeySpec.getP().toString(16));
+ this.account.setKey("otr_q", privateKeySpec.getQ().toString(16));
+ this.account.setKey("otr_y", publicKeySpec.getY().toString(16));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
-
+
}
@Override
@@ -123,18 +124,19 @@ public class OtrEngine implements OtrEngineHost {
}
return this.keyPair.getPublic();
}
-
+
@Override
public KeyPair getLocalKeyPair(SessionID arg0) throws OtrException {
- if (this.keyPair==null) {
+ if (this.keyPair == null) {
KeyPairGenerator kg;
try {
- kg = KeyPairGenerator.getInstance("DSA");
- this.keyPair = kg.genKeyPair();
- this.saveKey();
- DatabaseBackend.getInstance(context).updateAccount(account);
+ kg = KeyPairGenerator.getInstance("DSA");
+ this.keyPair = kg.genKeyPair();
+ this.saveKey();
+ DatabaseBackend.getInstance(context).updateAccount(account);
} catch (NoSuchAlgorithmException e) {
- Log.d(LOGTAG,"error generating key pair "+e.getMessage());
+ Log.d(Config.LOGTAG,
+ "error generating key pair " + e.getMessage());
}
}
return this.keyPair;
@@ -152,17 +154,18 @@ public class OtrEngine implements OtrEngineHost {
}
@Override
- public void injectMessage(SessionID session, String body) throws OtrException {
+ public void injectMessage(SessionID session, String body)
+ throws OtrException {
MessagePacket packet = new MessagePacket();
packet.setFrom(account.getFullJid());
if (session.getUserID().isEmpty()) {
packet.setTo(session.getAccountID());
} else {
- packet.setTo(session.getAccountID()+"/"+session.getUserID());
+ packet.setTo(session.getAccountID() + "/" + session.getUserID());
}
packet.setBody(body);
- packet.addChild("private","urn:xmpp:carbons:2");
- packet.addChild("no-copy","urn:xmpp:hints");
+ packet.addChild("private", "urn:xmpp:carbons:2");
+ packet.addChild("no-copy", "urn:xmpp:hints");
packet.setType(MessagePacket.TYPE_CHAT);
account.getXmppConnection().sendMessagePacket(packet);
}
diff --git a/src/eu/siacs/conversations/crypto/PgpEngine.java b/src/eu/siacs/conversations/crypto/PgpEngine.java
index 65b7ccc7..47b1a0cb 100644
--- a/src/eu/siacs/conversations/crypto/PgpEngine.java
+++ b/src/eu/siacs/conversations/crypto/PgpEngine.java
@@ -14,6 +14,7 @@ import org.openintents.openpgp.OpenPgpSignatureResult;
import org.openintents.openpgp.util.OpenPgpApi;
import org.openintents.openpgp.util.OpenPgpApi.IOpenPgpCallback;
+import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact;
@@ -38,7 +39,7 @@ public class PgpEngine {
public void decrypt(final Message message,
final UiCallback<Message> callback) {
- Log.d("xmppService", "decrypting message " + message.getUuid());
+ Log.d(Config.LOGTAG, "decrypting message " + message.getUuid());
Intent params = new Intent();
params.setAction(OpenPgpApi.ACTION_DECRYPT_VERIFY);
params.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, message
@@ -65,7 +66,7 @@ public class PgpEngine {
callback.error(R.string.openpgp_error, message);
return;
}
-
+
return;
case OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED:
callback.userInputRequried((PendingIntent) result
@@ -73,8 +74,9 @@ public class PgpEngine {
message);
return;
case OpenPgpApi.RESULT_CODE_ERROR:
- OpenPgpError error = result.getParcelableExtra(OpenPgpApi.RESULT_ERROR);
- Log.d("xmppService",error.getMessage());
+ OpenPgpError error = result
+ .getParcelableExtra(OpenPgpApi.RESULT_ERROR);
+ Log.d(Config.LOGTAG, error.getMessage());
callback.error(R.string.openpgp_error, message);
return;
default:
@@ -109,7 +111,8 @@ public class PgpEngine {
message.setEncryption(Message.ENCRYPTION_DECRYPTED);
PgpEngine.this.mXmppConnectionService
.updateMessage(message);
- PgpEngine.this.mXmppConnectionService.updateConversationUi();
+ PgpEngine.this.mXmppConnectionService
+ .updateConversationUi();
callback.success(message);
return;
case OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED:
@@ -177,7 +180,7 @@ public class PgpEngine {
} catch (IOException e) {
callback.error(R.string.openpgp_error, message);
}
-
+
break;
case OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED:
callback.userInputRequried((PendingIntent) result
@@ -221,9 +224,9 @@ public class PgpEngine {
}
});
} catch (FileNotFoundException e) {
- Log.d("xmppService", "file not found: " + e.getMessage());
+ Log.d(Config.LOGTAG, "file not found: " + e.getMessage());
} catch (IOException e) {
- Log.d("xmppService", "io exception during file encrypt");
+ Log.d(Config.LOGTAG, "io exception during file encrypt");
}
}
}
@@ -267,7 +270,7 @@ public class PgpEngine {
case OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED:
return 0;
case OpenPgpApi.RESULT_CODE_ERROR:
- Log.d("xmppService",
+ Log.d(Config.LOGTAG,
"openpgp error: "
+ ((OpenPgpError) result
.getParcelableExtra(OpenPgpApi.RESULT_ERROR))