aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c
diff options
context:
space:
mode:
authorGustav Simonsson <gustav.simonsson@gmail.com>2015-09-28 23:46:17 +0800
committerGustav Simonsson <gustav.simonsson@gmail.com>2015-09-28 23:46:38 +0800
commit1d20b0247c35f440d3fdc3d21de19b2d5256c3cf (patch)
treebe0bce533d5d476e4f408d1d7757b9ac416463ae /crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c
parent7977e87ce1e9ec46a8e8275f4cf53b6281c412c7 (diff)
downloadgo-tangerine-1d20b0247c35f440d3fdc3d21de19b2d5256c3cf.tar.gz
go-tangerine-1d20b0247c35f440d3fdc3d21de19b2d5256c3cf.tar.zst
go-tangerine-1d20b0247c35f440d3fdc3d21de19b2d5256c3cf.zip
Update libsecp256k1
Diffstat (limited to 'crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c')
-rw-r--r--crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c b/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c
new file mode 100644
index 000000000..bb4cd7072
--- /dev/null
+++ b/crypto/secp256k1/libsecp256k1/src/java/org_bitcoin_NativeSecp256k1.c
@@ -0,0 +1,23 @@
+#include "org_bitcoin_NativeSecp256k1.h"
+#include "include/secp256k1.h"
+
+JNIEXPORT jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1verify
+ (JNIEnv* env, jclass classObject, jobject byteBufferObject)
+{
+ unsigned char* data = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject);
+ int sigLen = *((int*)(data + 32));
+ int pubLen = *((int*)(data + 32 + 4));
+
+ return secp256k1_ecdsa_verify(data, 32, data+32+8, sigLen, data+32+8+sigLen, pubLen);
+}
+
+static void __javasecp256k1_attach(void) __attribute__((constructor));
+static void __javasecp256k1_detach(void) __attribute__((destructor));
+
+static void __javasecp256k1_attach(void) {
+ secp256k1_start(SECP256K1_START_VERIFY);
+}
+
+static void __javasecp256k1_detach(void) {
+ secp256k1_stop();
+}