diff --git a/android/jni/curve25519-jni.c b/android/jni/curve25519-jni.c index 9953a62..d1d6eb3 100644 --- a/android/jni/curve25519-jni.c +++ b/android/jni/curve25519-jni.c @@ -100,7 +100,7 @@ JNIEXPORT jboolean JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Pr return result; } -JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_calculateUniqueSignature +JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_calculateVrfSignature (JNIEnv *env, jobject obj, jbyteArray random, jbyteArray privateKey, jbyteArray message) { jbyteArray signature = (*env)->NewByteArray(env, 96); @@ -121,7 +121,7 @@ JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519 else (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/AssertionError"), "Signature failed!"); } -JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_verifyUniqueSignature +JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_verifyVrfSignature (JNIEnv *env, jobject obj, jbyteArray publicKey, jbyteArray message, jbyteArray signature) { uint8_t* signatureBytes = (uint8_t*)(*env)->GetByteArrayElements(env, signature, 0); @@ -140,7 +140,7 @@ JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519 (*env)->ReleaseByteArrayElements(env, vrf, vrfBytes, 0); if (result == 0) return vrf; - else (*env)->ThrowNew(env, (*env)->FindClass(env, "org/whispersystems/curve25519/UniqueSignatureVerificationFailedException"), "Invalid signature"); + else (*env)->ThrowNew(env, (*env)->FindClass(env, "org/whispersystems/curve25519/VrfSignatureVerificationFailedException"), "Invalid signature"); } diff --git a/android/libs/armeabi-v7a/libcurve25519.so b/android/libs/armeabi-v7a/libcurve25519.so index ab6e175..40f3d6b 100755 Binary files a/android/libs/armeabi-v7a/libcurve25519.so and b/android/libs/armeabi-v7a/libcurve25519.so differ diff --git a/android/libs/armeabi/libcurve25519.so b/android/libs/armeabi/libcurve25519.so index 6b7d0cb..64a61a4 100755 Binary files a/android/libs/armeabi/libcurve25519.so and b/android/libs/armeabi/libcurve25519.so differ diff --git a/android/libs/mips/libcurve25519.so b/android/libs/mips/libcurve25519.so index 73338a9..babd834 100755 Binary files a/android/libs/mips/libcurve25519.so and b/android/libs/mips/libcurve25519.so differ diff --git a/android/libs/x86/libcurve25519.so b/android/libs/x86/libcurve25519.so index b632d9f..6eb7ed2 100755 Binary files a/android/libs/x86/libcurve25519.so and b/android/libs/x86/libcurve25519.so differ diff --git a/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java b/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java index 9f267ac..2fc7081 100644 --- a/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java +++ b/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java @@ -29,17 +29,17 @@ public class NativeCurve25519Test extends Curve25519Test { byte[] message = new byte[i]; random.nextBytes(message); - byte[] signature = getInstance().calculateUniqueSignature(keys.getPrivateKey(), message); - byte[] vrf = getInstance().verifyUniqueSignature(keys.getPublicKey(), message, signature); + byte[] signature = getInstance().calculateVrfSignature(keys.getPrivateKey(), message); + byte[] vrf = getInstance().verifyVrfSignature(keys.getPublicKey(), message, signature); assertFalse(getInstance().verifySignature(keys.getPublicKey(), message, signature)); message[Math.abs(random.nextInt()) % message.length] ^= 0x01; try { - getInstance().verifyUniqueSignature(keys.getPublicKey(), message, signature); + getInstance().verifyVrfSignature(keys.getPublicKey(), message, signature); throw new AssertionError("Should have failed"); - } catch (UniqueSignatureVerificationFailedException e) { + } catch (VrfSignatureVerificationFailedException e) { // good } } @@ -47,8 +47,8 @@ public class NativeCurve25519Test extends Curve25519Test { public void testUniqueSignatureVector() throws Exception { Curve25519KeyPair keys = new Curve25519KeyPair(PUBLIC_KEY, PRIVATE_KEY); - byte[] signature = getInstance().calculateUniqueSignature(keys.getPrivateKey(), MESSAGE); - byte[] vrf = getInstance().verifyUniqueSignature(keys.getPublicKey(), MESSAGE, signature); + byte[] signature = getInstance().calculateVrfSignature(keys.getPrivateKey(), MESSAGE); + byte[] vrf = getInstance().verifyVrfSignature(keys.getPublicKey(), MESSAGE, signature); assertTrue(Arrays.equals(vrf, VRF)); } diff --git a/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java b/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java index 1433006..18e7941 100644 --- a/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java +++ b/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java @@ -73,12 +73,12 @@ abstract class BaseJavaCurve25519Provider implements Curve25519Provider { return curve_sigs.curve25519_verify(sha512provider, signature, publicKey, message, message.length) == 0; } - public byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message) { + public byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message) { throw new AssertionError("NYI"); } - public byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException + public byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException { throw new AssertionError("NYI"); } diff --git a/common/src/main/java/org/whispersystems/curve25519/Curve25519.java b/common/src/main/java/org/whispersystems/curve25519/Curve25519.java index 74c58ab..78f7b25 100644 --- a/common/src/main/java/org/whispersystems/curve25519/Curve25519.java +++ b/common/src/main/java/org/whispersystems/curve25519/Curve25519.java @@ -124,13 +124,13 @@ public class Curve25519 { * @param message The message to sign. * @return A 96-byte signature. */ - public byte[] calculateUniqueSignature(byte[] privateKey, byte[] message) { + public byte[] calculateVrfSignature(byte[] privateKey, byte[] message) { if (privateKey == null || privateKey.length != 32) { throw new IllegalArgumentException("Invalid private key!"); } byte[] random = provider.getRandom(64); - return provider.calculateUniqueSignature(random, privateKey, message); + return provider.calculateVrfSignature(random, privateKey, message); } /** @@ -142,18 +142,18 @@ public class Curve25519 { * * @return The vrf for this signature. */ - public byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException + public byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException { if (publicKey == null || publicKey.length != 32) { throw new IllegalArgumentException("Invalid public key!"); } if (message == null || signature == null || signature.length != 96) { - throw new UniqueSignatureVerificationFailedException("Invalid message or signature format"); + throw new VrfSignatureVerificationFailedException("Invalid message or signature format"); } - return provider.verifyUniqueSignature(publicKey, message, signature); + return provider.verifyVrfSignature(publicKey, message, signature); } private static Curve25519Provider constructNativeProvider(SecureRandomProvider random) throws NoSuchProviderException { diff --git a/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java b/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java index ebc3510..abad023 100644 --- a/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java +++ b/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java @@ -18,9 +18,9 @@ interface Curve25519Provider { byte[] calculateSignature(byte[] random, byte[] privateKey, byte[] message); boolean verifySignature(byte[] publicKey, byte[] message, byte[] signature); - byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message); - byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException; + byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message); + byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException; byte[] getRandom(int length); diff --git a/common/src/main/java/org/whispersystems/curve25519/UniqueSignatureVerificationFailedException.java b/common/src/main/java/org/whispersystems/curve25519/UniqueSignatureVerificationFailedException.java deleted file mode 100644 index f3180ba..0000000 --- a/common/src/main/java/org/whispersystems/curve25519/UniqueSignatureVerificationFailedException.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.whispersystems.curve25519; - -public class UniqueSignatureVerificationFailedException extends Exception { - - public UniqueSignatureVerificationFailedException() { - super(); - } - - public UniqueSignatureVerificationFailedException(String message) { - super(message); - } - - public UniqueSignatureVerificationFailedException(Exception exception) { - super(exception); - } -} diff --git a/common/src/main/java/org/whispersystems/curve25519/VrfSignatureVerificationFailedException.java b/common/src/main/java/org/whispersystems/curve25519/VrfSignatureVerificationFailedException.java new file mode 100644 index 0000000..a417124 --- /dev/null +++ b/common/src/main/java/org/whispersystems/curve25519/VrfSignatureVerificationFailedException.java @@ -0,0 +1,16 @@ +package org.whispersystems.curve25519; + +public class VrfSignatureVerificationFailedException extends Exception { + + public VrfSignatureVerificationFailedException() { + super(); + } + + public VrfSignatureVerificationFailedException(String message) { + super(message); + } + + public VrfSignatureVerificationFailedException(Exception exception) { + super(exception); + } +} diff --git a/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java b/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java index b4eff8a..3a96337 100644 --- a/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java +++ b/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java @@ -73,11 +73,11 @@ class NativeCurve25519Provider implements Curve25519Provider { public native boolean verifySignature(byte[] publicKey, byte[] message, byte[] signature); @Override - public native byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message); + public native byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message); @Override - public native byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException; + public native byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException; private native boolean smokeCheck(int dummy); diff --git a/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java b/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java index 054a146..e125870 100644 --- a/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java +++ b/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java @@ -64,15 +64,15 @@ public class OpportunisticCurve25519Provider implements Curve25519Provider { } @Override - public byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message) { - return delegate.calculateUniqueSignature(random, privateKey, message); + public byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message) { + return delegate.calculateVrfSignature(random, privateKey, message); } @Override - public byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException + public byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException { - return delegate.verifyUniqueSignature(publicKey, message, signature); + return delegate.verifyVrfSignature(publicKey, message, signature); } }