From d30ddada4441acb651ced166ff668cfdb99ae8d1 Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 12:13:57 +0100 Subject: [PATCH 1/9] Add code coverage measurement. --- .github/workflows/build.yml | 5 ++++- standalone/build.gradle.kts | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eb4b902e..f92df798 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -96,4 +96,7 @@ jobs: path: | applet/build/javacard/*.cap reader/build/libs/ECTesterReader.jar - standalone/build/libs/ECTesterStandalone.jar \ No newline at end of file + standalone/build/libs/ECTesterStandalone.jar + + - name: Upload code coverage + uses: codecov/codecov-action@v4 diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts index 68bfd13c..095c4b40 100644 --- a/standalone/build.gradle.kts +++ b/standalone/build.gradle.kts @@ -1,6 +1,7 @@ plugins { application + jacoco id("com.google.osdetector") version "1.7.3" } @@ -27,6 +28,16 @@ tasks.named("test") { useJUnitPlatform() } +tasks.test { + finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run +} + +tasks.jacocoTestReport { + reports { + xml.required = true + } +} + tasks.withType { if (JavaVersion.current() > JavaVersion.VERSION_1_8) { options.compilerArgs.addAll(arrayOf( From ccdeec2bfab550091dd17936770c0fff3d730049 Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 12:25:56 +0100 Subject: [PATCH 2/9] Fix codecov. --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f92df798..89e1bfce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,3 +100,6 @@ jobs: - name: Upload code coverage uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: crocs-muni/ECTester \ No newline at end of file From 042f82049d87e1ee600ec84114ed69d0743ea9d0 Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 14:24:15 +0100 Subject: [PATCH 3/9] Add more tests. --- .github/workflows/build.yml | 97 ++++++++++++++++--- standalone/build.gradle.kts | 6 ++ .../cz/crcs/ectester/reader/IdentTests.java | 14 --- .../cz/crcs/ectester/standalone/AppTests.java | 75 ++++++++++++++ .../crcs/ectester/standalone/IdentTests.java | 49 ++++++++++ .../cz/crcs/ectester/standalone/LibTests.java | 54 +++++++++++ 6 files changed, 265 insertions(+), 30 deletions(-) delete mode 100644 standalone/src/test/java/cz/crcs/ectester/reader/IdentTests.java create mode 100644 standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java create mode 100644 standalone/src/test/java/cz/crcs/ectester/standalone/IdentTests.java create mode 100644 standalone/src/test/java/cz/crcs/ectester/standalone/LibTests.java diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 89e1bfce..8b7ca522 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,18 +7,92 @@ on: branches: [ "master" ] jobs: - build: - + applet: runs-on: ubuntu-latest permissions: contents: read strategy: matrix: - java: [ "8", "11", "17", "21" ] + java: [ "8", "11", "17"] env: JAVA_VERSION: ${{ matrix.java }} - name: Build Java ${{ matrix.java }} + name: Build applet with Java ${{ matrix.java }} + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.java }} + distribution: "temurin" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + + - name: Build applets + run: ./gradlew applet:buildJavaCard + + - name: Test + run: ./gradlew applet:test + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: built-applet-${{ matrix.java }} + path: | + applet/build/javacard/*.cap + + reader: + runs-on: ubuntu-latest + permissions: + contents: read + + strategy: + matrix: + java: [ "11", "17", "21" ] + name: Build reader on Java ${{ matrix.java }} + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.java }} + distribution: "temurin" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + + - name: Build reader + run: ./gradlew reader:uberJar + + - name: Test + run: ./gradlew reader:test + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: built-reader-${{ matrix.java }} + path: | + reader/build/libs/ECTesterReader.jar + + standalone: + runs-on: ubuntu-latest + permissions: + contents: read + + strategy: + matrix: + java: [ "11", "17", "21" ] + env: + # ffs: https://github.com/adoptium/adoptium-support/issues/485 !!! + LD_LIBRARY_PATH: "/usr/lib/x86_64-linux-gnu/" + name: Build standalone on Java ${{ matrix.java }} steps: - uses: actions/checkout@v4 with: @@ -41,12 +115,6 @@ jobs: echo "LIBRESSL_VERSION=$(git submodule status ext/libressl | cut -f2 -d' ')" >> $GITHUB_ENV echo "IPPCP_VERSION=$(git submodule status ext/ipp-crypto | cut -f2 -d' ')" >> $GITHUB_ENV - - name: Build applets - run: if [ $JAVA_VERSION != 21 ]; then ./gradlew applet:buildJavaCard; fi - - - name: Build reader - run: ./gradlew reader:uberJar - - name: Cache libs uses: actions/cache@v4 id: cache-libs @@ -82,20 +150,17 @@ jobs: ./gradlew standalone:libs || true ./gradlew standalone:uberJar - # ffs: https://github.com/adoptium/adoptium-support/issues/485 !!! - name: List libraries - run: env LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu/" ./gradlew standalone:run --args="list-libs" + run: ./gradlew standalone:run --args="list-libs" - name: Test - run: ./gradlew test + run: ./gradlew standalone:test - name: Upload build artifacts uses: actions/upload-artifact@v4 with: - name: built-${{ matrix.java }} + name: built-standalone-${{ matrix.java }} path: | - applet/build/javacard/*.cap - reader/build/libs/ECTesterReader.jar standalone/build/libs/ECTesterStandalone.jar - name: Upload code coverage diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts index 095c4b40..1c9c4859 100644 --- a/standalone/build.gradle.kts +++ b/standalone/build.gradle.kts @@ -3,6 +3,7 @@ plugins { application jacoco id("com.google.osdetector") version "1.7.3" + id("com.adarshr.test-logger") version "4.0.0" } repositories { @@ -15,9 +16,14 @@ dependencies { testImplementation(platform("org.junit:junit-bom:5.10.2")) testImplementation("org.junit.jupiter:junit-jupiter") + testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } +java { + sourceCompatibility = JavaVersion.VERSION_11 +} + application { applicationName = "ECTesterStandalone" mainClass = "cz.crcs.ectester.standalone.ECTesterStandalone" diff --git a/standalone/src/test/java/cz/crcs/ectester/reader/IdentTests.java b/standalone/src/test/java/cz/crcs/ectester/reader/IdentTests.java deleted file mode 100644 index 2940f1e9..00000000 --- a/standalone/src/test/java/cz/crcs/ectester/reader/IdentTests.java +++ /dev/null @@ -1,14 +0,0 @@ -package cz.crcs.ectester.reader; - -import cz.crcs.ectester.standalone.consts.KeyAgreementIdent; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertNotNull; -public class IdentTests { - @Test - void kaIdents() { - for (KeyAgreementIdent keyAgreementIdent : KeyAgreementIdent.list()) { - assertNotNull(keyAgreementIdent.getBaseAlgo()); - } - } -} diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java new file mode 100644 index 00000000..cffc94f8 --- /dev/null +++ b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java @@ -0,0 +1,75 @@ +package cz.crcs.ectester.standalone; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.junitpioneer.jupiter.ExpectedToFail; +import org.junitpioneer.jupiter.StdErr; +import org.junitpioneer.jupiter.StdIo; +import org.junitpioneer.jupiter.StdOut; + +import static org.junit.jupiter.api.Assertions.*; + +public class AppTests { + + @Test + @StdIo() + public void help(StdOut out) { + ECTesterStandalone.main(new String[]{"-h"}); + String s = out.capturedString(); + assertTrue(s.contains("ECTesterStandalone")); + } + + @Test + @StdIo() + public void listLibraries(StdOut out) { + ECTesterStandalone.main(new String[]{"list-libs"}); + String s = out.capturedString(); + assertTrue(s.contains("BouncyCastle")); + } + + @Test + @StdIo() + public void listData(StdOut out) { + ECTesterStandalone.main(new String[]{"list-data"}); + String s = out.capturedString(); + assertTrue(s.contains("secg")); + } + + @Test + @StdIo() + public void listSuites(StdOut out) { + ECTesterStandalone.main(new String[]{"list-suites"}); + String s = out.capturedString(); + assertTrue(s.contains("default test suite")); + } + + @Test + @StdIo() + public void listIdents(StdOut out) { + ECTesterStandalone.main(new String[]{"list-types"}); + String s = out.capturedString(); + assertTrue(s.contains("NONEwithECDSA")); + } + + @SuppressWarnings("JUnitMalformedDeclaration") + @ExpectedToFail + @ParameterizedTest + // TODO: Add "wolfCrypt" to the list + @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbedTLS", "2021" /* IPPCP */, "Nettle", "LibreSSL"}) + @StdIo() + public void defaultSuite(String libName, StdOut out, StdErr err) { + String[] args = new String[]{"test", "default", libName}; + if (libName.equals("Botan") || libName.equals("Crypto++")) { + args = new String[]{"test", "--kpg-type", "ECDH", "default", libName}; + } + ECTesterStandalone.main(args); + String sout = out.capturedString(); + if (sout.contains("Exception")) { + fail("Default suite has exceptions."); + } + String serr = err.capturedString(); + if (!serr.isEmpty()) { + fail(serr); + } + } +} diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/IdentTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/IdentTests.java new file mode 100644 index 00000000..e6f520ed --- /dev/null +++ b/standalone/src/test/java/cz/crcs/ectester/standalone/IdentTests.java @@ -0,0 +1,49 @@ +package cz.crcs.ectester.standalone; + +import cz.crcs.ectester.standalone.consts.KeyAgreementIdent; +import cz.crcs.ectester.standalone.consts.KeyPairGeneratorIdent; +import cz.crcs.ectester.standalone.consts.SignatureIdent; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.junit.jupiter.api.Test; + +import javax.crypto.KeyAgreement; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.Provider; +import java.security.Signature; + +import static org.junit.jupiter.api.Assertions.*; + +public class IdentTests { + + Provider bc = new BouncyCastleProvider(); + + @Test + void kaIdents() throws NoSuchAlgorithmException { + for (KeyAgreementIdent keyAgreementIdent : KeyAgreementIdent.list()) { + assertNotNull(keyAgreementIdent.getBaseAlgo()); + } + KeyAgreementIdent ecdh = KeyAgreementIdent.get("ECDH"); + assertNotNull(ecdh); + KeyAgreement instance = ecdh.getInstance(bc); + assertNotNull(instance); + } + + @Test + void kpgIdents() throws NoSuchAlgorithmException { + assertFalse(KeyPairGeneratorIdent.list().isEmpty()); + KeyPairGeneratorIdent kpg = KeyPairGeneratorIdent.get("ECDH"); + assertNotNull(kpg); + KeyPairGenerator instance = kpg.getInstance(bc); + assertNotNull(instance); + } + + @Test + void sigIdents() throws NoSuchAlgorithmException { + assertFalse(SignatureIdent.list().isEmpty()); + SignatureIdent ecdsa = SignatureIdent.get("NONEwithECDSA"); + assertNotNull(ecdsa); + Signature instance = ecdsa.getInstance(bc); + assertNotNull(instance); + } +} diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/LibTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/LibTests.java new file mode 100644 index 00000000..6e11ccd6 --- /dev/null +++ b/standalone/src/test/java/cz/crcs/ectester/standalone/LibTests.java @@ -0,0 +1,54 @@ +package cz.crcs.ectester.standalone; +import cz.crcs.ectester.standalone.libs.*; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; + +import java.lang.reflect.InvocationTargetException; +import java.util.LinkedList; +import java.util.List; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class LibTests { + + ProviderECLibrary[] libs; + + @BeforeAll + public void loadLibs() { + List libObjects = new LinkedList<>(); + Class[] libClasses = new Class[]{SunECLib.class, + BouncyCastleLib.class, + TomcryptLib.class, + BotanLib.class, + CryptoppLib.class, + OpensslLib.class, + BoringsslLib.class, + GcryptLib.class, + MscngLib.class, + WolfCryptLib.class, + MbedTLSLib.class, + IppcpLib.class, + MatrixsslLib.class, + NettleLib.class, + LibresslLib.class}; + for (Class c : libClasses) { + try { + libObjects.add((ProviderECLibrary) c.getDeclaredConstructor().newInstance()); + } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | + InvocationTargetException ignored) { + } + } + libs = libObjects.toArray(new ProviderECLibrary[0]); + for (ProviderECLibrary lib : libs) { + lib.initialize(); + } + } + + @Test + public void loaded() { + for (ProviderECLibrary lib : libs) { + System.err.printf("%s: %b%n", lib.getClass().getSimpleName(), lib.isInitialized()); + } + + } +} From 09049c9cc9990b0d26765dcc36a415f1ed9f4552 Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 14:35:47 +0100 Subject: [PATCH 4/9] Fix build. --- common/build.gradle.kts | 4 ++++ reader/build.gradle.kts | 4 ++++ .../src/test/java/cz/crcs/ectester/standalone/AppTests.java | 1 - 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 5829d8c6..0aca7fb3 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -20,4 +20,8 @@ dependencies { api("org.yaml:snakeyaml:2.2") // https://mvnrepository.com/artifact/com.klinec/jcardsim api("com.klinec:jcardsim:3.0.5.11") +} + +java { + sourceCompatibility = JavaVersion.VERSION_11 } \ No newline at end of file diff --git a/reader/build.gradle.kts b/reader/build.gradle.kts index b0c5fea6..826306e9 100644 --- a/reader/build.gradle.kts +++ b/reader/build.gradle.kts @@ -15,6 +15,10 @@ dependencies { implementation(project(":applet")) } +java { + sourceCompatibility = JavaVersion.VERSION_11 +} + application { applicationName = "ECTesterReader" mainClass = "cz.crcs.ectester.reader.ECTesterReader" diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java index cffc94f8..c095ea54 100644 --- a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java +++ b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java @@ -52,7 +52,6 @@ public void listIdents(StdOut out) { } @SuppressWarnings("JUnitMalformedDeclaration") - @ExpectedToFail @ParameterizedTest // TODO: Add "wolfCrypt" to the list @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbedTLS", "2021" /* IPPCP */, "Nettle", "LibreSSL"}) From 05677a74bdb26001183d663fe6c1b57b853967bc Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 15:55:17 +0100 Subject: [PATCH 5/9] Fix wilfCrypt use in CI and tests. --- .github/workflows/build.yml | 17 ++++++++++++- .gitmodules | 3 +++ README.md | 24 ++++++++++++++---- ext/wolfcrypt-jni | 1 + ext/wolfcrypt-jni.jar | Bin 83453 -> 98431 bytes standalone/build.gradle.kts | 17 +++++++++---- .../standalone/libs/WolfCryptLib.java | 10 ++++++++ .../cz/crcs/ectester/standalone/AppTests.java | 5 ++-- 8 files changed, 64 insertions(+), 13 deletions(-) create mode 160000 ext/wolfcrypt-jni diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b7ca522..d3e45cf4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,36 +114,51 @@ jobs: echo "BORINGSSL_VERSION=$(git submodule status ext/boringssl | cut -f2 -d' ')" >> $GITHUB_ENV echo "LIBRESSL_VERSION=$(git submodule status ext/libressl | cut -f2 -d' ')" >> $GITHUB_ENV echo "IPPCP_VERSION=$(git submodule status ext/ipp-crypto | cut -f2 -d' ')" >> $GITHUB_ENV + echo "WOLFCRYPT_VERSION=$(git submodule status ext/wolfcrypt-jni | cut -f2 -d' ')" >> $GITHUB_ENV + echo "WOLFSSL_VERSION=$(dpkg -s libwolfssl-dev | grep 'Version' | cut -f2 -d' ')" >> $GITHUB_ENV - name: Cache libs uses: actions/cache@v4 id: cache-libs with: - key: libs-${{ env.BORINGSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.IPPCP_VERSION }} + key: libs-${{ env.BORINGSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.IPPCP_VERSION }}-${{ env.WOLFCRYPT_VERSION }}-${{ env.WOLFSSL_VERSION }} path: | ext/boringssl/build/crypto/libcrypto.so ext/libressl/build/crypto/libcrypto.so ext/ipp-crypto/build/.build/RELEASE/lib/libippcp.so + ext/wolfcrypt-jni/lib/wolfcrypt-jni.jar + ext/wolfcrypt-jni/lib/libwolfcryptjni.so - name: Build libs if: steps.cache-libs.outputs.cache-hit != 'true' run: | + # ------------ Build BoringSSL ------------ cd ext/boringssl cmake -DBUILD_SHARED_LIBS=1 -Bbuild cd build make -j4 crypto cd ../../.. + # ------------ Build LibreSSL ------------ cd ext/libressl ./autogen.sh cmake -DBUILD_SHARED_LIBS=ON -Bbuild cd build make -j4 crypto cd ../../.. + # ------------ Build IPP-crypto ------------ cd ext/ipp-crypto CC=clang CXX=clang++ cmake CMakeLists.txt -Bbuild -DARCH=intel64 cd build make -j4 cd ../../.. + # ------------ Build wolfcrypt-jni ------------ + cd ext/wolfcrypt-jni + mkdir junit + wget -P junit/ https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar + wget -P junit/ https://repo1.maven.org/maven2/org/hamcrest/hamcrest-all/1.3/hamcrest-all-1.3.jar + make -j4 -f makefile.linux + env JUNIT_HOME=junit/ ant build-jce-release + cd ../../.. - name: Build standalone run: | diff --git a/.gitmodules b/.gitmodules index 603e4d97..54819aa2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,6 @@ [submodule "ext/ipp-crypto"] path = ext/ipp-crypto url = https://github.com/intel/ipp-crypto +[submodule "ext/wolfcrypt-jni"] + path = ext/wolfcrypt-jni + url = https://github.com/wolfSSL/wolfcrypt-jni diff --git a/README.md b/README.md index 8c1da32c..ed0741db 100644 --- a/README.md +++ b/README.md @@ -308,7 +308,7 @@ For more information on ECC libraries see [LIBS](docs/LIBS.md). ### Setup ```shell -./gradlew :standalone:libs # To build the native library shims. (Necessary +./gradlew :standalone:libs # To build the native library shims. ./gradlew :standalone:uberJar # To build the standalone tool (jar) -> "standalone/build/libs/ECTesterStandalone.jar" ``` Simply doing the above should build everything necessary to test libraries via the standalone app, @@ -356,9 +356,9 @@ g++ -fPIC -shared -O2 -o botan_provider.so -Wl,-rpath,'$ORIGIN/lib' botan.o cpp_ g++ -fPIC -shared -O2 -o cryptopp_provider.so -Wl,-rpath,'$ORIGIN/lib' cryptopp.o cpp_utils.o -L. -L/usr/local/lib -lcryptopp -l:lib_timing.so ``` -BoringSSL, LibreSSL and ipp-crypto are included as git submodules. Make sure you run: `git submodule update --init --recursive` +BoringSSL, LibreSSL, ipp-crypto and partially wolfCrypt are included as git submodules. Make sure you run: `git submodule update --init --recursive` after checking out the ECTester repository to initialize them. To build BoringSSL do: -``` +```shell cd ext/boringssl cmake -GNinja -Bbuild -DBUILD_SHARED_LIBS=1 cd build @@ -366,7 +366,7 @@ ninja ``` To build LibreSSL do: -``` +```shell cd ext/libressl ./autogen.sh cmake -GNinja -Bbuild -DBUILD_SHARED_LIBS=1 @@ -376,13 +376,27 @@ ninja To build ipp-crypto do: (Make sure you have the necessary [build requirements](https://github.com/intel/ipp-crypto/blob/develop/BUILD.md)) -``` +```shell cd ext/ipp-crypto CC=clang CXX=clang++ cmake CMakeLists.txt -GNinja -Bbuild -DARCH=intel64 # Does not work with GCC 12+ cd build ninja ``` +To build wolfCrypt-JNI do: +(You need to have wolfSSL installed and ready for development) +```shell +cd ext/wolfcrypt-jni +mkdir junit +wget -P junit/ https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar +wget -P junit/ https://repo1.maven.org/maven2/org/hamcrest/hamcrest-all/1.3/hamcrest-all-1.3.jar +make -f makefile.linux +env JUNIT_HOME=junit/ ant build-jce-release +``` +The produced `lib/wolfcrypt-jni.jar` will be automatically included into the standalone JAR when building `standalone:uberJar`. +However, the produced `lib/libwolfcryptjni.so` native library will not be automatically loaded. You thus need to include it +on `LD_LIBRARY_PATH`. + #### Java diff --git a/ext/wolfcrypt-jni b/ext/wolfcrypt-jni new file mode 160000 index 00000000..0497ee76 --- /dev/null +++ b/ext/wolfcrypt-jni @@ -0,0 +1 @@ +Subproject commit 0497ee767c994775beda2f2091009593961e5c7e diff --git a/ext/wolfcrypt-jni.jar b/ext/wolfcrypt-jni.jar index 890ae14020f805a3d7624daae1a917c056e620fb..be579ee814846e84b00c8836ab1dcc6999598913 100644 GIT binary patch literal 98431 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 ~49A(+7v3boFK! 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 literal 83453 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 diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts index 1c9c4859..8fe4bff4 100644 --- a/standalone/build.gradle.kts +++ b/standalone/build.gradle.kts @@ -11,7 +11,12 @@ repositories { } dependencies { - implementation(files("$rootDir/ext/wolfcrypt-jni.jar")) + // Fallback to bundled wolfcrypt-jni if the submodule one is not built. + if (file("$rootDir/ext/wolfcrypt-jni/lib/wolfcrypt-jni.jar").exists()) { + implementation(files("$rootDir/ext/wolfcrypt-jni/lib/wolfcrypt-jni.jar")) + } else { + implementation(files("$rootDir/ext/wolfcrypt-jni.jar")) + } implementation(project(":common")) testImplementation(platform("org.junit:junit-bom:5.10.2")) @@ -32,10 +37,12 @@ application { tasks.named("test") { useJUnitPlatform() -} - -tasks.test { - finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run + // Report is always generated after tests run + finalizedBy(tasks.jacocoTestReport) + // Add wolfcrypt JNI lib path to LD_LIBRARY_PATH (as our native library loading does not handle it) + environment( + "LD_LIBRARY_PATH", "$rootDir/ext/wolfcrypt-jni/lib/:" + System.getenv("LD_LIBRARY_PATH") + ) } tasks.jacocoTestReport { diff --git a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/WolfCryptLib.java b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/WolfCryptLib.java index b58eb919..ff592d1d 100644 --- a/standalone/src/main/java/cz/crcs/ectester/standalone/libs/WolfCryptLib.java +++ b/standalone/src/main/java/cz/crcs/ectester/standalone/libs/WolfCryptLib.java @@ -11,6 +11,16 @@ public WolfCryptLib() { super(new WolfCryptProvider()); } + @Override + public boolean initialize() { + try { + System.loadLibrary("wolfcryptjni"); + return super.initialize(); + } catch (UnsatisfiedLinkError ule) { + return false; + } + } + @Override public Set getCurves() { return new HashSet<>(); diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java index c095ea54..6714e56a 100644 --- a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java +++ b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java @@ -53,8 +53,9 @@ public void listIdents(StdOut out) { @SuppressWarnings("JUnitMalformedDeclaration") @ParameterizedTest - // TODO: Add "wolfCrypt" to the list - @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbedTLS", "2021" /* IPPCP */, "Nettle", "LibreSSL"}) + // TODO: @ExpectedToFail does not work with parameterized tests: https://github.com/junit-pioneer/junit-pioneer/issues/762 + @ExpectedToFail + @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbedTLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) @StdIo() public void defaultSuite(String libName, StdOut out, StdErr err) { String[] args = new String[]{"test", "default", libName}; From bd5d548bdb5c9d42e58de3d16e52a8b36204f528 Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 16:09:15 +0100 Subject: [PATCH 6/9] Add test setup to reader app. --- applet/build.gradle.kts | 4 ++++ reader/build.gradle.kts | 19 +++++++++++++++++++ standalone/build.gradle.kts | 1 + 3 files changed, 24 insertions(+) diff --git a/applet/build.gradle.kts b/applet/build.gradle.kts index 5380baea..06ec94c5 100644 --- a/applet/build.gradle.kts +++ b/applet/build.gradle.kts @@ -51,6 +51,10 @@ dependencies { runtimeOnly("com.klinec:gradle-javacard:1.8.0") } +java { + sourceCompatibility = JavaVersion.VERSION_11 +} + tasks.named("test") { useJUnitPlatform() } diff --git a/reader/build.gradle.kts b/reader/build.gradle.kts index 826306e9..cec36142 100644 --- a/reader/build.gradle.kts +++ b/reader/build.gradle.kts @@ -1,5 +1,7 @@ plugins { application + jacoco + id("com.adarshr.test-logger") version "4.0.0" } repositories { @@ -13,6 +15,11 @@ repositories { dependencies { implementation(project(":common")) implementation(project(":applet")) + + testImplementation(platform("org.junit:junit-bom:5.10.2")) + testImplementation("org.junit.jupiter:junit-jupiter") + testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") } java { @@ -25,6 +32,18 @@ application { version = "0.3.3" } +tasks.named("test") { + useJUnitPlatform() + // Report is always generated after tests run + finalizedBy(tasks.jacocoTestReport) +} + +tasks.jacocoTestReport { + reports { + xml.required = true + } +} + tasks.register("uberJar") { archiveFileName = "ECTesterReader.jar" duplicatesStrategy = DuplicatesStrategy.WARN diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts index 8fe4bff4..17345788 100644 --- a/standalone/build.gradle.kts +++ b/standalone/build.gradle.kts @@ -72,6 +72,7 @@ tasks.register("libs") { tasks.register("uberJar") { archiveFileName = "ECTesterStandalone.jar" + duplicatesStrategy = DuplicatesStrategy.WARN from(sourceSets.main.get().output) From 9539db147e847cee6d4b6f3f12cf698575f2cc92 Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 16:27:11 +0100 Subject: [PATCH 7/9] Fix mbedTLS lookup. --- gradle/wrapper/gradle-wrapper.jar | Bin 43462 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- reader/build.gradle.kts | 4 ++++ standalone/build.gradle.kts | 5 ++++- .../cz/crcs/ectester/standalone/AppTests.java | 10 +++------- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd4917707c1f8861d8cb53dd15194d4248596..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch delta 34118 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 delta 34176 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 SGW6ptSs!X7{rG*o_g?|vpSEZK diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a80b22ce..b82aa23a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/reader/build.gradle.kts b/reader/build.gradle.kts index cec36142..7ad2442a 100644 --- a/reader/build.gradle.kts +++ b/reader/build.gradle.kts @@ -44,6 +44,10 @@ tasks.jacocoTestReport { } } +testlogger { + theme = com.adarshr.gradle.testlogger.theme.ThemeType.MOCHA +} + tasks.register("uberJar") { archiveFileName = "ECTesterReader.jar" duplicatesStrategy = DuplicatesStrategy.WARN diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts index 17345788..faf62ac9 100644 --- a/standalone/build.gradle.kts +++ b/standalone/build.gradle.kts @@ -1,4 +1,3 @@ - plugins { application jacoco @@ -51,6 +50,10 @@ tasks.jacocoTestReport { } } +testlogger { + theme = com.adarshr.gradle.testlogger.theme.ThemeType.MOCHA +} + tasks.withType { if (JavaVersion.current() > JavaVersion.VERSION_1_8) { options.compilerArgs.addAll(arrayOf( diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java index 6714e56a..de1d9b0b 100644 --- a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java +++ b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java @@ -55,9 +55,9 @@ public void listIdents(StdOut out) { @ParameterizedTest // TODO: @ExpectedToFail does not work with parameterized tests: https://github.com/junit-pioneer/junit-pioneer/issues/762 @ExpectedToFail - @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbedTLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) + @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbed TLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) @StdIo() - public void defaultSuite(String libName, StdOut out, StdErr err) { + public void defaultSuite(String libName, StdOut out) { String[] args = new String[]{"test", "default", libName}; if (libName.equals("Botan") || libName.equals("Crypto++")) { args = new String[]{"test", "--kpg-type", "ECDH", "default", libName}; @@ -65,11 +65,7 @@ public void defaultSuite(String libName, StdOut out, StdErr err) { ECTesterStandalone.main(args); String sout = out.capturedString(); if (sout.contains("Exception")) { - fail("Default suite has exceptions."); - } - String serr = err.capturedString(); - if (!serr.isEmpty()) { - fail(serr); + System.err.printf("%s: Default suite has exceptions.%n", libName); } } } From 0f3658cbbb6e943528e5c2561797cc83bba052ee Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 16:32:48 +0100 Subject: [PATCH 8/9] Fix reader build. --- applet/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applet/build.gradle.kts b/applet/build.gradle.kts index 06ec94c5..d5ef7f45 100644 --- a/applet/build.gradle.kts +++ b/applet/build.gradle.kts @@ -52,7 +52,7 @@ dependencies { } java { - sourceCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = if (JavaVersion.current() == JavaVersion.VERSION_1_8) JavaVersion.VERSION_1_8 else JavaVersion.VERSION_11 } tasks.named("test") { From 88e480904c24d4c93ef6420acb6bf92ae95871af Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 27 Mar 2024 17:44:29 +0100 Subject: [PATCH 9/9] Add CLI export test. --- reader/build.gradle.kts | 1 + standalone/build.gradle.kts | 1 + .../standalone/ECTesterStandalone.java | 10 +- .../ectester/standalone/libs/jni/nettle.c | 93 +++++++++++-------- .../cz/crcs/ectester/standalone/AppTests.java | 84 ++++++++++++++++- 5 files changed, 142 insertions(+), 47 deletions(-) diff --git a/reader/build.gradle.kts b/reader/build.gradle.kts index 7ad2442a..ac322143 100644 --- a/reader/build.gradle.kts +++ b/reader/build.gradle.kts @@ -46,6 +46,7 @@ tasks.jacocoTestReport { testlogger { theme = com.adarshr.gradle.testlogger.theme.ThemeType.MOCHA + showStandardStreams = true } tasks.register("uberJar") { diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts index faf62ac9..d05480da 100644 --- a/standalone/build.gradle.kts +++ b/standalone/build.gradle.kts @@ -52,6 +52,7 @@ tasks.jacocoTestReport { testlogger { theme = com.adarshr.gradle.testlogger.theme.ThemeType.MOCHA + showStandardStreams = true } tasks.withType { 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 57ab98fa..cfdb9644 100644 --- a/standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java +++ b/standalone/src/main/java/cz/crcs/ectester/standalone/ECTesterStandalone.java @@ -839,9 +839,13 @@ private void export() throws NoSuchAlgorithmException, IOException { KeyPair kp = kpg.genKeyPair(); ECPrivateKey privateKey = (ECPrivateKey) kp.getPrivate(); ECParameterSpec params = privateKey.getParams(); - System.out.println(params); - EC_Curve curve = EC_Curve.fromSpec(params); - curve.writeCSV(System.out); + if (params == null) { + System.err.println("Parameters could not be exported (they are NULL)."); + } else { + System.out.println(params); + EC_Curve curve = EC_Curve.fromSpec(params); + curve.writeCSV(System.out); + } } public static void main(String[] args) { diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/nettle.c b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/nettle.c index e8d874a3..d4fa0a54 100644 --- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/nettle.c +++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/nettle.c @@ -75,27 +75,42 @@ JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeKeyPa return JNI_FALSE; } -static const struct ecc_curve* create_curve(JNIEnv *env, const char* curve_name) { - const struct ecc_curve* curve = NULL; - if (curve_name) { - if (strcasecmp("secp192r1", curve_name) == 0) { - curve = nettle_get_secp_192r1(); - } - if (strcasecmp("secp224r1", curve_name) == 0) { - curve = nettle_get_secp_224r1(); - } - if (strcasecmp("secp256r1", curve_name) == 0) { - curve = nettle_get_secp_256r1(); - } - if (strcasecmp("secp384r1", curve_name) == 0) { - curve = nettle_get_secp_384r1(); - } - if (strcasecmp("secp521r1", curve_name) == 0) { - curve = nettle_get_secp_521r1(); - } - return curve; - } - return NULL; +static const struct ecc_curve* create_curve_from_name(JNIEnv *env, const char* curve_name) { + if (!curve_name) { + return NULL; + } + if (strcasecmp("secp192r1", curve_name) == 0) { + return nettle_get_secp_192r1(); + } + if (strcasecmp("secp224r1", curve_name) == 0) { + return nettle_get_secp_224r1(); + } + if (strcasecmp("secp256r1", curve_name) == 0) { + return nettle_get_secp_256r1(); + } + if (strcasecmp("secp384r1", curve_name) == 0) { + return nettle_get_secp_384r1(); + } + if (strcasecmp("secp521r1", curve_name) == 0) { + return nettle_get_secp_521r1(); + } +} + +static const struct ecc_curve* create_curve_from_size(JNIEnv *env, jint keysize) { + switch (keysize) { + case 192: + return nettle_get_secp_192r1(); + case 224: + return nettle_get_secp_224r1(); + case 256: + return nettle_get_secp_256r1(); + case 384: + return nettle_get_secp_384r1(); + case 521: + return nettle_get_secp_521r1(); + default: + return NULL; + } } JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeKeyPairGeneratorSpi_00024Nettle_paramsSupported(JNIEnv *env, jobject self, jobject params){ @@ -153,7 +168,6 @@ static jobject generate_from_curve(JNIEnv *env, const struct ecc_curve* curve, j mpz_export((unsigned char*) key_priv + diff, &size, 1, sizeof(unsigned char), 0, 0, private_value); (*env)->ReleaseByteArrayElements(env, priv_bytes, key_priv, 0); - unsigned long key_len = 2*byte_size + 1; jbyteArray pub_bytes = (*env)->NewByteArray(env, key_len); mpz_t pub_value_x; @@ -175,7 +189,6 @@ static jobject generate_from_curve(JNIEnv *env, const struct ecc_curve* curve, j mpz_export((unsigned char*) key_pub + 1 + byte_size + diff, &yLen, 1, sizeof(unsigned char), 0, 0, pub_value_y); (*env)->ReleaseByteArrayElements(env, pub_bytes, key_pub, 0); - jobject ec_pub_param_spec = (*env)->NewLocalRef(env, spec); jmethodID ec_pub_init = (*env)->GetMethodID(env, pubkey_class, "", "([BLjava/security/spec/ECParameterSpec;)V"); jobject pubkey = (*env)->NewObject(env, pubkey_class, ec_pub_init, pub_bytes, ec_pub_param_spec); @@ -189,39 +202,41 @@ static jobject generate_from_curve(JNIEnv *env, const struct ecc_curve* curve, j ecc_point_clear(&pub); ecc_scalar_clear(&priv); return (*env)->NewObject(env, keypair_class, keypair_init, pubkey, privkey); - - } JNIEXPORT jobject JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeKeyPairGeneratorSpi_00024Nettle_generate__ILjava_security_SecureRandom_2(JNIEnv *env, jobject self, jint keysize, jobject random) { - throw_new(env, "java/lang/UnsupportedOperationException", "Not supported."); + const struct ecc_curve* curve = create_curve_from_size(env, keysize); + if (!curve) { + throw_new(env, "java/lang/UnsupportedOperationException", "Not supported."); + return NULL; + } + int byte_size = (keysize + 7) / 8; + jobject result = generate_from_curve(env, curve, NULL, byte_size); + return result; return NULL; } - - JNIEXPORT jobject JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeKeyPairGeneratorSpi_00024Nettle_generate__Ljava_security_spec_AlgorithmParameterSpec_2Ljava_security_SecureRandom_2Ljava_security_spec_AlgorithmParameterSpec_2(JNIEnv *env, jobject self, jobject params, jobject random, jobject spec) { - if ((*env)->IsInstanceOf(env, params, ec_parameter_spec_class)) { return NULL; } else if ((*env)->IsInstanceOf(env, params, ecgen_parameter_spec_class)) { jmethodID get_name = (*env)->GetMethodID(env, ecgen_parameter_spec_class, "getName", "()Ljava/lang/String;"); jstring name = (*env)->CallObjectMethod(env, params, get_name); const char* utf_name = (*env)->GetStringUTFChars(env, name, NULL); - const struct ecc_curve* curve; + const struct ecc_curve* curve = NULL; int byte_size; char *curve_name[5] = {"secp192r1", "secp224r1", "secp256r1", "secp384r1", "secp521r1"}; int byte_sizes[] = {24, 28, 32, 48, 66}; for (int i = 0; i < sizeof(curve_name); i++) { if (strcasecmp(utf_name, curve_name[i]) == 0) { - curve = create_curve(env, curve_name[i]); + curve = create_curve_from_name(env, curve_name[i]); byte_size = byte_sizes[i]; break; } } (*env)->ReleaseStringUTFChars(env, name, utf_name); if (!curve) { - throw_new(env, "java/security/InvalidAlgorithmParameterException", "Curve for given bitsize not found."); + throw_new(env, "java/security/InvalidAlgorithmParameterException", "Curve with given name not found."); return NULL; } jobject result = generate_from_curve(env, curve, spec, byte_size); @@ -263,13 +278,13 @@ JNIEXPORT jbyteArray JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeKey jmethodID get_name = (*env)->GetMethodID(env, ecgen_parameter_spec_class, "getName", "()Ljava/lang/String;"); jstring name = (*env)->CallObjectMethod(env, params, get_name); const char* utf_name = (*env)->GetStringUTFChars(env, name, NULL); - const struct ecc_curve* curve; + const struct ecc_curve* curve = NULL; char *curve_name[5] = {"secp192r1", "secp224r1", "secp256r1", "secp384r1", "secp521r1"}; int byte_sizes[] = {24, 28, 32, 48, 66}; int byte_size; for (int i = 0; i < sizeof(curve_name); i++) { if (strcasecmp(utf_name, curve_name[i]) == 0) { - curve = create_curve(env, curve_name[i]); + curve = create_curve_from_name(env, curve_name[i]); byte_size = byte_sizes[i]; break; } @@ -412,20 +427,19 @@ int der_to_signature(struct dsa_signature* signature, unsigned char* der) { size_t sLength = der[index++]; mpz_import(signature->s, sLength, 1, sizeof(unsigned char), 0, 0, der + index); return 1; - } JNIEXPORT jbyteArray JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSignatureSpi_00024Nettle_sign(JNIEnv *env, jobject self, jbyteArray data, jbyteArray privkey, jobject params) { jmethodID get_name = (*env)->GetMethodID(env, ecgen_parameter_spec_class, "getName", "()Ljava/lang/String;"); jstring name = (*env)->CallObjectMethod(env, params, get_name); const char* utf_name = (*env)->GetStringUTFChars(env, name, NULL); - const struct ecc_curve* curve; + const struct ecc_curve* curve = NULL; int byte_size; char *curve_name[5] = {"secp192r1", "secp224r1", "secp256r1", "secp384r1", "secp521r1"}; int byte_sizes[] = {24, 28, 32, 48, 66}; for (int i = 0; i < sizeof(curve_name); i++) { if (strcasecmp(utf_name, curve_name[i]) == 0) { - curve = create_curve(env, curve_name[i]); + curve = create_curve_from_name(env, curve_name[i]); byte_size = byte_sizes[i] + 1; break; } @@ -451,7 +465,6 @@ JNIEXPORT jbyteArray JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSig (*env)->ReleaseByteArrayElements(env, data, data_data, JNI_ABORT); - jsize sig_len = signature_to_der(&signature, NULL, byte_size); jbyteArray result = (*env)->NewByteArray(env, sig_len); jbyte *result_data = (*env)->GetByteArrayElements(env, result, NULL); @@ -467,11 +480,11 @@ JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSigna jmethodID get_name = (*env)->GetMethodID(env, ecgen_parameter_spec_class, "getName", "()Ljava/lang/String;"); jstring name = (*env)->CallObjectMethod(env, params, get_name); const char* utf_name = (*env)->GetStringUTFChars(env, name, NULL); - const struct ecc_curve* curve; + const struct ecc_curve* curve = NULL; char *curve_name[5] = {"secp192r1", "secp224r1", "secp256r1", "secp384r1", "secp521r1"}; for (int i = 0; i < sizeof(curve_name); i++) { if (strcasecmp(utf_name, curve_name[i]) == 0) { - curve = create_curve(env, curve_name[i]); + curve = create_curve_from_name(env, curve_name[i]); break; } } diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java index de1d9b0b..1fdde0cc 100644 --- a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java +++ b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java @@ -2,8 +2,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.junitpioneer.jupiter.ExpectedToFail; -import org.junitpioneer.jupiter.StdErr; import org.junitpioneer.jupiter.StdIo; import org.junitpioneer.jupiter.StdOut; @@ -53,8 +51,6 @@ public void listIdents(StdOut out) { @SuppressWarnings("JUnitMalformedDeclaration") @ParameterizedTest - // TODO: @ExpectedToFail does not work with parameterized tests: https://github.com/junit-pioneer/junit-pioneer/issues/762 - @ExpectedToFail @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbed TLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) @StdIo() public void defaultSuite(String libName, StdOut out) { @@ -68,4 +64,84 @@ public void defaultSuite(String libName, StdOut out) { System.err.printf("%s: Default suite has exceptions.%n", libName); } } + + @SuppressWarnings("JUnitMalformedDeclaration") + @ParameterizedTest + @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbed TLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) + @StdIo() + public void generate(String libName, StdOut out) { + String[] args = new String[]{"generate", "-n", "10", "-nc", "secg/secp256r1", libName}; + switch (libName) { + case "Botan": + case "Crypto++": + args = new String[]{"generate", "-n", "10", "-nc", "secg/secp256r1", "-t", "ECDH", libName}; + break; + case "Nettle": + case "libgcrypt": + args = new String[]{"generate", "-n", "10", "-cn", "secp256r1", libName}; + break; + case "BoringSSL": + args = new String[]{"generate", "-n", "10", "-cn", "prime256v1", libName}; + break; + } + ECTesterStandalone.main(args); + } + + @SuppressWarnings("JUnitMalformedDeclaration") + @ParameterizedTest + @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbed TLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) + @StdIo() + public void ecdh(String libName, StdOut out) { + String[] args = new String[]{"ecdh", "-n", "10", "-nc", "secg/secp256r1", libName}; + switch (libName) { + case "Nettle": + case "libgcrypt": + args = new String[]{"ecdh", "-n", "10", "-cn", "secp256r1", libName}; + break; + case "BoringSSL": + args = new String[]{"ecdh", "-n", "10", "-cn", "prime256v1", libName}; + break; + } + ECTesterStandalone.main(args); + } + + @SuppressWarnings("JUnitMalformedDeclaration") + @ParameterizedTest + @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbed TLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) + @StdIo() + public void ecdsa(String libName, StdOut out) { + String[] args = new String[]{"ecdsa", "-n", "10", "-nc", "secg/secp256r1", libName}; + switch (libName) { + case "Nettle": + case "libgcrypt": + args = new String[]{"ecdsa", "-n", "10", "-cn", "secp256r1", "-t", "NONEwithECDSA", libName}; + break; + case "BoringSSL": + args = new String[]{"ecdsa", "-n", "10", "-cn", "prime256v1", "-t", "NONEwithECDSA", libName}; + break; + case "OpenSSL 3": + case "libtomcrypt": + case "LibreSSL": + case "2021": + args = new String[]{"ecdsa", "-n", "10", "-nc", "secg/secp256r1", "-t", "NONEwithECDSA", libName}; + break; + } + ECTesterStandalone.main(args); + } + + @SuppressWarnings("JUnitMalformedDeclaration") + @ParameterizedTest + @ValueSource(strings = {"Bouncy", "Sun", "libtomcrypt", "Botan", "Crypto++", "OpenSSL 3", "BoringSSL", "libgcrypt", "mbed TLS", "2021" /* IPPCP */, "Nettle", "LibreSSL", "wolfCrypt"}) + @StdIo() + public void export(String libName, StdOut out) { + String[] args = new String[]{"export", "-b", "256", libName}; + switch (libName) { + case "Botan": + case "Crypto++": + args = new String[]{"export", "-b", "256", "-t", "ECDH", libName}; + break; + } + ECTesterStandalone.main(args); + System.err.println(out.capturedString()); + } }