aboutsummaryrefslogtreecommitdiff
path: root/standalone/src
diff options
context:
space:
mode:
authorJ08nY2024-05-06 19:31:48 +0200
committerJ08nY2024-05-06 19:31:48 +0200
commit5c823806439086c486bbddcb1cf79bc17247e24c (patch)
tree5db2dc65326b2589610060ba01de3aa0f4ff3f2e /standalone/src
parentc4980ceb1452488d1fb78627ed16e3a36700ccd4 (diff)
downloadECTester-5c823806439086c486bbddcb1cf79bc17247e24c.tar.gz
ECTester-5c823806439086c486bbddcb1cf79bc17247e24c.tar.zst
ECTester-5c823806439086c486bbddcb1cf79bc17247e24c.zip
Diffstat (limited to 'standalone/src')
-rw-r--r--standalone/src/main/java/cz/crcs/ectester/standalone/output/TextTestWriter.java2
-rw-r--r--standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/boringssl.c37
-rw-r--r--standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_signals.h5
3 files changed, 30 insertions, 14 deletions
diff --git a/standalone/src/main/java/cz/crcs/ectester/standalone/output/TextTestWriter.java b/standalone/src/main/java/cz/crcs/ectester/standalone/output/TextTestWriter.java
index ba345e7..36ff1af 100644
--- a/standalone/src/main/java/cz/crcs/ectester/standalone/output/TextTestWriter.java
+++ b/standalone/src/main/java/cz/crcs/ectester/standalone/output/TextTestWriter.java
@@ -48,7 +48,7 @@ public class TextTestWriter extends BaseTextTestWriter {
StandaloneTestSuite standaloneSuite = (StandaloneTestSuite) suite;
StringBuilder sb = new StringBuilder();
sb.append("═══ ").append(Colors.underline("ECTester version:")).append(" ").append(ECTesterStandalone.VERSION).append(System.lineSeparator());
- sb.append("═══ ").append(Colors.underline("Library:")).append(" ").append(standaloneSuite.getLibrary().name()).append(System.lineSeparator());
+ sb.append("═══ ").append(Colors.underline("Library:")).append(" ").append(standaloneSuite.getLibrary().name()).append(" (").append(standaloneSuite.getLibrary().getProvider().getName()).append(")").append(System.lineSeparator());
return sb.toString();
}
return "";
diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/boringssl.c b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/boringssl.c
index 4cc95a5..6878549 100644
--- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/boringssl.c
+++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/boringssl.c
@@ -1,5 +1,6 @@
#include "c_utils.h"
#include "c_timing.h"
+#include "c_signals.h"
#include "native.h"
#include <strings.h>
@@ -288,9 +289,12 @@ static jobject generate_from_curve(JNIEnv *env, const EC_GROUP *curve) {
EC_KEY *key = EC_KEY_new();
EC_KEY_set_group(key, curve);
- native_timing_start();
- int err = EC_KEY_generate_key(key);
- native_timing_stop();
+ int err = 0;
+ SIG_TRY(TIMEOUT) {
+ native_timing_start();
+ err = EC_KEY_generate_key(key);
+ native_timing_stop();
+ } SIG_CATCH_HANDLE(env);
if (!err) {
throw_new(env, "java/security/GeneralSecurityException", "Error generating key, EC_KEY_generate_key.");
@@ -430,9 +434,12 @@ JNIEXPORT jbyteArray JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeKey
jbyteArray result = (*env)->NewByteArray(env, secret_len);
jbyte *result_data = (*env)->GetByteArrayElements(env, result, NULL);
- native_timing_start();
- int err = ECDH_compute_key(result_data, secret_len, EC_KEY_get0_public_key(pub), priv, NULL);
- native_timing_stop();
+ int err = 0;
+ SIG_TRY(TIMEOUT) {
+ native_timing_start();
+ err = ECDH_compute_key(result_data, secret_len, EC_KEY_get0_public_key(pub), priv, NULL);
+ native_timing_stop();
+ } SIG_CATCH_HANDLE(env);
if (err <= 0) {
throw_new(env, "java/security/GeneralSecurityException", "Error computing ECDH, ECDH_compute_key.");
@@ -466,9 +473,12 @@ JNIEXPORT jbyteArray JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSig
jbyte *data_data = (*env)->GetByteArrayElements(env, data, NULL);
// TODO: Do more Signatures here, maybe use the EVP interface to get to the hashes easier and not hash manually?
- native_timing_start();
- ECDSA_SIG *signature = ECDSA_do_sign((unsigned char *) data_data, data_size, priv);
- native_timing_stop();
+ ECDSA_SIG *signature = NULL;
+ SIG_TRY(TIMEOUT) {
+ native_timing_start();
+ signature = ECDSA_do_sign((unsigned char *) data_data, data_size, priv);
+ native_timing_stop();
+ } SIG_CATCH_HANDLE(env);
(*env)->ReleaseByteArrayElements(env, data, data_data, JNI_ABORT);
if (!signature) {
@@ -508,9 +518,12 @@ JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSigna
jsize data_size = (*env)->GetArrayLength(env, data);
jbyte *data_data = (*env)->GetByteArrayElements(env, data, NULL);
- native_timing_start();
- int result = ECDSA_do_verify((unsigned char *) data_data, data_size, sig_obj, pub);
- native_timing_stop();
+ int result = 0;
+ SIG_TRY(TIMEOUT) {
+ native_timing_start();
+ result = ECDSA_do_verify((unsigned char *) data_data, data_size, sig_obj, pub);
+ native_timing_stop();
+ } SIG_CATCH_HANDLE(env);
if (result < 0) {
throw_new(env, "java/security/GeneralSecurityException", "Error verifying, ECDSA_do_verify.");
diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_signals.h b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_signals.h
index dec7223..4420a4d 100644
--- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_signals.h
+++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_signals.h
@@ -9,6 +9,8 @@ extern "C"
{
#endif
+#define TIMEOUT 5
+
/**
*
*/
@@ -51,7 +53,8 @@ jobject get_siginfo(JNIEnv *env);
(*env)->ThrowNew(env, timeoutexception_class, "Operation timed out."); \
} \
} while (0)
-
+#define SIG_CATCH_HANDLE(env) SIG_CATCH(); \
+ SIG_HANDLE(env)
#ifdef __cplusplus