Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/java/org_bitcoin_NativeSecp256k1.c
Show First 20 Lines • Show All 347 Lines • ▼ Show 20 Lines | if( ret ) { | ||||
ret = secp256k1_schnorr_verify(ctx, sigdata, data, &pubkey); | ret = secp256k1_schnorr_verify(ctx, sigdata, data, &pubkey); | ||||
} | } | ||||
(void)classObject; | (void)classObject; | ||||
return ret; | return ret; | ||||
} | } | ||||
SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1schnorr_1sign | |||||
(JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l) | |||||
{ | |||||
secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; | |||||
unsigned char* data = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); | |||||
unsigned char* secKey = (unsigned char*) (data + 32); | |||||
jobjectArray retArray; | |||||
jbyteArray sigArray, intsByteArray; | |||||
unsigned char intsarray[1]; | |||||
unsigned char sig[64]; | |||||
intsarray[0] = secp256k1_schnorr_sign(ctx, sig, data, secKey, NULL, NULL); | |||||
retArray = (*env)->NewObjectArray(env, 2, | |||||
(*env)->FindClass(env, "[B"), | |||||
(*env)->NewByteArray(env, 1)); | |||||
sigArray = (*env)->NewByteArray(env, 64); | |||||
(*env)->SetByteArrayRegion(env, sigArray, 0, 64, (jbyte*)sig); | |||||
(*env)->SetObjectArrayElement(env, retArray, 0, sigArray); | |||||
intsByteArray = (*env)->NewByteArray(env, 1); | |||||
(*env)->SetByteArrayRegion(env, intsByteArray, 0, 1, (jbyte*)intsarray); | |||||
(*env)->SetObjectArrayElement(env, retArray, 1, intsByteArray); | |||||
(void)classObject; | |||||
return retArray; | |||||
} | |||||
SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdh | SECP256K1_API jobjectArray JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdh | ||||
(JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint publen) | (JNIEnv* env, jclass classObject, jobject byteBufferObject, jlong ctx_l, jint publen) | ||||
{ | { | ||||
secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; | secp256k1_context *ctx = (secp256k1_context*)(uintptr_t)ctx_l; | ||||
const unsigned char* secdata = (*env)->GetDirectBufferAddress(env, byteBufferObject); | const unsigned char* secdata = (*env)->GetDirectBufferAddress(env, byteBufferObject); | ||||
const unsigned char* pubdata = (const unsigned char*) (secdata + 32); | const unsigned char* pubdata = (const unsigned char*) (secdata + 32); | ||||
jobjectArray retArray; | jobjectArray retArray; | ||||
Show All 35 Lines |