diff options
| author | J08nY | 2017-11-13 22:49:41 +0100 |
|---|---|---|
| committer | J08nY | 2017-11-13 22:49:41 +0100 |
| commit | 35bdac1fff6e98485d5fbef870d6438fdbbd00c3 (patch) | |
| tree | e32a063567fd32e64383e6844477cb42e6cfba00 | |
| parent | cccf2c9c382fa63c68a6c3821d587bc2caa72b05 (diff) | |
| download | ECTester-35bdac1fff6e98485d5fbef870d6438fdbbd00c3.tar.gz ECTester-35bdac1fff6e98485d5fbef870d6438fdbbd00c3.tar.zst ECTester-35bdac1fff6e98485d5fbef870d6438fdbbd00c3.zip | |
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; + } +} |
