aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
diff options
context:
space:
mode:
authorJ08nY2019-07-11 21:43:27 +0200
committerJ08nY2019-07-11 21:43:27 +0200
commitf57fc9e3f61cf108016c10558f102f52728f1d3a (patch)
treeeddc02d6df756661c569a7c316e3d37bd6f8b32d /src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
parent3925f8b3221bb42db0f84d5a23ad5220e3f6f93b (diff)
downloadECTester-f57fc9e3f61cf108016c10558f102f52728f1d3a.tar.gz
ECTester-f57fc9e3f61cf108016c10558f102f52728f1d3a.tar.zst
ECTester-f57fc9e3f61cf108016c10558f102f52728f1d3a.zip
Add MatrixSSL support.
Diffstat (limited to 'src/cz/crcs/ectester/standalone/libs/jni/c_utils.c')
-rw-r--r--src/cz/crcs/ectester/standalone/libs/jni/c_utils.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c b/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
index ab221a9..a5bc14d 100644
--- a/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
+++ b/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
@@ -221,4 +221,24 @@ bool asn1_der_decode(JNIEnv *env, jbyteArray sig, jbyte **r_data, size_t *r_len,
*s_len = s_length;
*s_data = s_out;
return true;
+}
+
+char *biginteger_to_hex(JNIEnv *env, jobject big, jint bytes) {
+ jmethodID to_string = (*env)->GetMethodID(env, biginteger_class, "toString", "(I)Ljava/lang/String;");
+ jstring big_string = (*env)->CallObjectMethod(env, big, to_string, (jint) 16);
+
+ jsize len = (*env)->GetStringUTFLength(env, big_string);
+ char raw_string[len];
+ (*env)->GetStringUTFRegion(env, big_string, 0, len, raw_string);
+
+ char *result = calloc(bytes, 2);
+ if (len >= bytes) {
+ return strncpy(result, raw_string, 2*bytes);
+ } else {
+ jsize diff = bytes - len;
+ for (jint i = 0; i < diff*2; ++i) {
+ result[i] = '0';
+ }
+ return strncpy(result + diff*2, raw_string, 2*bytes);
+ }
} \ No newline at end of file