Skip to content

Commit cada551

Browse files
SWilson4AdijeShen
authored andcommitted
Update README, examples, and CI before 0.2.0 release (#32)
* Update to latest CI image Signed-off-by: Spencer Wilson <[email protected]> * Install jdk package and set JAVA_HOME Signed-off-by: Spencer Wilson <[email protected]> * Add macOS job Signed-off-by: Spencer Wilson <[email protected]> * Update README.md and example files Signed-off-by: Spencer Wilson <[email protected]> * Remove unnecessary install Signed-off-by: Spencer Wilson <[email protected]> --------- Signed-off-by: Spencer Wilson <[email protected]>
1 parent bb4624c commit cada551

File tree

4 files changed

+67
-34
lines changed

4 files changed

+67
-34
lines changed

.github/workflows/java.yml

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ jobs:
1919
- name: Ensure GitHub actions are valid
2020
run: actionlint -shellcheck "" # run *without* shellcheck
2121

22-
build-and-test:
22+
linux:
2323
needs: workflowcheck
24-
name: OQS Ubuntu
2524
runs-on: ubuntu-latest
26-
container: openquantumsafe/ci-ubuntu-focal:latest
25+
container: openquantumsafe/ci-ubuntu-latest:latest
2726
steps:
2827
- name: Checkout liboqs-java
2928
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4
@@ -45,3 +44,35 @@ jobs:
4544
javac -cp target/liboqs-java.jar examples/KEMExample.java &&
4645
javac -cp target/liboqs-java.jar examples/SigExample.java &&
4746
javac -cp target/liboqs-java.jar examples/RandExample.java
47+
48+
macos:
49+
needs: workflowcheck
50+
runs-on: macos-latest
51+
steps:
52+
- name: Install Python
53+
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5
54+
with:
55+
python-version: '3.12'
56+
- name: Checkout liboqs-java
57+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4
58+
- name: Checkout liboqs main
59+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4
60+
with:
61+
repository: open-quantum-safe/liboqs
62+
path: liboqs
63+
ref: main
64+
- name: Install liboqs dependencies
65+
run: env HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja && pip3 install --require-hashes --break-system-packages -r .github/workflows/requirements.txt
66+
working-directory: liboqs
67+
- name: Build liboqs
68+
run: mkdir build && cd build && cmake .. -G"Ninja" -DBUILD_SHARED_LIBS=ON -DOQS_BUILD_ONLY_LIB=ON && sudo ninja install
69+
working-directory: liboqs
70+
- name: Resolve all maven project dependencies
71+
run: mvn dependency:go-offline
72+
- name: Build liboqs-java and run tests
73+
run: export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/lib" && mvn -P macosx package
74+
- name: Compile KEM, Signatures and Rand examples
75+
run: |
76+
javac -cp target/liboqs-java.jar examples/KEMExample.java &&
77+
javac -cp target/liboqs-java.jar examples/SigExample.java &&
78+
javac -cp target/liboqs-java.jar examples/RandExample.java

README.md

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,13 @@ To build the `liboqs-java` wrapper type for different operating systems add the
164164

165165
For instance, to build `liboqs-java` for MacOS, type:
166166
```
167-
$ mvn package -P macosx -Dliboqs.include.dir="/usr/local/include" -Dliboqs.lib.dir="/usr/local/lib"
167+
mvn package -P macosx -Dliboqs.include.dir="/usr/local/include" -Dliboqs.lib.dir="/usr/local/lib"
168168
```
169169
The above command will compile the C and Java files and also run the unit tests.
170170

171171
To build without running the default unit tests you can use the `-Dmaven.test.skip=true` command line option as follows:
172172
```
173-
$ mvn package -P macosx -Dliboqs.include.dir="/usr/local/include" -Dliboqs.lib.dir="/usr/local/lib" -Dmaven.test.skip=true
173+
mvn package -P macosx -Dliboqs.include.dir="/usr/local/include" -Dliboqs.lib.dir="/usr/local/lib" -Dmaven.test.skip=true
174174
```
175175

176176
The default profile for building is `linux`, so when building on Linux the `-P <OS>` command line option may be omitted.
@@ -194,7 +194,6 @@ The examples include:
194194

195195
1. **Rand example:**
196196
Print random bytes from
197-
* NIST-KAT
198197
* OpenSSL
199198
* System (default)
200199

@@ -212,20 +211,20 @@ $ java -cp "target\liboqs-java.jar;examples\" KEMExample
212211
##### Linux/MacOS
213212

214213
```
215-
$ javac -cp target/liboqs-java.jar examples/KEMExample.java
216-
$ java -cp target/liboqs-java.jar:examples/ KEMExample
214+
javac -cp target/liboqs-java.jar examples/KEMExample.java
215+
java -cp target/liboqs-java.jar:examples/ KEMExample
217216
```
218217

219218
```
220219
Supported KEMs:
221-
BIKE-L1 BIKE-L3 Classic-McEliece-348864 Classic-McEliece-348864f Classic-McEliece-460896 Classic-McEliece-460896f Classic-McEliece-6688128 Classic-McEliece-6688128f Classic-McEliece-6960119 Classic-McEliece-6960119f Classic-McEliece-8192128 Classic-McEliece-8192128f HQC-128 HQC-192 HQC-256 Kyber512 Kyber768 Kyber1024 Kyber512-90s Kyber768-90s Kyber1024-90s NTRU-HPS-2048-509 NTRU-HPS-2048-677 NTRU-HPS-4096-821 NTRU-HRSS-701 ntrulpr653 ntrulpr761 ntrulpr857 sntrup653 sntrup761 sntrup857 LightSaber-KEM Saber-KEM FireSaber-KEM FrodoKEM-640-AES FrodoKEM-640-SHAKE FrodoKEM-976-AES FrodoKEM-976-SHAKE FrodoKEM-1344-AES FrodoKEM-1344-SHAKE SIDH-p434 SIDH-p503 SIDH-p610 SIDH-p751 SIDH-p434-compressed SIDH-p503-compressed SIDH-p610-compressed SIDH-p751-compressed SIKE-p434 SIKE-p503 SIKE-p610 SIKE-p751 SIKE-p434-compressed SIKE-p503-compressed SIKE-p610-compressed SIKE-p751-compressed
220+
BIKE-L1 BIKE-L3 BIKE-L5 Classic-McEliece-348864 Classic-McEliece-348864f Classic-McEliece-460896 Classic-McEliece-460896f Classic-McEliece-6688128 Classic-McEliece-6688128f Classic-McEliece-6960119 Classic-McEliece-6960119f Classic-McEliece-8192128 Classic-McEliece-8192128f HQC-128 HQC-192 HQC-256 Kyber512 Kyber768 Kyber1024 ML-KEM-512 ML-KEM-768 ML-KEM-1024 sntrup761 FrodoKEM-640-AES FrodoKEM-640-SHAKE FrodoKEM-976-AES FrodoKEM-976-SHAKE FrodoKEM-1344-AES FrodoKEM-1344-SHAKE
222221
223222
Enabled KEMs:
224-
BIKE-L1 BIKE-L3 Classic-McEliece-348864 Classic-McEliece-348864f Classic-McEliece-460896 Classic-McEliece-460896f Classic-McEliece-6688128 Classic-McEliece-6688128f Classic-McEliece-6960119 Classic-McEliece-6960119f Classic-McEliece-8192128 Classic-McEliece-8192128f HQC-128 HQC-192 HQC-256 Kyber512 Kyber768 Kyber1024 Kyber512-90s Kyber768-90s Kyber1024-90s NTRU-HPS-2048-509 NTRU-HPS-2048-677 NTRU-HPS-4096-821 NTRU-HRSS-701 ntrulpr653 ntrulpr761 ntrulpr857 sntrup653 sntrup761 sntrup857 LightSaber-KEM Saber-KEM FireSaber-KEM FrodoKEM-640-AES FrodoKEM-640-SHAKE FrodoKEM-976-AES FrodoKEM-976-SHAKE FrodoKEM-1344-AES FrodoKEM-1344-SHAKE SIDH-p434 SIDH-p503 SIDH-p610 SIDH-p751 SIDH-p434-compressed SIDH-p503-compressed SIDH-p610-compressed SIDH-p751-compressed SIKE-p434 SIKE-p503 SIKE-p610 SIKE-p751 SIKE-p434-compressed SIKE-p503-compressed SIKE-p610-compressed SIKE-p751-compressed
223+
BIKE-L1 BIKE-L3 BIKE-L5 Classic-McEliece-348864 Classic-McEliece-348864f Classic-McEliece-460896 Classic-McEliece-460896f Classic-McEliece-6688128 Classic-McEliece-6688128f Classic-McEliece-6960119 Classic-McEliece-6960119f Classic-McEliece-8192128 Classic-McEliece-8192128f HQC-128 HQC-192 HQC-256 Kyber512 Kyber768 Kyber1024 ML-KEM-512 ML-KEM-768 ML-KEM-1024 sntrup761 FrodoKEM-640-AES FrodoKEM-640-SHAKE FrodoKEM-976-AES FrodoKEM-976-SHAKE FrodoKEM-1344-AES FrodoKEM-1344-SHAKE
225224
226225
KEM Details:
227-
Name: Kyber512
228-
Version: https://github.com/pq-crystals/kyber/commit/74cad307858b61e434490c75f812cb9b9ef7279b
226+
Name: ML-KEM-512
227+
Version: FIPS203
229228
Claimed NIST level: 1
230229
Is IND-CCA: true
231230
Length public key (bytes): 800
@@ -234,17 +233,17 @@ KEM Details:
234233
Length shared secret (bytes): 32
235234
236235
Client public key:
237-
C8 58 3B 21 02 A0 4D B0 ... 95 57 A7 E9 42 C0 45 C4
236+
A8 37 25 CA 79 A5 55 42 ... AF 43 3A 54 6C 3C 34 30
238237
239238
It took 1 millisecs to generate the key pair.
240239
It took 0 millisecs to encapsulate the secret.
241240
It took 0 millisecs to decapsulate the secret.
242241
243242
Client shared secret:
244-
16 7F 9B 18 18 F9 F0 FE ... 70 F3 F6 4A C1 30 2C FF
243+
7D 3B BB C7 29 45 4B 2F ... 58 87 1D BB BD 35 9C 79
245244
246245
Server shared secret:
247-
16 7F 9B 18 18 F9 F0 FE ... 70 F3 F6 4A C1 30 2C FF
246+
7D 3B BB C7 29 45 4B 2F ... 58 87 1D BB BD 35 9C 79
248247
249248
Shared secrets coincide? true
250249
```
@@ -261,35 +260,35 @@ $ java -cp "target/liboqs-java.jar;examples\" SigExample
261260
##### Linux/MacOS
262261

263262
```
264-
$ javac -cp target/liboqs-java.jar examples/SigExample.java
265-
$ java -cp target/liboqs-java.jar:examples/ SigExample
263+
javac -cp target/liboqs-java.jar examples/SigExample.java
264+
java -cp target/liboqs-java.jar:examples/ SigExample
266265
```
267266

268267
```
269268
Supported signatures:
270-
Dilithium2 Dilithium3 Dilithium5 Dilithium2-AES Dilithium3-AES Dilithium5-AES Falcon-512 Falcon-1024 Rainbow-I-Classic Rainbow-I-Circumzenithal Rainbow-I-Compressed Rainbow-III-Classic Rainbow-III-Circumzenithal Rainbow-III-Compressed Rainbow-V-Classic Rainbow-V-Circumzenithal Rainbow-V-Compressed SPHINCS+-Haraka-128f-robust SPHINCS+-Haraka-128f-simple SPHINCS+-Haraka-128s-robust SPHINCS+-Haraka-128s-simple SPHINCS+-Haraka-192f-robust SPHINCS+-Haraka-192f-simple SPHINCS+-Haraka-192s-robust SPHINCS+-Haraka-192s-simple SPHINCS+-Haraka-256f-robust SPHINCS+-Haraka-256f-simple SPHINCS+-Haraka-256s-robust SPHINCS+-Haraka-256s-simple SPHINCS+-SHA256-128f-robust SPHINCS+-SHA256-128f-simple SPHINCS+-SHA256-128s-robust SPHINCS+-SHA256-128s-simple SPHINCS+-SHA256-192f-robust SPHINCS+-SHA256-192f-simple SPHINCS+-SHA256-192s-robust SPHINCS+-SHA256-192s-simple SPHINCS+-SHA256-256f-robust SPHINCS+-SHA256-256f-simple SPHINCS+-SHA256-256s-robust SPHINCS+-SHA256-256s-simple SPHINCS+-SHAKE256-128f-robust SPHINCS+-SHAKE256-128f-simple SPHINCS+-SHAKE256-128s-robust SPHINCS+-SHAKE256-128s-simple SPHINCS+-SHAKE256-192f-robust SPHINCS+-SHAKE256-192f-simple SPHINCS+-SHAKE256-192s-robust SPHINCS+-SHAKE256-192s-simple SPHINCS+-SHAKE256-256f-robust SPHINCS+-SHAKE256-256f-simple SPHINCS+-SHAKE256-256s-robust SPHINCS+-SHAKE256-256s-simple picnic_L1_FS picnic_L1_UR picnic_L1_full picnic_L3_FS picnic_L3_UR picnic_L3_full picnic_L5_FS picnic_L5_UR picnic_L5_full picnic3_L1 picnic3_L3 picnic3_L5
269+
Dilithium2 Dilithium3 Dilithium5 ML-DSA-44 ML-DSA-65 ML-DSA-87 Falcon-512 Falcon-1024 Falcon-padded-512 Falcon-padded-1024 SPHINCS+-SHA2-128f-simple SPHINCS+-SHA2-128s-simple SPHINCS+-SHA2-192f-simple SPHINCS+-SHA2-192s-simple SPHINCS+-SHA2-256f-simple SPHINCS+-SHA2-256s-simple SPHINCS+-SHAKE-128f-simple SPHINCS+-SHAKE-128s-simple SPHINCS+-SHAKE-192f-simple SPHINCS+-SHAKE-192s-simple SPHINCS+-SHAKE-256f-simple SPHINCS+-SHAKE-256s-simple MAYO-1 MAYO-2 MAYO-3 MAYO-5 cross-rsdp-128-balanced cross-rsdp-128-fast cross-rsdp-128-small cross-rsdp-192-balanced cross-rsdp-192-fast cross-rsdp-192-small cross-rsdp-256-balanced cross-rsdp-256-fast cross-rsdp-256-small cross-rsdpg-128-balanced cross-rsdpg-128-fast cross-rsdpg-128-small cross-rsdpg-192-balanced cross-rsdpg-192-fast cross-rsdpg-192-small cross-rsdpg-256-balanced cross-rsdpg-256-fast cross-rsdpg-256-small
271270
272271
Enabled signatures:
273-
Dilithium2 Dilithium3 Dilithium5 Dilithium2-AES Dilithium3-AES Dilithium5-AES Falcon-512 Falcon-1024 Rainbow-I-Classic Rainbow-I-Circumzenithal Rainbow-I-Compressed Rainbow-III-Classic Rainbow-III-Circumzenithal Rainbow-III-Compressed Rainbow-V-Classic Rainbow-V-Circumzenithal Rainbow-V-Compressed SPHINCS+-Haraka-128f-robust SPHINCS+-Haraka-128f-simple SPHINCS+-Haraka-128s-robust SPHINCS+-Haraka-128s-simple SPHINCS+-Haraka-192f-robust SPHINCS+-Haraka-192f-simple SPHINCS+-Haraka-192s-robust SPHINCS+-Haraka-192s-simple SPHINCS+-Haraka-256f-robust SPHINCS+-Haraka-256f-simple SPHINCS+-Haraka-256s-robust SPHINCS+-Haraka-256s-simple SPHINCS+-SHA256-128f-robust SPHINCS+-SHA256-128f-simple SPHINCS+-SHA256-128s-robust SPHINCS+-SHA256-128s-simple SPHINCS+-SHA256-192f-robust SPHINCS+-SHA256-192f-simple SPHINCS+-SHA256-192s-robust SPHINCS+-SHA256-192s-simple SPHINCS+-SHA256-256f-robust SPHINCS+-SHA256-256f-simple SPHINCS+-SHA256-256s-robust SPHINCS+-SHA256-256s-simple SPHINCS+-SHAKE256-128f-robust SPHINCS+-SHAKE256-128f-simple SPHINCS+-SHAKE256-128s-robust SPHINCS+-SHAKE256-128s-simple SPHINCS+-SHAKE256-192f-robust SPHINCS+-SHAKE256-192f-simple SPHINCS+-SHAKE256-192s-robust SPHINCS+-SHAKE256-192s-simple SPHINCS+-SHAKE256-256f-robust SPHINCS+-SHAKE256-256f-simple SPHINCS+-SHAKE256-256s-robust SPHINCS+-SHAKE256-256s-simple picnic_L1_FS picnic_L1_UR picnic_L1_full picnic_L3_FS picnic_L3_UR picnic_L3_full picnic_L5_FS picnic_L5_UR picnic_L5_full picnic3_L1 picnic3_L3 picnic3_L5
272+
Dilithium2 Dilithium3 Dilithium5 ML-DSA-44 ML-DSA-65 ML-DSA-87 Falcon-512 Falcon-1024 Falcon-padded-512 Falcon-padded-1024 SPHINCS+-SHA2-128f-simple SPHINCS+-SHA2-128s-simple SPHINCS+-SHA2-192f-simple SPHINCS+-SHA2-192s-simple SPHINCS+-SHA2-256f-simple SPHINCS+-SHA2-256s-simple SPHINCS+-SHAKE-128f-simple SPHINCS+-SHAKE-128s-simple SPHINCS+-SHAKE-192f-simple SPHINCS+-SHAKE-192s-simple SPHINCS+-SHAKE-256f-simple SPHINCS+-SHAKE-256s-simple MAYO-1 MAYO-2 MAYO-3 MAYO-5 cross-rsdp-128-balanced cross-rsdp-128-fast cross-rsdp-128-small cross-rsdp-192-balanced cross-rsdp-192-fast cross-rsdp-192-small cross-rsdp-256-balanced cross-rsdp-256-fast cross-rsdp-256-small cross-rsdpg-128-balanced cross-rsdpg-128-fast cross-rsdpg-128-small cross-rsdpg-192-balanced cross-rsdpg-192-fast cross-rsdpg-192-small cross-rsdpg-256-balanced cross-rsdpg-256-fast cross-rsdpg-256-small
274273
275274
Signature Details:
276-
Name: Dilithium2
277-
Version: https://github.com/pq-crystals/dilithium/commit/d9c885d3f2e11c05529eeeb7d70d808c972b8409
275+
Name: ML-DSA-44
276+
Version: FIPS204
278277
Claimed NIST level: 2
279278
Is IND-CCA: true
280279
Length public key (bytes): 1312
281-
Length secret key (bytes): 2528
280+
Length secret key (bytes): 2560
282281
Maximum length signature (bytes): 2420
283282
284283
Signer public key:
285-
0E 47 54 30 E7 47 6D E6 ... 82 6E 4C C3 87 AA 6E FD
284+
CB CB 70 FF 1E B3 BA 26 ... A7 CF 7C 70 89 A1 1A 40
286285
287-
It took 0 millisecs to generate the key pair.
286+
It took 1 millisecs to generate the key pair.
288287
It took 1 millisecs to sign the message.
289288
It took 0 millisecs to verify the signature.
290289
291290
Signature:
292-
0C 2E 2D E2 81 C5 DC 10 ... 00 00 00 00 03 13 29 3B
291+
ED 6F 67 B6 2E C9 31 FC ... 00 00 00 00 0F 21 2A 38
293292
294293
Valid signature? true
295294
```
@@ -305,14 +304,13 @@ $ java -cp "target/liboqs-java.jar;examples\" RandExample
305304

306305
##### Linux/MacOS
307306
```
308-
$ javac -cp target/liboqs-java.jar examples/RandExample.java
309-
$ java -cp target/liboqs-java.jar:examples/ RandExample
307+
javac -cp target/liboqs-java.jar examples/RandExample.java
308+
java -cp target/liboqs-java.jar:examples/ RandExample
310309
```
311310

312311
```
313-
NIST-KAT: BF E7 5C 34 F9 1C 54 44 30 CD B1 61 5B FF 3D 92 31 17 38 BD 71 61 0C 22 CD F7 B8 23 D9 7C 27 F3
314-
OpenSSL: 86 B6 46 9C 56 44 6B FB F8 B1 37 F0 86 4D 4D 74 0F FD 51 99 82 D6 89 02 40 B9 45 CF F9 3A 4D 70
315-
System (default): 37 55 6F 4F 03 53 BB 71 E8 70 C2 3D DF 85 69 57 30 CE FA 11 EF 50 8A F5 AE 25 35 6F 91 CF EC 1D
312+
OpenSSL: 19 0D 77 20 82 BA 59 69 38 32 3A 81 1B 50 6A A0 6F 81 14 35 06 14 9F 72 4F 6F D2 5F 68 E8 F7 40
313+
System (default): 81 2B 43 75 8A 22 63 21 28 D2 2D 1C 36 A1 19 19 22 AA E0 86 9A EE 6C A0 8C 52 E7 89 31 9C A3 6B
316314
```
317315

318316

@@ -352,10 +350,11 @@ System (default): 37 55 6F 4F 03 53 BB 71 E8 70 C2 3D DF 85 69 57 30 CE FA 11
352350
Exception in thread "main" java.lang.UnsatisfiedLinkError:
353351
./liboqs-java/build/liboqs-jni.so: liboqs.so.0: cannot open shared object file: No such file or directory
354352
```
355-
try setting the `LD_LIBRARY_PATH` environment variable with the installation location of the `liboqs` shared library, i.e.,
353+
On Linux, try setting the `LD_LIBRARY_PATH` environment variable with the installation location of the `liboqs` shared library, i.e.,
356354
```
357355
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
358356
```
357+
On macOS, the corresponding environment variable is `DYLD_LIBRARY_PATH`.
359358
360359
* If a hotspot "irrecoverable stack overflow" error is shown:
361360
```
@@ -380,6 +379,9 @@ Contributors to the liboqs-java wrapper include:
380379
381380
[KEM-overview]: ./images/KEM.png
382381
[DS-overview]: ./images/digital-signature.png
382+
<<<<<<< HEAD
383383
384384
[badge-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=svg
385-
[badge-circleci]: https://img.shields.io/circleci/build/github/open-quantum-safe/liboqs-java?logo=circleci
385+
[badge-circleci]: https://img.shields.io/circleci/build/github/open-quantum-safe/liboqs-java?logo=circleci
386+
=======
387+
>>>>>>> 1d7530e (Update README, examples, and CI before 0.2.0 release (#32))

examples/KEMExample.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public static void main(String[] args) {
1414
Common.print_list(KEMs.get_enabled_KEMs());
1515
System.out.println();
1616

17-
String kem_name = "ML-KEM-768";
17+
String kem_name = "ML-KEM-512";
1818
KeyEncapsulation client = new KeyEncapsulation(kem_name);
1919
client.print_details();
2020
System.out.println();

examples/SigExample.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public static void main(String[] args) {
1515

1616
byte[] message = "This is the message to sign".getBytes();
1717

18-
String sig_name = "Dilithium2";
18+
String sig_name = "ML-DSA-44";
1919
Signature signer = new Signature(sig_name);
2020
signer.print_details();
2121
System.out.println();

0 commit comments

Comments
 (0)