aboutsummaryrefslogtreecommitdiff
path: root/standalone/src
diff options
context:
space:
mode:
authorJ08nY2024-08-19 20:39:21 +0200
committerJ08nY2024-08-19 20:39:21 +0200
commit2a9e5944bd3f444b4866bdf5830d444020799c18 (patch)
tree09fed39ba09fea9770dc7825636b157d71702b20 /standalone/src
parentd8965fae9231d13690d736bc090be15e95ee5aef (diff)
downloadECTester-2a9e5944bd3f444b4866bdf5830d444020799c18.tar.gz
ECTester-2a9e5944bd3f444b4866bdf5830d444020799c18.tar.zst
ECTester-2a9e5944bd3f444b4866bdf5830d444020799c18.zip
Diffstat (limited to 'standalone/src')
-rw-r--r--standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java9
-rw-r--r--standalone/src/main/java/cz/crcs/ectester/standalone/libs/BoringsslLib.java5
-rw-r--r--standalone/src/main/java/cz/crcs/ectester/standalone/libs/GcryptLib.java8
-rw-r--r--standalone/src/main/java/cz/crcs/ectester/standalone/libs/LibresslLib.java5
-rw-r--r--standalone/src/main/java/cz/crcs/ectester/standalone/libs/NativeECLibrary.java3
-rw-r--r--standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile9
-rw-r--r--standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile.ext9
-rw-r--r--standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_prng.c20
-rw-r--r--standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/native.h8
9 files changed, 51 insertions, 25 deletions
diff --git a/standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java b/standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java
index 1b56ec6..603a301 100644
--- a/standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java
+++ b/standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java
@@ -107,6 +107,7 @@ public class ECTesterStandalone {
FileUtil.write(LIB_RESOURCE_DIR + "lib_timing.so", reqs.resolve("lib_timing.so"));
FileUtil.write(LIB_RESOURCE_DIR + "lib_preload.so", reqs.resolve("lib_preload.so"));
FileUtil.write(LIB_RESOURCE_DIR + "lib_prng.so", reqs.resolve("lib_prng.so"));
+ FileUtil.write(LIB_RESOURCE_DIR + "lib_prng_dummy.so", reqs.resolve("lib_prng_dummy.so"));
FileUtil.write(LIB_RESOURCE_DIR + "lib_csignals.so", reqs.resolve("lib_csignals.so"));
FileUtil.write(LIB_RESOURCE_DIR + "lib_cppsignals.so", reqs.resolve("lib_cppsignals.so"));
@@ -146,7 +147,13 @@ public class ECTesterStandalone {
System.exit(result);
} else {
// Load the utility libs.
- System.load(reqs.resolve("lib_prng.so").toString());
+ if (cli.hasOption("no-preload")) {
+ System.err.println("Loading dummy");
+ System.load(reqs.resolve("lib_prng_dummy.so").toString());
+ } else {
+ System.err.println("Loading right");
+ System.load(reqs.resolve("lib_prng.so").toString());
+ }
System.load(reqs.resolve("lib_timing.so").toString());
System.load(reqs.resolve("lib_csignals.so").toString());
System.load(reqs.resolve("lib_cppsignals.so").toString());
diff --git a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/BoringsslLib.java b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/BoringsslLib.java
index 06e6b4a..4f253e6 100644
--- a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/BoringsslLib.java
+++ b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/BoringsslLib.java
@@ -17,9 +17,4 @@ public class BoringsslLib extends NativeECLibrary {
@Override
public native Set<String> getCurves();
- @Override
- public boolean supportsDeterministicPRNG() {
- // This is provided by the native preload that hooks all randomness sources.
- return true;
- }
}
diff --git a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/GcryptLib.java b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/GcryptLib.java
index 3647ab9..49cdc7c 100644
--- a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/GcryptLib.java
+++ b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/GcryptLib.java
@@ -9,7 +9,7 @@ import java.util.Set;
public class GcryptLib extends NativeECLibrary {
public GcryptLib() {
- super("libgcrypt","gcrypt_provider");
+ super("libgcrypt", "gcrypt_provider");
}
@Override
@@ -17,10 +17,4 @@ public class GcryptLib extends NativeECLibrary {
@Override
public native Set<String> getCurves();
-
- @Override
- public boolean supportsDeterministicPRNG() {
- // This is provided by the native preload that hooks all randomness sources.
- return true;
- }
}
diff --git a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/LibresslLib.java b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/LibresslLib.java
index e53399c..b06bfaf 100644
--- a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/LibresslLib.java
+++ b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/LibresslLib.java
@@ -17,9 +17,4 @@ public class LibresslLib extends NativeECLibrary {
@Override
public native Set<String> getCurves();
- @Override
- public boolean supportsDeterministicPRNG() {
- // This is provided by the native preload that hooks all randomness sources.
- return true;
- }
}
diff --git a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/NativeECLibrary.java b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/NativeECLibrary.java
index 210a6e9..82ec115 100644
--- a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/NativeECLibrary.java
+++ b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/NativeECLibrary.java
@@ -75,6 +75,9 @@ public abstract class NativeECLibrary extends ProviderECLibrary {
public native long getLastNativeTiming();
@Override
+ public native boolean supportsDeterministicPRNG();
+
+ @Override
public native boolean setupDeterministicPRNG(byte[] seed);
abstract Provider createProvider();
diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile
index 1393f82..8784d99 100644
--- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile
+++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile
@@ -77,7 +77,10 @@ prng.o: prng/prng.c
$(CC) $(CFLAGS) -c $<
lib_prng.so: c_prng.c
- $(CC) -o $@ -shared -Wl,-soname,lib_prng.so $(CFLAGS) $<
+ $(CC) -o $@ -shared $(CFLAGS) -Wl,-soname,lib_prng.so $<
+
+lib_prng_dummy.so: c_prng.c
+ $(CC) -DDUMMY_PRELOAD=1 $(CFLAGS) -o $@ -shared -Wl,-soname,lib_prng_dummy.so $<
c_preload.o: c_preload.c
$(CC) $(CFLAGS) -c $<
@@ -95,9 +98,9 @@ cpp_utils.o: cpp_utils.cpp
$(CXX) $(CXXFLAGS) -c $<
-clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so
+clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
-cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so
+cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
# OpenSSL shim
diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile.ext b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile.ext
index 948988b..0b24b46 100644
--- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile.ext
+++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile.ext
@@ -77,7 +77,10 @@ prng.o: prng/prng.c
$(CC) $(CFLAGS) -c $<
lib_prng.so: c_prng.c
- $(CC) -o $@ -shared -Wl,-soname,lib_prng.so $(CFLAGS) $<
+ $(CC) -o $@ -shared $(CFLAGS) -Wl,-soname,lib_prng.so $<
+
+lib_prng_dummy.so: c_prng.c
+ $(CC) -DDUMMY_PRELOAD=1 $(CFLAGS) -o $@ -shared -Wl,-soname,lib_prng_dummy.so $<
c_preload.o: c_preload.c
$(CC) $(CFLAGS) -c $<
@@ -95,9 +98,9 @@ cpp_utils.o: cpp_utils.cpp
$(CXX) $(CXXFLAGS) -c $<
-clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so
+clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
-cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so
+cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
# OpenSSL shim
openssl: openssl_provider.so
diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_prng.c b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_prng.c
index 13bd172..06d7ad6 100644
--- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_prng.c
+++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_prng.c
@@ -2,9 +2,25 @@
#include <stdbool.h>
#include "prng/prng.h"
+#ifdef DUMMY_PRELOAD
+
+JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_supportsDeterministicPRNG(JNIEnv *env, jobject self) {
+ return JNI_FALSE;
+}
+
+JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_setupDeterministicPRNG(JNIEnv *env, jobject self, jbyteArray seed) {
+ return JNI_FALSE;
+}
+
+#else
+
extern prng_state preload_prng_state;
extern bool preload_prng_enabled;
+JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_supportsDeterministicPRNG(JNIEnv *env, jobject self) {
+ return JNI_TRUE;
+}
+
JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_setupDeterministicPRNG(JNIEnv *env, jobject self, jbyteArray seed) {
jsize seed_length = (*env)->GetArrayLength(env, seed);
jbyte *seed_data = (*env)->GetByteArrayElements(env, seed, NULL);
@@ -15,4 +31,6 @@ JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary
(*env)->ReleaseByteArrayElements(env, seed, seed_data, JNI_ABORT);
return JNI_TRUE;
-} \ No newline at end of file
+}
+#endif
+
diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/native.h b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/native.h
index 881243f..da1615e 100644
--- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/native.h
+++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/native.h
@@ -49,6 +49,14 @@ JNIEXPORT jlong JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_ge
/*
* Class: cz_crcs_ectester_standalone_libs_NativeECLibrary
+ * Method: supportsDeterministicPRNG
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_supportsDeterministicPRNG
+ (JNIEnv *, jobject);
+
+/*
+ * Class: cz_crcs_ectester_standalone_libs_NativeECLibrary
* Method: setupDeterministicPRNG
* Signature: ([B)Z
*/