aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java1
-rw-r--r--src/cz/crcs/ectester/standalone/ECTesterStandalone.java33
-rw-r--r--src/cz/crcs/ectester/standalone/consts/Ident.java2
-rw-r--r--src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java12
-rwxr-xr-xutil/test.sh48
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