diff options
| author | J08nY | 2018-07-30 19:16:55 +0200 |
|---|---|---|
| committer | J08nY | 2018-07-30 19:16:55 +0200 |
| commit | bfb1202f83a36f086b69286060e7355777e83b61 (patch) | |
| tree | 29f336744b932b2090cf5e760ecf268569d20e74 | |
| parent | d24630d759bb16f715564ab80a5d4447f57d03f2 (diff) | |
| download | ECTester-bfb1202f83a36f086b69286060e7355777e83b61.tar.gz ECTester-bfb1202f83a36f086b69286060e7355777e83b61.tar.zst ECTester-bfb1202f83a36f086b69286060e7355777e83b61.zip | |
| -rw-r--r-- | .travis.yml | 1 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/ECTesterReader.java | 1 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/ECTesterStandalone.java | 33 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/consts/Ident.java | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java | 12 | ||||
| -rwxr-xr-x | util/test.sh | 48 |
6 files changed, 87 insertions, 10 deletions
diff --git a/.travis.yml b/.travis.yml index 453c523..3ca102d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ script: - ant -f build-applet.xml build - ant -f build-reader.xml package - ant -f build-standalone.xml package + - ./util/test.sh before_deploy: - zip "dist/ECTester.zip" "dist/ECTesterReader-dist.jar" "dist/ECTesterReader.jar" "applet/ectester.cap" "dist/ECTesterStandalone-dist.jar" "dist/ECTesterStandalone.jar" diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java index 4a7d779..7bdf0f1 100644 --- a/src/cz/crcs/ectester/reader/ECTesterReader.java +++ b/src/cz/crcs/ectester/reader/ECTesterReader.java @@ -94,7 +94,6 @@ public class ECTesterReader { DESCRIPTION = "ECTesterReader " + VERSION + GIT_COMMIT + ", a javacard Elliptic Curve Cryptography support tester/utility."; CLI_HEADER = "\n" + DESCRIPTION + "\n\n"; - ; } private void run(String[] args) { diff --git a/src/cz/crcs/ectester/standalone/ECTesterStandalone.java b/src/cz/crcs/ectester/standalone/ECTesterStandalone.java index 31d291c..aafe38a 100644 --- a/src/cz/crcs/ectester/standalone/ECTesterStandalone.java +++ b/src/cz/crcs/ectester/standalone/ECTesterStandalone.java @@ -264,16 +264,26 @@ public class ECTesterStandalone { .findFirst() .orElse(null); + String baseAlgo; + if (algo.contains("with")) { + baseAlgo = algo.split("with")[0]; + } else { + baseAlgo = algo; + } + KeyPairGeneratorIdent kpIdent = lib.getKPGs().stream() .filter((ident) -> ident.contains(algo)) .findFirst() .orElse(lib.getKPGs().stream() - .filter((ident) -> ident.contains("ECDH")) + .filter((ident) -> ident.contains(baseAlgo)) .findFirst() .orElse(lib.getKPGs().stream() - .filter((ident) -> ident.contains("EC")) + .filter((ident) -> ident.contains("ECDH")) .findFirst() - .orElse(null))); + .orElse(lib.getKPGs().stream() + .filter((ident) -> ident.contains("EC")) + .findFirst() + .orElse(null)))); if (kaIdent == null || kpIdent == null) { throw new NoSuchAlgorithmException(algo); @@ -367,13 +377,26 @@ public class ECTesterStandalone { .findFirst() .orElse(null); + String baseAlgo; + if (algo.contains("with")) { + baseAlgo = algo.split("with")[1]; + } else { + baseAlgo = algo; + } + KeyPairGeneratorIdent kpIdent = lib.getKPGs().stream() .filter((ident) -> ident.contains(algo)) .findFirst() .orElse(lib.getKPGs().stream() - .filter((ident) -> ident.contains("EC")) + .filter((ident) -> ident.contains(baseAlgo)) .findFirst() - .orElse(null)); + .orElse(lib.getKPGs().stream() + .filter((ident) -> ident.contains("ECDSA")) + .findFirst() + .orElse(lib.getKPGs().stream() + .filter((ident) -> ident.contains("EC")) + .findFirst() + .orElse(null)))); if (sigIdent == null || kpIdent == null) { throw new NoSuchAlgorithmException(algo); diff --git a/src/cz/crcs/ectester/standalone/consts/Ident.java b/src/cz/crcs/ectester/standalone/consts/Ident.java index 40a44ac..29603c2 100644 --- a/src/cz/crcs/ectester/standalone/consts/Ident.java +++ b/src/cz/crcs/ectester/standalone/consts/Ident.java @@ -36,6 +36,7 @@ public abstract class Ident { try { instance = getter.apply(name, provider); } catch (Exception ignored) { + ignored.printStackTrace(); } if (instance == null) { @@ -46,6 +47,7 @@ public abstract class Ident { break; } } catch (Exception ignored) { + ignored.printStackTrace(); } } } diff --git a/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java b/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java index 7ca013a..aa83479 100644 --- a/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java +++ b/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java @@ -13,6 +13,8 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { private boolean useKeysize; private boolean useParams; + public static final int DEFAULT_KEYSIZE = 256; + @Override public void initialize(int keysize, SecureRandom random) { if (!keysizeSupported(keysize)) { @@ -37,6 +39,12 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { @Override public KeyPair generateKeyPair() { + if (!useKeysize && !useParams) { + if (keysizeSupported(DEFAULT_KEYSIZE)) { + initialize(DEFAULT_KEYSIZE, new SecureRandom()); + } + } + if (useKeysize) { return generate(keysize, random); } else if (useParams) { @@ -57,7 +65,6 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { public static class TomCrypt extends NativeKeyPairGeneratorSpi { public TomCrypt() { - initialize(256, new SecureRandom());//TODO: maybe remove this default init? } @Override @@ -78,7 +85,6 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { public Botan(String type) { this.type = type; - initialize(256, new SecureRandom());//TODO: maybe remove this default init? } @Override @@ -127,7 +133,6 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { public Cryptopp(String type) { this.type = type; - initialize(256, new SecureRandom());//TODO: maybe remove this default init? } @Override @@ -180,7 +185,6 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { public Mscng(String type) { this.type = type; - initialize(256, new SecureRandom()); } @Override diff --git a/util/test.sh b/util/test.sh new file mode 100755 index 0000000..41a16e0 --- /dev/null +++ b/util/test.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# +# ECTesterStandalone testing script, +# tests to see everything is implemented correctly in the testing tool +# +cur=$PWD +cd "$(dirname "${BASH_SOURCE[0]}")"/../dist + +trap int INT +function int() { + cd $cur + exit 1 +} + +function do_test() { + out=$($run "$@") + ret=$? + echo "$out" | tail -n1 + if [ "$ret" -ne "0" ]; then + echo ">>>> ERROR '$@' => $ret" + fi +} + +run="$(which java) -jar ECTesterStandalone.jar" +libs=$($run list-libs | grep -P "^\t-" | cut -d"-" -f 2 | cut -d"(" -f1) +while read -r lib; do + echo "** Testing library: $lib" + support=$($run list-libs "$lib") + kpgs=$(echo "$support" | grep KeyPairGenerators | cut -d":" -f2 | sed 's/,//g') + kas=$(echo "$support" | grep KeyAgreements | cut -d":" -f2 | sed 's/,//g') + sigs=$(echo "$support" | grep Signatures | cut -d":" -f2 | sed 's/,//g') + for kpg in $kpgs; do + echo "*** KPG: $kpg" + do_test generate -t $kpg "$lib" + done + for ka in $kas; do + echo "*** KA: $ka" + do_test ecdh -t $ka "$lib" + done + for sig in $sigs; do + echo "*** SIG: $sig" + do_test ecdsa -t $sig "$lib" + done + echo -en "\n\n" +done <<< "$libs" + +trap INT +cd $cur
\ No newline at end of file |
