diff options
| author | J08nY | 2017-12-06 19:07:44 +0100 |
|---|---|---|
| committer | J08nY | 2017-12-06 19:07:44 +0100 |
| commit | 21da331c7a6e5db64ec5f1b59ce0ece624f6b760 (patch) | |
| tree | 344c0054293026f28af2b67c088f55d2904be454 /src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java | |
| parent | 9a1cfb31473c89c70dc603f7ae0298ea677577a0 (diff) | |
| download | ECTester-21da331c7a6e5db64ec5f1b59ce0ece624f6b760.tar.gz ECTester-21da331c7a6e5db64ec5f1b59ce0ece624f6b760.tar.zst ECTester-21da331c7a6e5db64ec5f1b59ce0ece624f6b760.zip | |
Implement basic standalone testing.
Diffstat (limited to 'src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java')
| -rw-r--r-- | src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java | 64 |
1 files changed, 57 insertions, 7 deletions
diff --git a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java b/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java index fedf519..8e9b0dd 100644 --- a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java +++ b/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java @@ -2,12 +2,14 @@ package cz.crcs.ectester.standalone.test; import cz.crcs.ectester.common.test.BaseTestable; import cz.crcs.ectester.common.test.TestException; -import cz.crcs.ectester.common.test.Testable; import javax.crypto.KeyAgreement; +import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.interfaces.ECPrivateKey; import java.security.interfaces.ECPublicKey; +import java.security.spec.AlgorithmParameterSpec; +import java.security.spec.ECParameterSpec; /** * @author Jan Jancar johny@neuromancer.sk @@ -16,6 +18,9 @@ public class KeyAgreementTestable extends BaseTestable { private KeyAgreement ka; private ECPrivateKey privateKey; private ECPublicKey publicKey; + private KeyGeneratorTestable kgtPrivate; + private KeyGeneratorTestable kgtPublic; + private AlgorithmParameterSpec spec; private byte[] secret; public KeyAgreementTestable(KeyAgreement ka, ECPrivateKey privateKey, ECPublicKey publicKey) { @@ -24,6 +29,27 @@ public class KeyAgreementTestable extends BaseTestable { this.publicKey = publicKey; } + public KeyAgreementTestable(KeyAgreement ka, ECPrivateKey privateKey, ECPublicKey publicKey, ECParameterSpec spec) { + this(ka, privateKey, publicKey); + this.spec = spec; + } + + public KeyAgreementTestable(KeyAgreement ka, KeyGeneratorTestable kgt, ECPrivateKey privateKey, ECParameterSpec spec) { + this(ka, privateKey, null, spec); + this.kgtPublic = kgt; + } + + public KeyAgreementTestable(KeyAgreement ka, ECPublicKey publicKey, KeyGeneratorTestable kgt, ECParameterSpec spec) { + this(ka, null, publicKey, spec); + this.kgtPrivate = kgt; + } + + public KeyAgreementTestable(KeyAgreement ka, KeyGeneratorTestable privKgt, KeyGeneratorTestable pubKgt, ECParameterSpec spec) { + this(ka, (ECPrivateKey) null, null, spec); + this.kgtPrivate = privKgt; + this.kgtPublic = pubKgt; + } + public byte[] getSecret() { if (!hasRun) { return null; @@ -33,20 +59,38 @@ public class KeyAgreementTestable extends BaseTestable { @Override public void run() throws TestException { + if (kgtPrivate != null) { + privateKey = (ECPrivateKey) kgtPrivate.getKeyPair().getPrivate(); + } + + if (kgtPublic != null) { + publicKey = (ECPublicKey) kgtPublic.getKeyPair().getPublic(); + } + try { - ka.init(privateKey); - } catch (InvalidKeyException ikex) { - throw new TestException(ikex); + if (spec != null) { + ka.init(privateKey, spec); + } else { + ka.init(privateKey); + } + } catch (InvalidKeyException | InvalidAlgorithmParameterException e) { + ok = false; + error = true; + hasRun = true; + return; } try { ka.doPhase(publicKey, true); - } catch (InvalidKeyException ikex) { - throw new TestException(ikex); - } catch (IllegalStateException isex) { + } catch (IllegalStateException e) { ok = false; hasRun = true; return; + } catch (InvalidKeyException e) { + ok = false; + error = true; + hasRun = true; + return; } try { @@ -55,7 +99,13 @@ public class KeyAgreementTestable extends BaseTestable { ok = false; hasRun = true; return; + } catch (UnsupportedOperationException uoe) { + ok = false; + error = true; + hasRun = false; + return; } + ok = true; hasRun = true; } |
