aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/whispersystems
diff options
context:
space:
mode:
authorMoxie Marlinspike <moxie@thoughtcrime.org>2015-01-08 13:48:49 -0800
committerMoxie Marlinspike <moxie@thoughtcrime.org>2015-01-08 14:09:01 -0800
commit6445ea5f13850f42c3952bd06a2369317683ed88 (patch)
treef2bb37c8cf4710ff6a6a37a3e7e702c5a21ca504 /src/main/java/org/whispersystems
parenta4d8f7f6a4c4e9e89db35f299e558dceee2362a1 (diff)
Break project up into Java and Android build/test.
Diffstat (limited to '')
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/DuplicateMessageException.java (renamed from src/main/java/org/whispersystems/libaxolotl/DuplicateMessageException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/IdentityKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/IdentityKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/IdentityKeyPair.java (renamed from src/main/java/org/whispersystems/libaxolotl/IdentityKeyPair.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/InvalidKeyException.java (renamed from src/main/java/org/whispersystems/libaxolotl/InvalidKeyException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/InvalidKeyIdException.java (renamed from src/main/java/org/whispersystems/libaxolotl/InvalidKeyIdException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/InvalidMacException.java (renamed from src/main/java/org/whispersystems/libaxolotl/InvalidMacException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/InvalidMessageException.java (renamed from src/main/java/org/whispersystems/libaxolotl/InvalidMessageException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/InvalidVersionException.java (renamed from src/main/java/org/whispersystems/libaxolotl/InvalidVersionException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/LegacyMessageException.java (renamed from src/main/java/org/whispersystems/libaxolotl/LegacyMessageException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/NoSessionException.java (renamed from src/main/java/org/whispersystems/libaxolotl/NoSessionException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/SessionBuilder.java (renamed from src/main/java/org/whispersystems/libaxolotl/SessionBuilder.java)2
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/SessionCipher.java (renamed from src/main/java/org/whispersystems/libaxolotl/SessionCipher.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/StaleKeyExchangeException.java (renamed from src/main/java/org/whispersystems/libaxolotl/StaleKeyExchangeException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/UntrustedIdentityException.java (renamed from src/main/java/org/whispersystems/libaxolotl/UntrustedIdentityException.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ecc/Curve.java (renamed from src/main/java/org/whispersystems/libaxolotl/ecc/Curve.java)43
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPrivateKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPrivateKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPublicKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPublicKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ecc/ECKeyPair.java (renamed from src/main/java/org/whispersystems/libaxolotl/ecc/ECKeyPair.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ecc/ECPrivateKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/ecc/ECPrivateKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ecc/ECPublicKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/ecc/ECPublicKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/groups/GroupCipher.java (renamed from src/main/java/org/whispersystems/libaxolotl/groups/GroupCipher.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/groups/GroupSessionBuilder.java (renamed from src/main/java/org/whispersystems/libaxolotl/groups/GroupSessionBuilder.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderChainKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderChainKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderMessageKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderMessageKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyRecord.java (renamed from src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyRecord.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyState.java (renamed from src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyState.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyStore.java (renamed from src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyStore.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedMessageSecrets.java (renamed from src/main/java/org/whispersystems/libaxolotl/kdf/DerivedMessageSecrets.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedRootSecrets.java (renamed from src/main/java/org/whispersystems/libaxolotl/kdf/DerivedRootSecrets.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDF.java (renamed from src/main/java/org/whispersystems/libaxolotl/kdf/HKDF.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv2.java (renamed from src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv2.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv3.java (renamed from src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv3.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/protocol/CiphertextMessage.java (renamed from src/main/java/org/whispersystems/libaxolotl/protocol/CiphertextMessage.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/protocol/KeyExchangeMessage.java (renamed from src/main/java/org/whispersystems/libaxolotl/protocol/KeyExchangeMessage.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/protocol/PreKeyWhisperMessage.java (renamed from src/main/java/org/whispersystems/libaxolotl/protocol/PreKeyWhisperMessage.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyDistributionMessage.java (renamed from src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyDistributionMessage.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyMessage.java (renamed from src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyMessage.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperMessage.java (renamed from src/main/java/org/whispersystems/libaxolotl/protocol/WhisperMessage.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperProtos.java (renamed from src/main/java/org/whispersystems/libaxolotl/protocol/WhisperProtos.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ratchet/AliceAxolotlParameters.java (renamed from src/main/java/org/whispersystems/libaxolotl/ratchet/AliceAxolotlParameters.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ratchet/BobAxolotlParameters.java (renamed from src/main/java/org/whispersystems/libaxolotl/ratchet/BobAxolotlParameters.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ratchet/ChainKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/ratchet/ChainKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ratchet/MessageKeys.java (renamed from src/main/java/org/whispersystems/libaxolotl/ratchet/MessageKeys.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ratchet/RatchetingSession.java (renamed from src/main/java/org/whispersystems/libaxolotl/ratchet/RatchetingSession.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ratchet/RootKey.java (renamed from src/main/java/org/whispersystems/libaxolotl/ratchet/RootKey.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/ratchet/SymmetricAxolotlParameters.java (renamed from src/main/java/org/whispersystems/libaxolotl/ratchet/SymmetricAxolotlParameters.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/AxolotlStore.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/AxolotlStore.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/IdentityKeyStore.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/IdentityKeyStore.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyBundle.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/PreKeyBundle.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyRecord.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/PreKeyRecord.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyStore.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/PreKeyStore.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/SessionRecord.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/SessionRecord.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/SessionState.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/SessionState.java)2
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/SessionStore.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/SessionStore.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyRecord.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyRecord.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyStore.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyStore.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/state/StorageProtos.java (renamed from src/main/java/org/whispersystems/libaxolotl/state/StorageProtos.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/ByteUtil.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/ByteUtil.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/Hex.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/Hex.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/KeyHelper.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/KeyHelper.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/Medium.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/Medium.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/Pair.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/Pair.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/guava/Absent.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/guava/Absent.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/guava/Function.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/guava/Function.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/guava/Optional.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/guava/Optional.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/guava/Preconditions.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/guava/Preconditions.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/guava/Present.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/guava/Present.java)0
-rw-r--r--java/src/main/java/org/whispersystems/libaxolotl/util/guava/Supplier.java (renamed from src/main/java/org/whispersystems/libaxolotl/util/guava/Supplier.java)0
-rw-r--r--src/main/java/org/whispersystems/libaxolotl/ecc/Curve25519.java98
69 files changed, 36 insertions, 109 deletions
diff --git a/src/main/java/org/whispersystems/libaxolotl/DuplicateMessageException.java b/java/src/main/java/org/whispersystems/libaxolotl/DuplicateMessageException.java
index 913c0121..913c0121 100644
--- a/src/main/java/org/whispersystems/libaxolotl/DuplicateMessageException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/DuplicateMessageException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/IdentityKey.java b/java/src/main/java/org/whispersystems/libaxolotl/IdentityKey.java
index 35af3394..35af3394 100644
--- a/src/main/java/org/whispersystems/libaxolotl/IdentityKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/IdentityKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/IdentityKeyPair.java b/java/src/main/java/org/whispersystems/libaxolotl/IdentityKeyPair.java
index c47df4bc..c47df4bc 100644
--- a/src/main/java/org/whispersystems/libaxolotl/IdentityKeyPair.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/IdentityKeyPair.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/InvalidKeyException.java b/java/src/main/java/org/whispersystems/libaxolotl/InvalidKeyException.java
index bb70df16..bb70df16 100644
--- a/src/main/java/org/whispersystems/libaxolotl/InvalidKeyException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/InvalidKeyException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/InvalidKeyIdException.java b/java/src/main/java/org/whispersystems/libaxolotl/InvalidKeyIdException.java
index c7c6bc01..c7c6bc01 100644
--- a/src/main/java/org/whispersystems/libaxolotl/InvalidKeyIdException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/InvalidKeyIdException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/InvalidMacException.java b/java/src/main/java/org/whispersystems/libaxolotl/InvalidMacException.java
index 0afc6996..0afc6996 100644
--- a/src/main/java/org/whispersystems/libaxolotl/InvalidMacException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/InvalidMacException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/InvalidMessageException.java b/java/src/main/java/org/whispersystems/libaxolotl/InvalidMessageException.java
index 063eb594..063eb594 100644
--- a/src/main/java/org/whispersystems/libaxolotl/InvalidMessageException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/InvalidMessageException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/InvalidVersionException.java b/java/src/main/java/org/whispersystems/libaxolotl/InvalidVersionException.java
index a1324443..a1324443 100644
--- a/src/main/java/org/whispersystems/libaxolotl/InvalidVersionException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/InvalidVersionException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/LegacyMessageException.java b/java/src/main/java/org/whispersystems/libaxolotl/LegacyMessageException.java
index dadde754..dadde754 100644
--- a/src/main/java/org/whispersystems/libaxolotl/LegacyMessageException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/LegacyMessageException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/NoSessionException.java b/java/src/main/java/org/whispersystems/libaxolotl/NoSessionException.java
index 16203554..16203554 100644
--- a/src/main/java/org/whispersystems/libaxolotl/NoSessionException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/NoSessionException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/SessionBuilder.java b/java/src/main/java/org/whispersystems/libaxolotl/SessionBuilder.java
index 2d1c8969..736d9ab1 100644
--- a/src/main/java/org/whispersystems/libaxolotl/SessionBuilder.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/SessionBuilder.java
@@ -1,10 +1,10 @@
package org.whispersystems.libaxolotl;
-import android.util.Log;
import org.whispersystems.libaxolotl.ecc.Curve;
import org.whispersystems.libaxolotl.ecc.ECKeyPair;
import org.whispersystems.libaxolotl.ecc.ECPublicKey;
+import org.whispersystems.libaxolotl.logging.Log;
import org.whispersystems.libaxolotl.protocol.CiphertextMessage;
import org.whispersystems.libaxolotl.protocol.KeyExchangeMessage;
import org.whispersystems.libaxolotl.protocol.PreKeyWhisperMessage;
diff --git a/src/main/java/org/whispersystems/libaxolotl/SessionCipher.java b/java/src/main/java/org/whispersystems/libaxolotl/SessionCipher.java
index 381dedb8..381dedb8 100644
--- a/src/main/java/org/whispersystems/libaxolotl/SessionCipher.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/SessionCipher.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/StaleKeyExchangeException.java b/java/src/main/java/org/whispersystems/libaxolotl/StaleKeyExchangeException.java
index f94a3008..f94a3008 100644
--- a/src/main/java/org/whispersystems/libaxolotl/StaleKeyExchangeException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/StaleKeyExchangeException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/UntrustedIdentityException.java b/java/src/main/java/org/whispersystems/libaxolotl/UntrustedIdentityException.java
index f434b923..f434b923 100644
--- a/src/main/java/org/whispersystems/libaxolotl/UntrustedIdentityException.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/UntrustedIdentityException.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ecc/Curve.java b/java/src/main/java/org/whispersystems/libaxolotl/ecc/Curve.java
index 66b8cc3a..5d47e3aa 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ecc/Curve.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ecc/Curve.java
@@ -16,25 +16,41 @@
*/
package org.whispersystems.libaxolotl.ecc;
+import org.whispersystems.curve25519.Curve25519KeyPair;
import org.whispersystems.libaxolotl.InvalidKeyException;
+import org.whispersystems.curve25519.Curve25519;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
public class Curve {
public static final int DJB_TYPE = 0x05;
+ public static boolean isNative() {
+ return Curve25519.isNative();
+ }
+
public static ECKeyPair generateKeyPair() {
- return Curve25519.generateKeyPair();
+ SecureRandom secureRandom = getSecureRandom();
+ Curve25519KeyPair keyPair = Curve25519.generateKeyPair(secureRandom);
+
+ return new ECKeyPair(new DjbECPublicKey(keyPair.getPublicKey()),
+ new DjbECPrivateKey(keyPair.getPrivateKey()));
}
public static ECPublicKey decodePoint(byte[] bytes, int offset)
throws InvalidKeyException
{
- int type = bytes[offset];
+ int type = bytes[offset] & 0xFF;
- if (type == DJB_TYPE) {
- return Curve25519.decodePoint(bytes, offset);
- } else {
- throw new InvalidKeyException("Unknown key type: " + type);
+ switch (type) {
+ case Curve.DJB_TYPE:
+ byte[] keyBytes = new byte[32];
+ System.arraycopy(bytes, offset+1, keyBytes, 0, keyBytes.length);
+ return new DjbECPublicKey(keyBytes);
+ default:
+ throw new InvalidKeyException("Bad key type: " + type);
}
}
@@ -50,7 +66,8 @@ public class Curve {
}
if (publicKey.getType() == DJB_TYPE) {
- return Curve25519.calculateAgreement(publicKey, privateKey);
+ return Curve25519.calculateAgreement(((DjbECPublicKey)publicKey).getPublicKey(),
+ ((DjbECPrivateKey)privateKey).getPrivateKey());
} else {
throw new InvalidKeyException("Unknown type: " + publicKey.getType());
}
@@ -60,7 +77,7 @@ public class Curve {
throws InvalidKeyException
{
if (signingKey.getType() == DJB_TYPE) {
- return Curve25519.verifySignature(signingKey, message, signature);
+ return Curve25519.verifySignature(((DjbECPublicKey)signingKey).getPublicKey(), message, signature);
} else {
throw new InvalidKeyException("Unknown type: " + signingKey.getType());
}
@@ -70,9 +87,17 @@ public class Curve {
throws InvalidKeyException
{
if (signingKey.getType() == DJB_TYPE) {
- return Curve25519.calculateSignature(signingKey, message);
+ return Curve25519.calculateSignature(getSecureRandom(), ((DjbECPrivateKey)signingKey).getPrivateKey(), message);
} else {
throw new InvalidKeyException("Unknown type: " + signingKey.getType());
}
}
+
+ private static SecureRandom getSecureRandom() {
+ try {
+ return SecureRandom.getInstance("SHA1PRNG");
+ } catch (NoSuchAlgorithmException e) {
+ throw new AssertionError(e);
+ }
+ }
}
diff --git a/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPrivateKey.java b/java/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPrivateKey.java
index ecb55b4e..ecb55b4e 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPrivateKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPrivateKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPublicKey.java b/java/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPublicKey.java
index 9f66d439..9f66d439 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPublicKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ecc/DjbECPublicKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ecc/ECKeyPair.java b/java/src/main/java/org/whispersystems/libaxolotl/ecc/ECKeyPair.java
index bcaec927..bcaec927 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ecc/ECKeyPair.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ecc/ECKeyPair.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ecc/ECPrivateKey.java b/java/src/main/java/org/whispersystems/libaxolotl/ecc/ECPrivateKey.java
index 922057de..922057de 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ecc/ECPrivateKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ecc/ECPrivateKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ecc/ECPublicKey.java b/java/src/main/java/org/whispersystems/libaxolotl/ecc/ECPublicKey.java
index 12576807..12576807 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ecc/ECPublicKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ecc/ECPublicKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/groups/GroupCipher.java b/java/src/main/java/org/whispersystems/libaxolotl/groups/GroupCipher.java
index 43dac752..43dac752 100644
--- a/src/main/java/org/whispersystems/libaxolotl/groups/GroupCipher.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/groups/GroupCipher.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/groups/GroupSessionBuilder.java b/java/src/main/java/org/whispersystems/libaxolotl/groups/GroupSessionBuilder.java
index 8b73484b..8b73484b 100644
--- a/src/main/java/org/whispersystems/libaxolotl/groups/GroupSessionBuilder.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/groups/GroupSessionBuilder.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderChainKey.java b/java/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderChainKey.java
index 71375923..71375923 100644
--- a/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderChainKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderChainKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderMessageKey.java b/java/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderMessageKey.java
index 8808a8e8..8808a8e8 100644
--- a/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderMessageKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/groups/ratchet/SenderMessageKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyRecord.java b/java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyRecord.java
index bb1ba952..bb1ba952 100644
--- a/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyRecord.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyRecord.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyState.java b/java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyState.java
index 80498ce0..80498ce0 100644
--- a/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyState.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyState.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyStore.java b/java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyStore.java
index da01b1f3..da01b1f3 100644
--- a/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyStore.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/groups/state/SenderKeyStore.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedMessageSecrets.java b/java/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedMessageSecrets.java
index b3f54fb8..b3f54fb8 100644
--- a/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedMessageSecrets.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedMessageSecrets.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedRootSecrets.java b/java/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedRootSecrets.java
index 82cc541d..82cc541d 100644
--- a/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedRootSecrets.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/kdf/DerivedRootSecrets.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/kdf/HKDF.java b/java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDF.java
index d190822d..d190822d 100644
--- a/src/main/java/org/whispersystems/libaxolotl/kdf/HKDF.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDF.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv2.java b/java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv2.java
index 86e4bf5f..86e4bf5f 100644
--- a/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv2.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv2.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv3.java b/java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv3.java
index a1934c90..a1934c90 100644
--- a/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv3.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/kdf/HKDFv3.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/protocol/CiphertextMessage.java b/java/src/main/java/org/whispersystems/libaxolotl/protocol/CiphertextMessage.java
index cf4be756..cf4be756 100644
--- a/src/main/java/org/whispersystems/libaxolotl/protocol/CiphertextMessage.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/protocol/CiphertextMessage.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/protocol/KeyExchangeMessage.java b/java/src/main/java/org/whispersystems/libaxolotl/protocol/KeyExchangeMessage.java
index bec9208c..bec9208c 100644
--- a/src/main/java/org/whispersystems/libaxolotl/protocol/KeyExchangeMessage.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/protocol/KeyExchangeMessage.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/protocol/PreKeyWhisperMessage.java b/java/src/main/java/org/whispersystems/libaxolotl/protocol/PreKeyWhisperMessage.java
index fff6d02a..fff6d02a 100644
--- a/src/main/java/org/whispersystems/libaxolotl/protocol/PreKeyWhisperMessage.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/protocol/PreKeyWhisperMessage.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyDistributionMessage.java b/java/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyDistributionMessage.java
index 424dd87c..424dd87c 100644
--- a/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyDistributionMessage.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyDistributionMessage.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyMessage.java b/java/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyMessage.java
index b3a17456..b3a17456 100644
--- a/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyMessage.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/protocol/SenderKeyMessage.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperMessage.java b/java/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperMessage.java
index 980bec1f..980bec1f 100644
--- a/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperMessage.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperMessage.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperProtos.java b/java/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperProtos.java
index 12ab0272..12ab0272 100644
--- a/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperProtos.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/protocol/WhisperProtos.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ratchet/AliceAxolotlParameters.java b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/AliceAxolotlParameters.java
index 13c995e9..13c995e9 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ratchet/AliceAxolotlParameters.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/AliceAxolotlParameters.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ratchet/BobAxolotlParameters.java b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/BobAxolotlParameters.java
index 27116a8b..27116a8b 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ratchet/BobAxolotlParameters.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/BobAxolotlParameters.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ratchet/ChainKey.java b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/ChainKey.java
index 9dd1dbee..9dd1dbee 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ratchet/ChainKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/ChainKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ratchet/MessageKeys.java b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/MessageKeys.java
index 95a8c7dc..95a8c7dc 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ratchet/MessageKeys.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/MessageKeys.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ratchet/RatchetingSession.java b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/RatchetingSession.java
index ec9af6d9..ec9af6d9 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ratchet/RatchetingSession.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/RatchetingSession.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ratchet/RootKey.java b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/RootKey.java
index 39f3a831..39f3a831 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ratchet/RootKey.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/RootKey.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ratchet/SymmetricAxolotlParameters.java b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/SymmetricAxolotlParameters.java
index 7a63c45f..7a63c45f 100644
--- a/src/main/java/org/whispersystems/libaxolotl/ratchet/SymmetricAxolotlParameters.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/ratchet/SymmetricAxolotlParameters.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/AxolotlStore.java b/java/src/main/java/org/whispersystems/libaxolotl/state/AxolotlStore.java
index 2fda9a21..2fda9a21 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/AxolotlStore.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/AxolotlStore.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/IdentityKeyStore.java b/java/src/main/java/org/whispersystems/libaxolotl/state/IdentityKeyStore.java
index d2024f78..d2024f78 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/IdentityKeyStore.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/IdentityKeyStore.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/PreKeyBundle.java b/java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyBundle.java
index 772bcc14..772bcc14 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/PreKeyBundle.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyBundle.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/PreKeyRecord.java b/java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyRecord.java
index 0ea905f4..0ea905f4 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/PreKeyRecord.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyRecord.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/PreKeyStore.java b/java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyStore.java
index 7dc5e626..7dc5e626 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/PreKeyStore.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/PreKeyStore.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/SessionRecord.java b/java/src/main/java/org/whispersystems/libaxolotl/state/SessionRecord.java
index 76c64922..76c64922 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/SessionRecord.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/SessionRecord.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/SessionState.java b/java/src/main/java/org/whispersystems/libaxolotl/state/SessionState.java
index 9b2b1e2a..e724e7df 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/SessionState.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/SessionState.java
@@ -17,7 +17,6 @@
package org.whispersystems.libaxolotl.state;
-import android.util.Log;
import com.google.protobuf.ByteString;
@@ -29,6 +28,7 @@ import org.whispersystems.libaxolotl.ecc.ECKeyPair;
import org.whispersystems.libaxolotl.ecc.ECPrivateKey;
import org.whispersystems.libaxolotl.ecc.ECPublicKey;
import org.whispersystems.libaxolotl.kdf.HKDF;
+import org.whispersystems.libaxolotl.logging.Log;
import org.whispersystems.libaxolotl.ratchet.ChainKey;
import org.whispersystems.libaxolotl.ratchet.MessageKeys;
import org.whispersystems.libaxolotl.ratchet.RootKey;
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/SessionStore.java b/java/src/main/java/org/whispersystems/libaxolotl/state/SessionStore.java
index c5ad00b0..c5ad00b0 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/SessionStore.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/SessionStore.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyRecord.java b/java/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyRecord.java
index f11f5cf1..f11f5cf1 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyRecord.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyRecord.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyStore.java b/java/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyStore.java
index c828bf23..c828bf23 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyStore.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/SignedPreKeyStore.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/state/StorageProtos.java b/java/src/main/java/org/whispersystems/libaxolotl/state/StorageProtos.java
index b3e3e0e6..b3e3e0e6 100644
--- a/src/main/java/org/whispersystems/libaxolotl/state/StorageProtos.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/state/StorageProtos.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/ByteUtil.java b/java/src/main/java/org/whispersystems/libaxolotl/util/ByteUtil.java
index c213ba0b..c213ba0b 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/ByteUtil.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/ByteUtil.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/Hex.java b/java/src/main/java/org/whispersystems/libaxolotl/util/Hex.java
index 19285464..19285464 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/Hex.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/Hex.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/KeyHelper.java b/java/src/main/java/org/whispersystems/libaxolotl/util/KeyHelper.java
index 96ee6563..96ee6563 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/KeyHelper.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/KeyHelper.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/Medium.java b/java/src/main/java/org/whispersystems/libaxolotl/util/Medium.java
index d18b2d66..d18b2d66 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/Medium.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/Medium.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/Pair.java b/java/src/main/java/org/whispersystems/libaxolotl/util/Pair.java
index 0476d932..0476d932 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/Pair.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/Pair.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/guava/Absent.java b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Absent.java
index bd06ded9..bd06ded9 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/guava/Absent.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Absent.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/guava/Function.java b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Function.java
index 1ad516c5..1ad516c5 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/guava/Function.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Function.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/guava/Optional.java b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Optional.java
index 4f2de832..4f2de832 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/guava/Optional.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Optional.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/guava/Preconditions.java b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Preconditions.java
index ce253c65..ce253c65 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/guava/Preconditions.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Preconditions.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/guava/Present.java b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Present.java
index 630570ff..630570ff 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/guava/Present.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Present.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/util/guava/Supplier.java b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Supplier.java
index ba880707..ba880707 100644
--- a/src/main/java/org/whispersystems/libaxolotl/util/guava/Supplier.java
+++ b/java/src/main/java/org/whispersystems/libaxolotl/util/guava/Supplier.java
diff --git a/src/main/java/org/whispersystems/libaxolotl/ecc/Curve25519.java b/src/main/java/org/whispersystems/libaxolotl/ecc/Curve25519.java
deleted file mode 100644
index 685a4a11..00000000
--- a/src/main/java/org/whispersystems/libaxolotl/ecc/Curve25519.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Copyright (C) 2013 Open Whisper Systems
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.whispersystems.libaxolotl.ecc;
-
-import org.whispersystems.libaxolotl.InvalidKeyException;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-
-public class Curve25519 {
-
- static {
- System.loadLibrary("curve25519");
-
- try {
- random = SecureRandom.getInstance("SHA1PRNG");
- } catch (NoSuchAlgorithmException e) {
- throw new AssertionError(e);
- }
- }
-
- private static final SecureRandom random;
-
- private static native byte[] calculateAgreement(byte[] ourPrivate, byte[] theirPublic);
- private static native byte[] generatePublicKey(byte[] privateKey);
- private static native byte[] generatePrivateKey(byte[] random);
-
- private static native byte[] calculateSignature(byte[] random, byte[] privateKey, byte[] message);
- private static native boolean verifySignature(byte[] publicKey, byte[] message, byte[] signature);
-
- public static ECKeyPair generateKeyPair() {
- byte[] privateKey = generatePrivateKey();
- byte[] publicKey = generatePublicKey(privateKey);
-
- return new ECKeyPair(new DjbECPublicKey(publicKey), new DjbECPrivateKey(privateKey));
- }
-
- static byte[] calculateAgreement(ECPublicKey publicKey, ECPrivateKey privateKey) {
- return calculateAgreement(((DjbECPrivateKey)privateKey).getPrivateKey(),
- ((DjbECPublicKey)publicKey).getPublicKey());
- }
-
- static byte[] calculateSignature(ECPrivateKey privateKey, byte[] message) {
- byte[] random = getRandom(64);
- return calculateSignature(random, ((DjbECPrivateKey)privateKey).getPrivateKey(), message);
- }
-
- static boolean verifySignature(ECPublicKey publicKey, byte[] message, byte[] signature) {
- return verifySignature(((DjbECPublicKey)publicKey).getPublicKey(), message, signature);
- }
-
- static ECPublicKey decodePoint(byte[] encoded, int offset)
- throws InvalidKeyException
- {
- int type = encoded[offset] & 0xFF;
- byte[] keyBytes = new byte[32];
- System.arraycopy(encoded, offset+1, keyBytes, 0, keyBytes.length);
-
- if (type != Curve.DJB_TYPE) {
- throw new InvalidKeyException("Bad key type: " + type);
- }
-
- return new DjbECPublicKey(keyBytes);
- }
-
- private static byte[] generatePrivateKey() {
- byte[] privateKey = new byte[32];
- random.nextBytes(privateKey);
-
- return generatePrivateKey(privateKey);
- }
-
- private static byte[] getRandom(int size) {
- try {
- byte[] random = new byte[size];
- SecureRandom.getInstance("SHA1PRNG").nextBytes(random);
-
- return random;
- } catch (NoSuchAlgorithmException e) {
- throw new AssertionError(e);
- }
- }
-
-}