summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-11-13 22:49:41 +0100
committerJ08nY2017-11-13 22:49:41 +0100
commit35bdac1fff6e98485d5fbef870d6438fdbbd00c3 (patch)
treee32a063567fd32e64383e6844477cb42e6cfba00
parentcccf2c9c382fa63c68a6c3821d587bc2caa72b05 (diff)
downloadECTester-35bdac1fff6e98485d5fbef870d6438fdbbd00c3.tar.gz
ECTester-35bdac1fff6e98485d5fbef870d6438fdbbd00c3.tar.zst
ECTester-35bdac1fff6e98485d5fbef870d6438fdbbd00c3.zip
-rw-r--r--src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java4
-rw-r--r--src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java5
-rw-r--r--src/cz/crcs/ectester/standalone/test/KeyGenerationTest.java27
-rw-r--r--src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java67
-rw-r--r--src/cz/crcs/ectester/standalone/test/SignatureTest.java13
-rw-r--r--src/cz/crcs/ectester/standalone/test/SignatureTestable.java102
6 files changed, 213 insertions, 5 deletions
diff --git a/src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java b/src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java
index 9c761fa..a24346e 100644
--- a/src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java
+++ b/src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java
@@ -41,6 +41,10 @@ public class KeyAgreementTest extends Test {
});
}
+ public static KeyAgreementTest function(KeyAgreementTestable ka, TestCallback<KeyAgreementTestable> callback) {
+ return new KeyAgreementTest(ka, callback);
+ }
+
@Override
public String getDescription() {
return null;
diff --git a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java b/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java
index 51c295c..ef363c3 100644
--- a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java
+++ b/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java
@@ -17,7 +17,7 @@ public class KeyAgreementTestable implements Testable {
private ECPublicKey publicKey;
private byte[] secret;
private boolean hasRun;
- private boolean error;
+ private boolean error = false;
private boolean ok;
public KeyAgreementTestable(KeyAgreement ka, ECPrivateKey privateKey, ECPublicKey publicKey) {
@@ -51,7 +51,6 @@ public class KeyAgreementTestable implements Testable {
} catch (InvalidKeyException ikex) {
throw new TestException(ikex);
} catch (IllegalStateException isex) {
- error = true;
ok = false;
hasRun = true;
return;
@@ -60,12 +59,12 @@ public class KeyAgreementTestable implements Testable {
try {
secret = ka.generateSecret();
} catch (IllegalStateException isex) {
- error = true;
ok = false;
hasRun = true;
return;
}
ok = true;
+ hasRun = true;
}
@Override
diff --git a/src/cz/crcs/ectester/standalone/test/KeyGenerationTest.java b/src/cz/crcs/ectester/standalone/test/KeyGenerationTest.java
index 7a96ba1..0ec4741 100644
--- a/src/cz/crcs/ectester/standalone/test/KeyGenerationTest.java
+++ b/src/cz/crcs/ectester/standalone/test/KeyGenerationTest.java
@@ -1,12 +1,35 @@
package cz.crcs.ectester.standalone.test;
+import cz.crcs.ectester.common.test.Result;
import cz.crcs.ectester.common.test.Test;
+import cz.crcs.ectester.common.test.TestCallback;
import cz.crcs.ectester.common.test.TestException;
/**
* @author Jan Jancar johny@neuromancer.sk
*/
public class KeyGenerationTest extends Test {
+ private KeyGenerationTestable kg;
+ private TestCallback<KeyGenerationTestable> callback;
+
+ private KeyGenerationTest(KeyGenerationTestable kg, TestCallback<KeyGenerationTestable> callback) {
+ this.kg = kg;
+ this.callback = callback;
+ }
+
+ public static KeyGenerationTest expect(KeyGenerationTestable kg, Result.ExpectedValue expected) {
+ return new KeyGenerationTest(kg, new TestCallback<KeyGenerationTestable>() {
+ @Override
+ public Result apply(KeyGenerationTestable keyGenerationTestable) {
+ return new Result(Result.Value.fromExpected(expected, keyGenerationTestable.ok(), keyGenerationTestable.error()));
+ }
+ });
+ }
+
+ public static KeyGenerationTest function(KeyGenerationTestable ka, TestCallback<KeyGenerationTestable> callback) {
+ return new KeyGenerationTest(ka, callback);
+ }
+
@Override
public String getDescription() {
return null;
@@ -14,6 +37,8 @@ public class KeyGenerationTest extends Test {
@Override
public void run() throws TestException {
-
+ kg.run();
+ result = callback.apply(kg);
+ hasRun = true;
}
}
diff --git a/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java b/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java
new file mode 100644
index 0000000..10d02cb
--- /dev/null
+++ b/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java
@@ -0,0 +1,67 @@
+package cz.crcs.ectester.standalone.test;
+
+import cz.crcs.ectester.common.test.TestException;
+import cz.crcs.ectester.common.test.Testable;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.spec.AlgorithmParameterSpec;
+
+public class KeyGenerationTestable implements Testable {
+
+ private KeyPair kp;
+ private KeyPairGenerator kpg;
+ private int keysize;
+ private AlgorithmParameterSpec spec;
+ private boolean hasRun;
+ private boolean error = false;
+ private boolean ok;
+
+ public KeyGenerationTestable(KeyPairGenerator kpg, int keysize) {
+ this.kpg = kpg;
+ this.keysize = keysize;
+ }
+
+ public KeyGenerationTestable(KeyPairGenerator kpg, AlgorithmParameterSpec spec) {
+ this.kpg = kpg;
+ this.spec = spec;
+ }
+
+ public KeyPair getKeyPair() {
+ return kp;
+ }
+
+ @Override
+ public boolean hasRun() {
+ return hasRun;
+ }
+
+ @Override
+ public void run() throws TestException {
+ try {
+ if (spec != null) {
+ kpg.initialize(spec);
+ } else {
+ kpg.initialize(keysize);
+ }
+ } catch (InvalidAlgorithmParameterException e) {
+ hasRun = true;
+ ok = false;
+ return;
+ }
+ kp = kpg.genKeyPair();
+ hasRun = true;
+ ok = true;
+ }
+
+ @Override
+ public boolean ok() {
+ return ok;
+ }
+
+ @Override
+ public boolean error() {
+ return error;
+ }
+}
diff --git a/src/cz/crcs/ectester/standalone/test/SignatureTest.java b/src/cz/crcs/ectester/standalone/test/SignatureTest.java
index 2102db0..828b84f 100644
--- a/src/cz/crcs/ectester/standalone/test/SignatureTest.java
+++ b/src/cz/crcs/ectester/standalone/test/SignatureTest.java
@@ -1,12 +1,21 @@
package cz.crcs.ectester.standalone.test;
import cz.crcs.ectester.common.test.Test;
+import cz.crcs.ectester.common.test.TestCallback;
import cz.crcs.ectester.common.test.TestException;
/**
* @author Jan Jancar johny@neuromancer.sk
*/
public class SignatureTest extends Test {
+ private SignatureTestable sig;
+ private TestCallback<SignatureTestable> callback;
+
+ private SignatureTest(SignatureTestable sig, TestCallback<SignatureTestable> callback) {
+ this.sig = sig;
+ this.callback = callback;
+ }
+
@Override
public String getDescription() {
return null;
@@ -14,6 +23,8 @@ public class SignatureTest extends Test {
@Override
public void run() throws TestException {
-
+ sig.run();
+ result = callback.apply(sig);
+ hasRun = true;
}
}
diff --git a/src/cz/crcs/ectester/standalone/test/SignatureTestable.java b/src/cz/crcs/ectester/standalone/test/SignatureTestable.java
new file mode 100644
index 0000000..5f58b4a
--- /dev/null
+++ b/src/cz/crcs/ectester/standalone/test/SignatureTestable.java
@@ -0,0 +1,102 @@
+package cz.crcs.ectester.standalone.test;
+
+import cz.crcs.ectester.common.test.TestException;
+import cz.crcs.ectester.common.test.Testable;
+
+import java.security.InvalidKeyException;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.interfaces.ECPrivateKey;
+import java.security.interfaces.ECPublicKey;
+
+public class SignatureTestable implements Testable {
+
+ private Signature sig;
+ private ECPrivateKey signKey;
+ private ECPublicKey verifyKey;
+ private byte[] data;
+ private byte[] signature;
+ private boolean verified;
+
+ private boolean hasRun;
+ private boolean error;
+ private boolean ok;
+
+ public SignatureTestable(Signature sig, ECPrivateKey signKey, ECPublicKey verifyKey, byte[] data) {
+ this.sig = sig;
+ this.signKey = signKey;
+ this.verifyKey = verifyKey;
+ this.data = data;
+ }
+
+ public byte[] getSignature() {
+ return signature;
+ }
+
+ public boolean getVerified() {
+ return verified;
+ }
+
+ @Override
+ public boolean hasRun() {
+ return hasRun;
+ }
+
+ @Override
+ public void run() throws TestException {
+ try {
+ sig.initSign(signKey);
+ } catch (InvalidKeyException e) {
+ throw new TestException(e);
+ }
+
+ try {
+ sig.update(data);
+ } catch (SignatureException e) {
+ ok = false;
+ hasRun = true;
+ return;
+ }
+
+ try {
+ signature = sig.sign();
+ } catch (SignatureException e) {
+ ok = false;
+ hasRun = true;
+ return;
+ }
+
+ try {
+ sig.initVerify(verifyKey);
+ } catch (InvalidKeyException e) {
+ throw new TestException(e);
+ }
+
+ try {
+ sig.update(data);
+ } catch (SignatureException e) {
+ ok = false;
+ hasRun = true;
+ return;
+ }
+
+ try {
+ verified = sig.verify(signature);
+ } catch (SignatureException e) {
+ ok = false;
+ hasRun = true;
+ }
+ ok = true;
+ hasRun = true;
+ }
+
+ @Override
+ public boolean ok() {
+ return ok;
+ }
+
+ @Override
+ public boolean error() {
+ return error;
+ }
+}