diff options
| author | J08nY | 2024-08-19 20:39:21 +0200 |
|---|---|---|
| committer | J08nY | 2024-08-19 20:39:21 +0200 |
| commit | 2a9e5944bd3f444b4866bdf5830d444020799c18 (patch) | |
| tree | 09fed39ba09fea9770dc7825636b157d71702b20 /standalone/src | |
| parent | d8965fae9231d13690d736bc090be15e95ee5aef (diff) | |
| download | ECTester-2a9e5944bd3f444b4866bdf5830d444020799c18.tar.gz ECTester-2a9e5944bd3f444b4866bdf5830d444020799c18.tar.zst ECTester-2a9e5944bd3f444b4866bdf5830d444020799c18.zip | |
Diffstat (limited to 'standalone/src')
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 */ |
