aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java
diff options
context:
space:
mode:
authorJ08nY2017-12-06 19:07:44 +0100
committerJ08nY2017-12-06 19:07:44 +0100
commit21da331c7a6e5db64ec5f1b59ce0ece624f6b760 (patch)
tree344c0054293026f28af2b67c088f55d2904be454 /src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java
parent9a1cfb31473c89c70dc603f7ae0298ea677577a0 (diff)
downloadECTester-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.java64
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;
}