diff options
| author | J08nY | 2018-05-28 20:06:18 +0200 |
|---|---|---|
| committer | J08nY | 2018-05-28 20:06:18 +0200 |
| commit | a4e52b21b1dad5f96df409c44e5b4d611bba01b9 (patch) | |
| tree | 36f9d21894fc702a4f544bd0145b403ba3930074 /src/cz/crcs/ectester/standalone/test | |
| parent | ff6be88e469608a67945a274ec2180aee3f3ccd2 (diff) | |
| download | ECTester-a4e52b21b1dad5f96df409c44e5b4d611bba01b9.tar.gz ECTester-a4e52b21b1dad5f96df409c44e5b4d611bba01b9.tar.zst ECTester-a4e52b21b1dad5f96df409c44e5b4d611bba01b9.zip | |
Implement tracking of stage of execution of standalone testables.
- Output this stage in all the formats.
Diffstat (limited to 'src/cz/crcs/ectester/standalone/test')
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/base/KeyAgreementTest.java (renamed from src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java) | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/base/KeyAgreementTestable.java (renamed from src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java) | 22 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/base/KeyGeneratorTest.java (renamed from src/cz/crcs/ectester/standalone/test/KeyGeneratorTest.java) | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/base/KeyGeneratorTestable.java (renamed from src/cz/crcs/ectester/standalone/test/KeyGeneratorTestable.java) | 18 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/base/SignatureTest.java (renamed from src/cz/crcs/ectester/standalone/test/SignatureTest.java) | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/base/SignatureTestable.java (renamed from src/cz/crcs/ectester/standalone/test/SignatureTestable.java) | 26 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/base/StandaloneTestable.java | 14 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/suites/StandaloneDefaultSuite.java (renamed from src/cz/crcs/ectester/standalone/test/StandaloneDefaultSuite.java) | 36 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/suites/StandaloneTestSuite.java (renamed from src/cz/crcs/ectester/standalone/test/StandaloneTestSuite.java) | 2 |
9 files changed, 95 insertions, 29 deletions
diff --git a/src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java b/src/cz/crcs/ectester/standalone/test/base/KeyAgreementTest.java index 33c7385..8297d76 100644 --- a/src/cz/crcs/ectester/standalone/test/KeyAgreementTest.java +++ b/src/cz/crcs/ectester/standalone/test/base/KeyAgreementTest.java @@ -1,4 +1,4 @@ -package cz.crcs.ectester.standalone.test; +package cz.crcs.ectester.standalone.test.base; import cz.crcs.ectester.common.test.Result; import cz.crcs.ectester.common.test.SimpleTest; diff --git a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java b/src/cz/crcs/ectester/standalone/test/base/KeyAgreementTestable.java index aac2127..ffcfc67 100644 --- a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java +++ b/src/cz/crcs/ectester/standalone/test/base/KeyAgreementTestable.java @@ -1,6 +1,4 @@ -package cz.crcs.ectester.standalone.test; - -import cz.crcs.ectester.common.test.BaseTestable; +package cz.crcs.ectester.standalone.test.base; import javax.crypto.KeyAgreement; import java.security.InvalidAlgorithmParameterException; @@ -13,7 +11,7 @@ import java.security.spec.ECParameterSpec; /** * @author Jan Jancar johny@neuromancer.sk */ -public class KeyAgreementTestable extends BaseTestable { +public class KeyAgreementTestable extends StandaloneTestable<KeyAgreementTestable.KeyAgreementStage> { private KeyAgreement ka; private ECPrivateKey privateKey; private ECPublicKey publicKey; @@ -71,14 +69,17 @@ public class KeyAgreementTestable extends BaseTestable { @Override public void run() { try { + stage = KeyAgreementStage.GetPrivate; if (kgtPrivate != null) { privateKey = (ECPrivateKey) kgtPrivate.getKeyPair().getPrivate(); } + stage = KeyAgreementStage.GetPublic; if (kgtPublic != null) { publicKey = (ECPublicKey) kgtPublic.getKeyPair().getPublic(); } + stage = KeyAgreementStage.Init; try { if (spec != null) { ka.init(privateKey, spec); @@ -87,25 +88,24 @@ public class KeyAgreementTestable extends BaseTestable { } } catch (InvalidKeyException | InvalidAlgorithmParameterException e) { ok = false; - error = false; hasRun = true; return; } + stage = KeyAgreementStage.DoPhase; try { ka.doPhase(publicKey, true); } catch (IllegalStateException | InvalidKeyException e) { ok = false; - error = false; hasRun = true; return; } + stage = KeyAgreementStage.GenerateSecret; try { secret = ka.generateSecret(); } catch (IllegalStateException | UnsupportedOperationException isex) { ok = false; - error = false; hasRun = true; return; } @@ -118,4 +118,12 @@ public class KeyAgreementTestable extends BaseTestable { } hasRun = true; } + + public enum KeyAgreementStage { + GetPrivate, + GetPublic, + Init, + DoPhase, + GenerateSecret + } } diff --git a/src/cz/crcs/ectester/standalone/test/KeyGeneratorTest.java b/src/cz/crcs/ectester/standalone/test/base/KeyGeneratorTest.java index 02b81a4..b232456 100644 --- a/src/cz/crcs/ectester/standalone/test/KeyGeneratorTest.java +++ b/src/cz/crcs/ectester/standalone/test/base/KeyGeneratorTest.java @@ -1,4 +1,4 @@ -package cz.crcs.ectester.standalone.test; +package cz.crcs.ectester.standalone.test.base; import cz.crcs.ectester.common.test.Result; import cz.crcs.ectester.common.test.SimpleTest; diff --git a/src/cz/crcs/ectester/standalone/test/KeyGeneratorTestable.java b/src/cz/crcs/ectester/standalone/test/base/KeyGeneratorTestable.java index 774c3ec..b561b8b 100644 --- a/src/cz/crcs/ectester/standalone/test/KeyGeneratorTestable.java +++ b/src/cz/crcs/ectester/standalone/test/base/KeyGeneratorTestable.java @@ -1,6 +1,4 @@ -package cz.crcs.ectester.standalone.test; - -import cz.crcs.ectester.common.test.BaseTestable; +package cz.crcs.ectester.standalone.test.base; import java.security.InvalidAlgorithmParameterException; import java.security.KeyPair; @@ -10,7 +8,7 @@ import java.security.spec.ECParameterSpec; /** * @author Jan Jancar johny@neuromancer.sk */ -public class KeyGeneratorTestable extends BaseTestable { +public class KeyGeneratorTestable extends StandaloneTestable<KeyGeneratorTestable.KeyGeneratorStage> { private KeyPair kp; private KeyPairGenerator kpg; private int keysize = 0; @@ -41,6 +39,7 @@ public class KeyGeneratorTestable extends BaseTestable { @Override public void run() { try { + stage = KeyGeneratorStage.Init; try { if (spec != null) { kpg.initialize(spec); @@ -48,13 +47,15 @@ public class KeyGeneratorTestable extends BaseTestable { kpg.initialize(keysize); } } catch (InvalidAlgorithmParameterException e) { - hasRun = true; ok = false; + hasRun = true; return; } + + stage = KeyGeneratorStage.GenKeyPair; kp = kpg.genKeyPair(); - ok = true; + ok = true; } catch (Exception ex) { ok = false; error = true; @@ -62,4 +63,9 @@ public class KeyGeneratorTestable extends BaseTestable { } hasRun = true; } + + public enum KeyGeneratorStage { + Init, + GenKeyPair + } } diff --git a/src/cz/crcs/ectester/standalone/test/SignatureTest.java b/src/cz/crcs/ectester/standalone/test/base/SignatureTest.java index 481d289..d8b3e0f 100644 --- a/src/cz/crcs/ectester/standalone/test/SignatureTest.java +++ b/src/cz/crcs/ectester/standalone/test/base/SignatureTest.java @@ -1,4 +1,4 @@ -package cz.crcs.ectester.standalone.test; +package cz.crcs.ectester.standalone.test.base; import cz.crcs.ectester.common.test.Result; import cz.crcs.ectester.common.test.SimpleTest; diff --git a/src/cz/crcs/ectester/standalone/test/SignatureTestable.java b/src/cz/crcs/ectester/standalone/test/base/SignatureTestable.java index 6bc9b30..873757b 100644 --- a/src/cz/crcs/ectester/standalone/test/SignatureTestable.java +++ b/src/cz/crcs/ectester/standalone/test/base/SignatureTestable.java @@ -1,7 +1,4 @@ -package cz.crcs.ectester.standalone.test; - -import cz.crcs.ectester.common.test.BaseTestable; -import cz.crcs.ectester.common.test.TestException; +package cz.crcs.ectester.standalone.test.base; import java.security.InvalidKeyException; import java.security.SecureRandom; @@ -13,7 +10,7 @@ import java.security.interfaces.ECPublicKey; /** * @author Jan Jancar johny@neuromancer.sk */ -public class SignatureTestable extends BaseTestable { +public class SignatureTestable extends StandaloneTestable<SignatureTestable.SignatureStage> { private Signature sig; private ECPrivateKey signKey; private ECPublicKey verifyKey; @@ -29,7 +26,7 @@ public class SignatureTestable extends BaseTestable { this.data = data; if (data == null) { SecureRandom random = new SecureRandom(); - this.data = new byte[32]; + this.data = new byte[64]; random.nextBytes(this.data); } } @@ -58,11 +55,13 @@ public class SignatureTestable extends BaseTestable { @Override public void run() { try { + stage = SignatureStage.GetKeys; if (kgt != null) { signKey = (ECPrivateKey) kgt.getKeyPair().getPrivate(); verifyKey = (ECPublicKey) kgt.getKeyPair().getPublic(); } + stage = SignatureStage.InitSign; try { sig.initSign(signKey); } catch (InvalidKeyException e) { @@ -71,6 +70,7 @@ public class SignatureTestable extends BaseTestable { return; } + stage = SignatureStage.UpdateSign; try { sig.update(data); } catch (SignatureException e) { @@ -79,6 +79,7 @@ public class SignatureTestable extends BaseTestable { return; } + stage = SignatureStage.Sign; try { signature = sig.sign(); } catch (SignatureException e) { @@ -87,6 +88,7 @@ public class SignatureTestable extends BaseTestable { return; } + stage = SignatureStage.InitVerify; try { sig.initVerify(verifyKey); } catch (InvalidKeyException e) { @@ -95,6 +97,7 @@ public class SignatureTestable extends BaseTestable { return; } + stage = SignatureStage.UpdateVerify; try { sig.update(data); } catch (SignatureException e) { @@ -103,6 +106,7 @@ public class SignatureTestable extends BaseTestable { return; } + stage = SignatureStage.Verify; try { verified = sig.verify(signature); } catch (SignatureException e) { @@ -118,4 +122,14 @@ public class SignatureTestable extends BaseTestable { } hasRun = true; } + + public enum SignatureStage { + GetKeys, + InitSign, + UpdateSign, + Sign, + InitVerify, + UpdateVerify, + Verify + } } diff --git a/src/cz/crcs/ectester/standalone/test/base/StandaloneTestable.java b/src/cz/crcs/ectester/standalone/test/base/StandaloneTestable.java new file mode 100644 index 0000000..8654e94 --- /dev/null +++ b/src/cz/crcs/ectester/standalone/test/base/StandaloneTestable.java @@ -0,0 +1,14 @@ +package cz.crcs.ectester.standalone.test.base; + +import cz.crcs.ectester.common.test.BaseTestable; + +/** + * @author Jan Jancar johny@neuromancer.sk + */ +public abstract class StandaloneTestable<T extends Enum<T>> extends BaseTestable { + protected T stage; + + public T getStage() { + return stage; + } +} diff --git a/src/cz/crcs/ectester/standalone/test/StandaloneDefaultSuite.java b/src/cz/crcs/ectester/standalone/test/suites/StandaloneDefaultSuite.java index 572449a..e030664 100644 --- a/src/cz/crcs/ectester/standalone/test/StandaloneDefaultSuite.java +++ b/src/cz/crcs/ectester/standalone/test/suites/StandaloneDefaultSuite.java @@ -1,4 +1,4 @@ -package cz.crcs.ectester.standalone.test; +package cz.crcs.ectester.standalone.test.suites; import cz.crcs.ectester.common.cli.TreeCommandLine; import cz.crcs.ectester.common.ec.EC_Curve; @@ -9,12 +9,13 @@ import cz.crcs.ectester.standalone.ECTesterStandalone; import cz.crcs.ectester.standalone.consts.KeyAgreementIdent; import cz.crcs.ectester.standalone.consts.KeyPairGeneratorIdent; import cz.crcs.ectester.standalone.consts.SignatureIdent; -import cz.crcs.ectester.standalone.libs.ECLibrary; +import cz.crcs.ectester.standalone.test.base.*; import javax.crypto.KeyAgreement; import java.security.KeyPairGenerator; import java.security.Signature; import java.security.spec.ECParameterSpec; +import java.util.Optional; /** * @author Jan Jancar johny@neuromancer.sk @@ -27,13 +28,36 @@ public class StandaloneDefaultSuite extends StandaloneTestSuite { @Override protected void runTests() throws Exception { - String kpgAlgo = cli.getOptionValue("test.kpg-type", "EC"); + String kpgAlgo = cli.getOptionValue("test.kpg-type"); String kaAlgo = cli.getOptionValue("test.ka-type"); String sigAlgo = cli.getOptionValue("test.sig-type"); - KeyPairGeneratorIdent kpgIdent = cfg.selected.getKPGs().stream() - .filter((ident) -> ident.contains(kpgAlgo)) - .findFirst().get(); + + KeyPairGeneratorIdent kpgIdent; + if (kpgAlgo == null) { + // try EC, if not, fail with: need to specify kpg algo. + Optional<KeyPairGeneratorIdent> kpgIdentOpt = cfg.selected.getKPGs().stream() + .filter((ident) -> ident.contains("EC")) + .findFirst(); + if (kpgIdentOpt.isPresent()) { + kpgIdent = kpgIdentOpt.get(); + } else { + System.err.println("The default KeyPairGenerator algorithm type of \"EC\" was not found. Need to specify a type."); + return; + } + } else { + // try the specified, if not, fail with: wrong kpg algo/not found. + Optional<KeyPairGeneratorIdent> kpgIdentOpt = cfg.selected.getKPGs().stream() + .filter((ident) -> ident.contains(kpgAlgo)) + .findFirst(); + if (kpgIdentOpt.isPresent()) { + kpgIdent = kpgIdentOpt.get(); + } else { + System.err.println("The KeyPairGenerator algorithm type of \"" + kpgAlgo + "\" was not found."); + return; + } + } + KeyPairGenerator kpg = kpgIdent.getInstance(cfg.selected.getProvider()); KeyGeneratorTestable kgtOne; diff --git a/src/cz/crcs/ectester/standalone/test/StandaloneTestSuite.java b/src/cz/crcs/ectester/standalone/test/suites/StandaloneTestSuite.java index 2949d52..c01f8cd 100644 --- a/src/cz/crcs/ectester/standalone/test/StandaloneTestSuite.java +++ b/src/cz/crcs/ectester/standalone/test/suites/StandaloneTestSuite.java @@ -1,4 +1,4 @@ -package cz.crcs.ectester.standalone.test; +package cz.crcs.ectester.standalone.test.suites; import cz.crcs.ectester.common.cli.TreeCommandLine; import cz.crcs.ectester.common.output.TestWriter; |
