diff options
author | dec05eba <dec05eba@protonmail.com> | 2020-11-05 01:45:06 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-11-05 01:45:06 +0100 |
commit | 2a8202e74846d191a321cca1202175af9db6107d (patch) | |
tree | a6f455caf07da1186851f343a237a4c4e4484f46 /lib/curve25519-donna/contrib | |
parent | 8efa0ec17d8c262f9c3fd7603e8074f74a053708 (diff) |
Diffstat (limited to 'lib/curve25519-donna/contrib')
-rw-r--r-- | lib/curve25519-donna/contrib/Curve25519Donna.c | 118 | ||||
-rw-r--r-- | lib/curve25519-donna/contrib/Curve25519Donna.h | 53 | ||||
-rw-r--r-- | lib/curve25519-donna/contrib/Curve25519Donna.java | 77 | ||||
-rw-r--r-- | lib/curve25519-donna/contrib/make-snippets | 68 |
4 files changed, 0 insertions, 316 deletions
diff --git a/lib/curve25519-donna/contrib/Curve25519Donna.c b/lib/curve25519-donna/contrib/Curve25519Donna.c deleted file mode 100644 index 71b816c..0000000 --- a/lib/curve25519-donna/contrib/Curve25519Donna.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - James Robson - Public domain. -*/ - -#include "Curve25519Donna.h" -#include <stdio.h> -#include <stdlib.h> - -extern void curve25519_donna(unsigned char *output, const unsigned char *a, - const unsigned char *b); - -unsigned char* -as_unsigned_char_array(JNIEnv* env, jbyteArray array, int* len); - -jbyteArray as_byte_array(JNIEnv* env, unsigned char* buf, int len); - - -jbyteArray as_byte_array(JNIEnv* env, unsigned char* buf, int len) { - jbyteArray array = (*env)->NewByteArray(env, len); - (*env)->SetByteArrayRegion(env, array, 0, len, (jbyte*)buf); - - //int i; - //for (i = 0;i < len;++i) printf("%02x",(unsigned int) buf[i]); printf(" "); - //printf("\n"); - - return array; -} - -unsigned char* -as_unsigned_char_array(JNIEnv* env, jbyteArray array, int* len) { - - *len = (*env)->GetArrayLength(env, array); - unsigned char* buf = (unsigned char*)calloc(*len+1, sizeof(char)); - (*env)->GetByteArrayRegion (env, array, 0, *len, (jbyte*)buf); - return buf; - -} - -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_curve25519Donna - (JNIEnv *env, jobject obj, jbyteArray a, jbyteArray b) { - - unsigned char o[32] = {0}; - int l1, l2; - unsigned char* a1 = as_unsigned_char_array(env, a, &l1); - unsigned char* b1 = as_unsigned_char_array(env, b, &l2); - - if ( !(l1 == 32 && l2 == 32) ) { - fprintf(stderr, "Error, must be length 32"); - return NULL; - } - - - curve25519_donna(o, (const unsigned char*)a1, (const unsigned char*)b1); - - free(a1); - free(b1); - - return as_byte_array(env, (unsigned char*)o, 32); -} - -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_makePrivate - (JNIEnv *env, jobject obj, jbyteArray secret) { - - int len; - unsigned char* k = as_unsigned_char_array(env, secret, &len); - - if (len != 32) { - fprintf(stderr, "Error, must be length 32"); - return NULL; - } - - k[0] &= 248; - k[31] &= 127; - k[31] |= 64; - return as_byte_array(env, k, 32); -} - -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_getPublic - (JNIEnv *env, jobject obj, jbyteArray privkey) { - - int len; - unsigned char* private = as_unsigned_char_array(env, privkey, &len); - - if (len != 32) { - fprintf(stderr, "Error, must be length 32"); - return NULL; - } - - unsigned char pubkey[32]; - unsigned char basepoint[32] = {9}; - - curve25519_donna(pubkey, private, basepoint); - return as_byte_array(env, (unsigned char*)pubkey, 32); -} - -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_makeSharedSecret - (JNIEnv *env, jobject obj, jbyteArray privkey, jbyteArray their_pubkey) { - - unsigned char shared_secret[32]; - - int l1, l2; - unsigned char* private = as_unsigned_char_array(env, privkey, &l1); - unsigned char* pubkey = as_unsigned_char_array(env, their_pubkey, &l2); - - if ( !(l1 == 32 && l2 == 32) ) { - fprintf(stderr, "Error, must be length 32"); - return NULL; - } - - curve25519_donna(shared_secret, private, pubkey); - return as_byte_array(env, (unsigned char*)shared_secret, 32); -} - -JNIEXPORT void JNICALL Java_Curve25519Donna_helowrld - (JNIEnv *env, jobject obj) { - printf("helowrld\n"); -} diff --git a/lib/curve25519-donna/contrib/Curve25519Donna.h b/lib/curve25519-donna/contrib/Curve25519Donna.h deleted file mode 100644 index 3cd4ca0..0000000 --- a/lib/curve25519-donna/contrib/Curve25519Donna.h +++ /dev/null @@ -1,53 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class Curve25519Donna */ - -#ifndef _Included_Curve25519Donna -#define _Included_Curve25519Donna -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: Curve25519Donna - * Method: curve25519Donna - * Signature: ([B[B)[B - */ -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_curve25519Donna - (JNIEnv *, jobject, jbyteArray, jbyteArray); - -/* - * Class: Curve25519Donna - * Method: makePrivate - * Signature: ([B)[B - */ -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_makePrivate - (JNIEnv *, jobject, jbyteArray); - -/* - * Class: Curve25519Donna - * Method: getPublic - * Signature: ([B)[B - */ -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_getPublic - (JNIEnv *, jobject, jbyteArray); - -/* - * Class: Curve25519Donna - * Method: makeSharedSecret - * Signature: ([B[B)[B - */ -JNIEXPORT jbyteArray JNICALL Java_Curve25519Donna_makeSharedSecret - (JNIEnv *, jobject, jbyteArray, jbyteArray); - -/* - * Class: Curve25519Donna - * Method: helowrld - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_Curve25519Donna_helowrld - (JNIEnv *, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/lib/curve25519-donna/contrib/Curve25519Donna.java b/lib/curve25519-donna/contrib/Curve25519Donna.java deleted file mode 100644 index e28cb53..0000000 --- a/lib/curve25519-donna/contrib/Curve25519Donna.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - James Robson - Public domain. -*/ - -public class Curve25519Donna { - - final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); - - public static String bytesToHex(byte[] bytes) { - char[] hexChars = new char[bytes.length * 2]; - int v; - for ( int j = 0; j < bytes.length; j++ ) { - v = bytes[j] & 0xFF; - hexChars[j * 2] = hexArray[v >>> 4]; - hexChars[j * 2 + 1] = hexArray[v & 0x0F]; - } - return new String(hexChars); - } - - public native byte[] curve25519Donna(byte[] a, byte[] b); - public native byte[] makePrivate(byte[] secret); - public native byte[] getPublic(byte[] privkey); - public native byte[] makeSharedSecret(byte[] privkey, byte[] theirPubKey); - public native void helowrld(); - - // Uncomment if your Java is 32-bit: - //static { System.loadLibrary("Curve25519Donna"); } - - // Otherwise, load this 64-bit .jnilib: - static { System.loadLibrary("Curve25519Donna_64"); } - - /* - To give the old tires a kick (OSX): - java -cp `pwd` Curve25519Donna - */ - public static void main (String[] args) { - - Curve25519Donna c = new Curve25519Donna(); - - // These should be 32 bytes long - byte[] user1Secret = "abcdefghijklmnopqrstuvwxyz123456".getBytes(); - byte[] user2Secret = "654321zyxwvutsrqponmlkjihgfedcba".getBytes(); - - - // You can use the curve function directly... - - //byte[] o = c.curve25519Donna(a, b); - //System.out.println("o = " + bytesToHex(o)); - - - // ... but it's not really necessary. Just use the following - // convenience methods: - - byte[] privKey = c.makePrivate(user1Secret); - byte[] pubKey = c.getPublic(privKey); - - byte[] privKey2 = c.makePrivate(user2Secret); - byte[] pubKey2 = c.getPublic(privKey2); - - System.out.println("'user1' privKey = " + bytesToHex(privKey)); - System.out.println("'user1' pubKey = " + bytesToHex(pubKey)); - System.out.println("==================================================="); - - System.out.println("'user2' privKey = " + bytesToHex(privKey2)); - System.out.println("'user2' pubKey = " + bytesToHex(pubKey2)); - System.out.println("==================================================="); - - - byte[] ss1 = c.makeSharedSecret(privKey, pubKey2); - System.out.println("'user1' computes shared secret: " + bytesToHex(ss1)); - - byte[] ss2 = c.makeSharedSecret(privKey2, pubKey); - System.out.println("'user2' computes shared secret: " + bytesToHex(ss2)); - - } -} diff --git a/lib/curve25519-donna/contrib/make-snippets b/lib/curve25519-donna/contrib/make-snippets deleted file mode 100644 index 4568721..0000000 --- a/lib/curve25519-donna/contrib/make-snippets +++ /dev/null @@ -1,68 +0,0 @@ -CFLAGS=-Wmissing-prototypes -Wdeclaration-after-statement -O2 -Wall -CC=clang - - -targets: curve25519-donna.a curve25519-donna-c64.a - -test: test-donna test-donna-c64 - - -clean: - rm -f java-src/*.class java-src/*.jnilib *.dylib *.o *.a *.pp test-curve25519-donna test-curve25519-donna-c64 speed-curve25519-donna speed-curve25519-donna-c64 - -curve25519-donna.a: curve25519-donna.o - ar -rc curve25519-donna.a curve25519-donna.o - ranlib curve25519-donna.a - - -##### OSX dynamic library (32- & 64-bit) - -curve25519donna.dylib: curve25519-donna.a curve25519-donna-c64.a - $(CC) -m32 -fpic -shared -Wl,-all_load curve25519-donna.a -Wl,-all_load -o libcurve25519donna.dylib - $(CC) -fpic -shared -Wl,-all_load curve25519-donna-c64.a -Wl,-all_load -o libcurve25519donna_64.dylib - -##### OSX/Java section hence - -# Java JNI - compiled for OSX (32- & 64-bit) -Curve25519Donna.class: - cd java-src; javah -jni Curve25519Donna; cd .. - cd java-src; javac Curve25519Donna.java; cd .. - -Curve25519Donna.jnilib: curve25519-donna.a curve25519-donna-c64.a Curve25519Donna.class - @echo "Building 32-bit..." - clang -o java-src/libCurve25519Donna.jnilib $(CFLAGS) -lc -shared -m32 -I /System/Library/Frameworks/JavaVM.framework/Headers curve25519-donna.o java-src/Curve25519Donna.c - @echo "Building 64-bit..." - clang -o java-src/libCurve25519Donna_64.jnilib $(CFLAGS) -lc -shared -I /System/Library/Frameworks/JavaVM.framework/Headers curve25519-donna-c64.o java-src/Curve25519Donna.c - -##### OSX/Java section end - -curve25519-donna.o: curve25519-donna.c - $(CC) -c curve25519-donna.c $(CFLAGS) -m32 - -curve25519-donna-c64.a: curve25519-donna-c64.o - ar -rc curve25519-donna-c64.a curve25519-donna-c64.o - ranlib curve25519-donna-c64.a - -curve25519-donna-c64.o: curve25519-donna-c64.c - $(CC) -c curve25519-donna-c64.c $(CFLAGS) - -test-donna: test-curve25519-donna - ./test-curve25519-donna | head -123456 | tail -1 - -test-donna-c64: test-curve25519-donna-c64 - ./test-curve25519-donna-c64 | head -123456 | tail -1 - -test-curve25519-donna: test-curve25519.c curve25519-donna.a - $(CC) -o test-curve25519-donna test-curve25519.c curve25519-donna.a $(CFLAGS) -m32 - -test-curve25519-donna-c64: test-curve25519.c curve25519-donna-c64.a - $(CC) -o test-curve25519-donna-c64 test-curve25519.c curve25519-donna-c64.a $(CFLAGS) - -speed-curve25519-donna: speed-curve25519.c curve25519-donna.a - $(CC) -o speed-curve25519-donna speed-curve25519.c curve25519-donna.a $(CFLAGS) -m32 - -speed-curve25519-donna-c64: speed-curve25519.c curve25519-donna-c64.a - $(CC) -o speed-curve25519-donna-c64 speed-curve25519.c curve25519-donna-c64.a $(CFLAGS) - -test-sc-curve25519-donna-c64: test-sc-curve25519.c curve25519-donna-c64.a - $(CC) -o test-sc-curve25519-donna-c64 -O test-sc-curve25519.c curve25519-donna-c64.a test-sc-curve25519.s $(CFLAGS) |