diff options
| author | J08nY | 2019-07-11 21:43:27 +0200 |
|---|---|---|
| committer | J08nY | 2019-07-11 21:43:27 +0200 |
| commit | f57fc9e3f61cf108016c10558f102f52728f1d3a (patch) | |
| tree | eddc02d6df756661c569a7c316e3d37bd6f8b32d /src/cz/crcs/ectester/standalone/libs/jni/c_utils.c | |
| parent | 3925f8b3221bb42db0f84d5a23ad5220e3f6f93b (diff) | |
| download | ECTester-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.c | 20 |
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 |
