Skip to content

Commit fbf5382

Browse files
committed
Merge branch 'task/update-liboqs-library' into beta-2.10.8
2 parents 378d9b2 + 21d9a10 commit fbf5382

File tree

8 files changed

+39
-78
lines changed

8 files changed

+39
-78
lines changed

liboqs-android/jni/jni/KeyEncapsulation.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ JNIEXPORT jobject JNICALL Java_net_ivpn_liboqs_KeyEncapsulation_get_1KEM_1detail
4747

4848
// Call back constructor to allocate a new instance, with an int argument
4949
jobject _nativeKED = (*env)->NewObject(env, cls, constructor_meth_id_, obj);
50-
// We need to pass obj (superclass) additionally to run on android: https://stackoverflow.com/questions/25363027/jni-getmethodid-not-working-for-constructor-of-inner-class
5150

5251
OQS_KEM *kem = (OQS_KEM *) getHandle(env, obj, "native_kem_handle_");
5352

liboqs-android/jni/jni/Rand.c

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,3 @@ JNIEXPORT jint JNICALL Java_net_ivpn_liboqs_Rand_randombytes_1switch_1algorithm_
4141
(*env)->ReleaseStringUTFChars(env, jstr, alg_name_native);
4242
return (rv_ == OQS_SUCCESS) ? 0 : -1;
4343
}
44-
45-
/*
46-
* Class: org_openquantumsafe_Rand
47-
* Method: randombytes_nist_kat_init
48-
* Signature: ([B[BJ)V
49-
*/
50-
JNIEXPORT void JNICALL Java_net_ivpn_liboqs_Rand_randombytes_1nist_1kat_1init
51-
(JNIEnv *env, jclass cls, jbyteArray jentropy_input, jbyteArray jpers_str, jlong pers_str_len)
52-
{
53-
jbyte *entropy_input_native = (*env)->GetByteArrayElements(env, jentropy_input, 0);
54-
55-
if (pers_str_len == 0) {
56-
OQS_randombytes_nist_kat_init_256bit((uint8_t*) entropy_input_native, NULL);
57-
} else {
58-
jbyte *pers_str_native = (*env)->GetByteArrayElements(env, jpers_str, 0);
59-
OQS_randombytes_nist_kat_init_256bit((uint8_t*) entropy_input_native, (uint8_t*) pers_str_native);
60-
(*env)->ReleaseByteArrayElements(env, jpers_str, pers_str_native, JNI_ABORT);
61-
}
62-
63-
(*env)->ReleaseByteArrayElements(env, jentropy_input, entropy_input_native, JNI_ABORT);
64-
}

liboqs-android/jni/jni/Rand.h

Lines changed: 0 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

liboqs-android/jni/liboqs

Submodule liboqs updated 2034 files

liboqs-android/src/main/java/net/ivpn/liboqs/Common.java

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package net.ivpn.liboqs;
22

3-
import android.os.Build;
4-
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.io.InputStream;
6+
import java.net.URL;
7+
import java.nio.file.Files;
58
import java.util.Arrays;
69

