aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/standalone/test/SignatureTestable.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/standalone/test/SignatureTestable.java')
-rw-r--r--src/cz/crcs/ectester/standalone/test/SignatureTestable.java102
1 files changed, 102 insertions, 0 deletions
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;
+ }
+}