Skip to content

Commit 2a9e594

Browse files
committed
Allow for no-preload option and correctly handle PRNG support.
1 parent d8965fa commit 2a9e594

File tree

10 files changed

+53
-27
lines changed

10 files changed

+53
-27
lines changed

nix/commonlibs.nix

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ stdenv.mkDerivation rec {
88
pkg-config
99
cmake
1010
which
11-
jdk17_headless
11+
jdk
1212
];
1313

1414
dontUseCmakeConfigure = true;
1515

16-
libs = "lib_cppsignals.so lib_csignals.so lib_timing.so lib_preload.so lib_prng.so";
16+
libs = "lib_cppsignals.so lib_csignals.so lib_timing.so lib_preload.so lib_prng.so lib_prng_dummy.so";
1717

1818
buildPhase = ''
1919
make ${libs}

standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ private void run(String[] args) {
107107
FileUtil.write(LIB_RESOURCE_DIR + "lib_timing.so", reqs.resolve("lib_timing.so"));
108108
FileUtil.write(LIB_RESOURCE_DIR + "lib_preload.so", reqs.resolve("lib_preload.so"));
109109
FileUtil.write(LIB_RESOURCE_DIR + "lib_prng.so", reqs.resolve("lib_prng.so"));
110+
FileUtil.write(LIB_RESOURCE_DIR + "lib_prng_dummy.so", reqs.resolve("lib_prng_dummy.so"));
110111
FileUtil.write(LIB_RESOURCE_DIR + "lib_csignals.so", reqs.resolve("lib_csignals.so"));
111112
FileUtil.write(LIB_RESOURCE_DIR + "lib_cppsignals.so", reqs.resolve("lib_cppsignals.so"));
112113

@@ -146,7 +147,13 @@ private void run(String[] args) {
146147
System.exit(result);
147148
} else {
148149
// Load the utility libs.
149-
System.load(reqs.resolve("lib_prng.so").toString());
150+
if (cli.hasOption("no-preload")) {
151+
System.err.println("Loading dummy");
152+
System.load(reqs.resolve("lib_prng_dummy.so").toString());
153+
} else {
154+
System.err.println("Loading right");
155+
System.load(reqs.resolve("lib_prng.so").toString());
156+
}
150157
System.load(reqs.resolve("lib_timing.so").toString());
151158
System.load(reqs.resolve("lib_csignals.so").toString());
152159
System.load(reqs.resolve("lib_cppsignals.so").toString());

standalone/src/main/java/cz/crcs/ectester/standalone/libs/BoringsslLib.java

-5
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,4 @@ public BoringsslLib() {
1717
@Override
1818
public native Set<String> getCurves();
1919

20-
@Override
21-
public boolean supportsDeterministicPRNG() {
22-
// This is provided by the native preload that hooks all randomness sources.
23-
return true;
24-
}
2520
}

standalone/src/main/java/cz/crcs/ectester/standalone/libs/GcryptLib.java

+1-7
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,12 @@
99
public class GcryptLib extends NativeECLibrary {
1010

1111
public GcryptLib() {
12-
super("libgcrypt","gcrypt_provider");
12+
super("libgcrypt", "gcrypt_provider");
1313
}
1414

1515
@Override
1616
native Provider createProvider();
1717

1818
@Override
1919
public native Set<String> getCurves();
20-
21-
@Override
22-
public boolean supportsDeterministicPRNG() {
23-
// This is provided by the native preload that hooks all randomness sources.
24-
return true;
25-
}
2620
}

standalone/src/main/java/cz/crcs/ectester/standalone/libs/LibresslLib.java

-5
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,4 @@ public LibresslLib() {
1717
@Override
1818
public native Set<String> getCurves();
1919

20-
@Override
21-
public boolean supportsDeterministicPRNG() {
22-
// This is provided by the native preload that hooks all randomness sources.
23-
return true;
24-
}
2520
}

standalone/src/main/java/cz/crcs/ectester/standalone/libs/NativeECLibrary.java

+3
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ public boolean initialize() {
7474
@Override
7575
public native long getLastNativeTiming();
7676

77+
@Override
78+
public native boolean supportsDeterministicPRNG();
79+
7780
@Override
7881
public native boolean setupDeterministicPRNG(byte[] seed);
7982

standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile

+6-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@ prng.o: prng/prng.c
7777
$(CC) $(CFLAGS) -c $<
7878

7979
lib_prng.so: c_prng.c
80-
$(CC) -o $@ -shared -Wl,-soname,lib_prng.so $(CFLAGS) $<
80+
$(CC) -o $@ -shared $(CFLAGS) -Wl,-soname,lib_prng.so $<
81+
82+
lib_prng_dummy.so: c_prng.c
83+
$(CC) -DDUMMY_PRELOAD=1 $(CFLAGS) -o $@ -shared -Wl,-soname,lib_prng_dummy.so $<
8184

8285
c_preload.o: c_preload.c
8386
$(CC) $(CFLAGS) -c $<
@@ -95,9 +98,9 @@ cpp_utils.o: cpp_utils.cpp
9598
$(CXX) $(CXXFLAGS) -c $<
9699

97100

98-
clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so
101+
clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
99102

100-
cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so
103+
cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
101104

102105

103106
# OpenSSL shim

standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile.ext

+6-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@ prng.o: prng/prng.c
7777
$(CC) $(CFLAGS) -c $<
7878

7979
lib_prng.so: c_prng.c
80-
$(CC) -o $@ -shared -Wl,-soname,lib_prng.so $(CFLAGS) $<
80+
$(CC) -o $@ -shared $(CFLAGS) -Wl,-soname,lib_prng.so $<
81+
82+
lib_prng_dummy.so: c_prng.c
83+
$(CC) -DDUMMY_PRELOAD=1 $(CFLAGS) -o $@ -shared -Wl,-soname,lib_prng_dummy.so $<
8184

8285
c_preload.o: c_preload.c
8386
$(CC) $(CFLAGS) -c $<
@@ -95,9 +98,9 @@ cpp_utils.o: cpp_utils.cpp
9598
$(CXX) $(CXXFLAGS) -c $<
9699

97100

98-
clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so
101+
clibs: lib_timing.so lib_csignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
99102

100-
cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so
103+
cpplibs: lib_timing.so lib_cppsignals.so lib_preload.so lib_prng.so lib_prng_dummy.so
101104

102105
# OpenSSL shim
103106
openssl: openssl_provider.so

standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/c_prng.c

+19-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,25 @@
22
#include <stdbool.h>
33
#include "prng/prng.h"
44

5+
#ifdef DUMMY_PRELOAD
6+
7+
JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_supportsDeterministicPRNG(JNIEnv *env, jobject self) {
8+
return JNI_FALSE;
9+
}
10+
11+
JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_setupDeterministicPRNG(JNIEnv *env, jobject self, jbyteArray seed) {
12+
return JNI_FALSE;
13+
}
14+
15+
#else
16+
517
extern prng_state preload_prng_state;
618
extern bool preload_prng_enabled;
719

20+
JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_supportsDeterministicPRNG(JNIEnv *env, jobject self) {
21+
return JNI_TRUE;
22+
}
23+
824
JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary_setupDeterministicPRNG(JNIEnv *env, jobject self, jbyteArray seed) {
925
jsize seed_length = (*env)->GetArrayLength(env, seed);
1026
jbyte *seed_data = (*env)->GetByteArrayElements(env, seed, NULL);
@@ -15,4 +31,6 @@ JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_NativeECLibrary
1531

1632
(*env)->ReleaseByteArrayElements(env, seed, seed_data, JNI_ABORT);
1733
return JNI_TRUE;
18-
}
34+
}
35+
#endif
36+

standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/native.h

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)