710
public class Common {
@@ -25,10 +28,33 @@ public static boolean isLinux() {
2528
}
2629

2730
public static void loadNativeLibrary() {
28-
System.err.println("---------------------------");
29-
System.err.println("Loading liboqs for: " + Build.CPU_ABI);
30-
System.err.println("---------------------------");
31-
System.loadLibrary("oqs-jni");
31+
// If the library is in the java library path, load it directly. (e.g., -Djava.library.path=src/main/resources)
32+
try {
33+
System.loadLibrary("oqs-jni");
34+
// Otherwise load the library from the liboqs-java.jar
35+
} catch (UnsatisfiedLinkError e) {
36+
String libName = "llliboqs-jni.so";
37+
if (Common.isLinux()) {
38+
libName = "liboqs-jni.so";
39+
} else if (Common.isMac()) {
40+
libName = "liboqs-jni.jnilib";
41+
} else if (Common.isWindows()) {
42+
libName = "oqs-jni.dll";
43+
}
44+
URL url = KEMs.class.getResource("/" + libName);
45+
File tmpDir;
46+
try {
47+
tmpDir = Files.createTempDirectory("oqs-native-lib").toFile();
48+
tmpDir.deleteOnExit();
49+
File nativeLibTmpFile = new File(tmpDir, libName);
50+
nativeLibTmpFile.deleteOnExit();
51+
InputStream in = url.openStream();
52+
Files.copy(in, nativeLibTmpFile.toPath());
53+
System.load(nativeLibTmpFile.getAbsolutePath());
54+
} catch (IOException ioException) {
55+
ioException.printStackTrace();
56+
}
57+
}
3258
}
3359

3460
public static <E, T extends Iterable<E>> void print_list(T list) {

liboqs-android/src/main/java/net/ivpn/liboqs/KEMs.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ public class KEMs {
1515
/**
1616
* The single KEMs class instance.
1717
*/
18-
private static KEMs single_instance = null;
18+
private static KEMs single_instance = null;
1919

2020
private KEMs() {}
2121

2222
/**
2323
* \brief Make sure that at most one instance is generated.
2424
* \return Singleton instance
2525
*/
26-
public static synchronized KEMs get_instance() {
26+
public static synchronized KEMs get_instance() {
2727
if (single_instance == null) {
28-
single_instance = new KEMs();
28+
single_instance = new KEMs();
2929
}
3030
return single_instance;
3131
}

liboqs-android/src/main/java/net/ivpn/liboqs/Rand.java

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,39 +36,4 @@ public static void randombytes_switch_algorithm(String alg_name)
3636
throw new RuntimeException("Cannot switch rand algorithm");
3737
}
3838
}
39-
40-
/**
41-
* \brief Wrapper for OQS_API void OQS_randombytes_nist_kat_init(
42-
* const uint8_t *entropy_input,
43-
* const uint8_t *personalization_string,
44-
* int security_strength);
45-
*
46-
* \param Entropy input seed, must be exactly 48 bytes long
47-
* \param Entropy seed length
48-
* \param Optional personalization string, which, if non-empty, must be at
49-
* least 48 byte[] long
50-
* \param personalization string length
51-
*/
52-
private static native void randombytes_nist_kat_init(byte[] entropy_input,
53-
byte[] personalization_string,
54-
long personalization_string_len);
55-
56-
public static void randombytes_nist_kat_init(byte[] entropy_input) {
57-
randombytes_nist_kat_init(entropy_input, null);
58-
}
59-
60-
public static void randombytes_nist_kat_init(byte[] entropy_input,
61-
byte[] personalization_string) {
62-
if (entropy_input.length != 48) {
63-
throw new RuntimeException("The entropy source must be exactly 48 byte[] long");
64-
}
65-
if (personalization_string == null) {
66-
randombytes_nist_kat_init(entropy_input, null, 0);
67-
return;
68-
}
69-
if (personalization_string.length < 48) {
70-
throw new RuntimeException("The personalization string must be either empty or at least 48 byte[] long");
71-
}
72-
randombytes_nist_kat_init(entropy_input, personalization_string, personalization_string.length);
73-
}
7439
}

liboqs-android/src/main/java/net/ivpn/liboqs/Sigs.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ public class Sigs {
1515
/**
1616
* The single Sigs class instance.
1717
*/
18-
private static Sigs single_instance = null;
18+
private static Sigs single_instance = null;
1919

2020
private Sigs() {}
2121

2222
/**
2323
* \brief Make sure that at most one instance is generated.
2424
* \return Singleton instance
2525
*/
26-
public static synchronized Sigs get_instance() {
26+
public static synchronized Sigs get_instance() {
2727
if (single_instance == null) {
28-
single_instance = new Sigs();
28+
single_instance = new Sigs();
2929
}
3030
return single_instance;
3131
}

0 commit comments

Comments
 (0)