summaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/standalone/output
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/standalone/output')
-rw-r--r--src/cz/crcs/ectester/standalone/output/TextTestWriter.java28
-rw-r--r--src/cz/crcs/ectester/standalone/output/XMLTestWriter.java119
-rw-r--r--src/cz/crcs/ectester/standalone/output/YAMLTestWriter.java98
3 files changed, 245 insertions, 0 deletions
diff --git a/src/cz/crcs/ectester/standalone/output/TextTestWriter.java b/src/cz/crcs/ectester/standalone/output/TextTestWriter.java
new file mode 100644
index 0000000..972af18
--- /dev/null
+++ b/src/cz/crcs/ectester/standalone/output/TextTestWriter.java
@@ -0,0 +1,28 @@
+package cz.crcs.ectester.standalone.output;
+
+import cz.crcs.ectester.common.output.BaseTextTestWriter;
+import cz.crcs.ectester.common.test.TestSuite;
+import cz.crcs.ectester.common.test.Testable;
+
+import java.io.PrintStream;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class TextTestWriter extends BaseTextTestWriter {
+ public TextTestWriter(PrintStream output) {
+ super(output);
+ }
+
+ @Override
+ protected String testableString(Testable t) {
+ //TODO
+ return "";
+ }
+
+ @Override
+ protected String deviceString(TestSuite suite) {
+ //TODO
+ return "";
+ }
+} \ No newline at end of file
diff --git a/src/cz/crcs/ectester/standalone/output/XMLTestWriter.java b/src/cz/crcs/ectester/standalone/output/XMLTestWriter.java
new file mode 100644
index 0000000..d2b16d8
--- /dev/null
+++ b/src/cz/crcs/ectester/standalone/output/XMLTestWriter.java
@@ -0,0 +1,119 @@
+package cz.crcs.ectester.standalone.output;
+
+import cz.crcs.ectester.common.output.BaseXMLTestWriter;
+import cz.crcs.ectester.common.test.TestSuite;
+import cz.crcs.ectester.common.test.Testable;
+import cz.crcs.ectester.common.util.ByteUtil;
+import cz.crcs.ectester.standalone.test.KeyAgreementTestable;
+import cz.crcs.ectester.standalone.test.KeyGeneratorTestable;
+import cz.crcs.ectester.standalone.test.SignatureTestable;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.OutputStream;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class XMLTestWriter extends BaseXMLTestWriter {
+
+ public XMLTestWriter(OutputStream output) throws ParserConfigurationException {
+ super(output);
+ }
+
+ private Element pkeyElement(PublicKey pkey) {
+ Element pubkey = doc.createElement("pubkey");
+ if (pkey == null) {
+ return pubkey;
+ }
+ pubkey.setAttribute("algorithm", pkey.getAlgorithm());
+ pubkey.setAttribute("format", pkey.getFormat());
+ pubkey.setTextContent(ByteUtil.bytesToHex(pkey.getEncoded()));
+ return pubkey;
+ }
+
+ private Element skeyElement(PrivateKey skey) {
+ Element privkey = doc.createElement("privkey");
+ if (skey == null) {
+ return privkey;
+ }
+ privkey.setAttribute("algorithm", skey.getAlgorithm());
+ privkey.setAttribute("format", skey.getFormat());
+ privkey.setTextContent(ByteUtil.bytesToHex(skey.getEncoded()));
+ return privkey;
+ }
+
+ private Element kaElement(KeyAgreementTestable kat) {
+ Element katElem = doc.createElement("key-agreement");
+ katElem.setAttribute("algo", kat.getKa().getAlgorithm());
+
+ Element secret = doc.createElement("secret");
+ secret.setTextContent(ByteUtil.bytesToHex(kat.getSecret()));
+ katElem.appendChild(secret);
+
+ PublicKey pkey = kat.getPublicKey();
+ Element pubkey = pkeyElement(pkey);
+ katElem.appendChild(pubkey);
+
+ PrivateKey skey = kat.getPrivateKey();
+ Element privkey = skeyElement(skey);
+ katElem.appendChild(privkey);
+
+ return katElem;
+ }
+
+ private Element kgtElement(KeyGeneratorTestable kgt) {
+ Element kgtElem = doc.createElement("key-pair-generator");
+ kgtElem.setAttribute("algo", kgt.getKpg().getAlgorithm());
+
+ Element keyPair = doc.createElement("key-pair");
+ if (kgt.getKeyPair() != null) {
+ PublicKey pkey = kgt.getKeyPair().getPublic();
+ Element pubkey = pkeyElement(pkey);
+ keyPair.appendChild(pubkey);
+
+ PrivateKey skey = kgt.getKeyPair().getPrivate();
+ Element privkey = skeyElement(skey);
+ keyPair.appendChild(privkey);
+ }
+
+ kgtElem.appendChild(keyPair);
+ return kgtElem;
+ }
+
+ private Element sigElement(SignatureTestable sig) {
+ Element sigElem = doc.createElement("signature");
+ sigElem.setAttribute("verified", sig.getVerified() ? "true" : "false");
+ sigElem.setAttribute("algo", sig.getSig().getAlgorithm());
+
+ Element raw = doc.createElement("raw");
+ raw.setTextContent(ByteUtil.bytesToHex(sig.getSignature()));
+ sigElem.appendChild(raw);
+
+ return sigElem;
+ }
+
+ @Override
+ protected Element testableElement(Testable t) {
+ Element result = doc.createElement("test");
+ if (t instanceof KeyGeneratorTestable) {
+ result.setAttribute("type", "key-pair-generator");
+ result.appendChild(kgtElement((KeyGeneratorTestable) t));
+ } else if (t instanceof KeyAgreementTestable) {
+ result.setAttribute("type", "key-agreement");
+ result.appendChild(kaElement((KeyAgreementTestable) t));
+ } else if (t instanceof SignatureTestable) {
+ result.setAttribute("type", "signature");
+ result.appendChild(sigElement((SignatureTestable) t));
+ }
+ return result;
+ }
+
+ @Override
+ protected Element deviceElement(TestSuite suite) {
+ //TODO
+ return null;
+ }
+}
diff --git a/src/cz/crcs/ectester/standalone/output/YAMLTestWriter.java b/src/cz/crcs/ectester/standalone/output/YAMLTestWriter.java
new file mode 100644
index 0000000..dfc6813
--- /dev/null
+++ b/src/cz/crcs/ectester/standalone/output/YAMLTestWriter.java
@@ -0,0 +1,98 @@
+package cz.crcs.ectester.standalone.output;
+
+import cz.crcs.ectester.common.output.BaseYAMLTestWriter;
+import cz.crcs.ectester.common.test.TestSuite;
+import cz.crcs.ectester.common.test.Testable;
+import cz.crcs.ectester.common.util.ByteUtil;
+import cz.crcs.ectester.standalone.test.KeyAgreementTestable;
+import cz.crcs.ectester.standalone.test.KeyGeneratorTestable;
+import cz.crcs.ectester.standalone.test.SignatureTestable;
+
+import java.io.PrintStream;
+import java.security.Key;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class YAMLTestWriter extends BaseYAMLTestWriter {
+ public YAMLTestWriter(PrintStream output) {
+ super(output);
+ }
+
+ private Map<String, Object> keyObject(Key key) {
+ Map<String, Object> kObject = new HashMap<>();
+ if (key == null) {
+ return kObject;
+ }
+ kObject.put("algo", key.getAlgorithm());
+ kObject.put("format", key.getFormat());
+ kObject.put("raw", ByteUtil.bytesToHex(key.getEncoded()));
+ return kObject;
+ }
+
+ private Map<String, Object> kaObject(KeyAgreementTestable kat) {
+ Map<String, Object> katObject = new HashMap<>();
+ katObject.put("algo", kat.getKa().getAlgorithm());
+ katObject.put("secret", ByteUtil.bytesToHex(kat.getSecret()));
+
+ PublicKey pkey = kat.getPublicKey();
+ katObject.put("pubkey", keyObject(pkey));
+
+ PrivateKey skey = kat.getPrivateKey();
+ katObject.put("privkey", keyObject(skey));
+ return katObject;
+ }
+
+ private Map<String, Object> kgtObject(KeyGeneratorTestable kgt) {
+ Map<String, Object> kgtObject = new HashMap<>();
+ kgtObject.put("algo", kgt.getKpg().getAlgorithm());
+
+ Map<String, Object> keypair = new HashMap<>();
+ if (kgt.getKeyPair() != null) {
+ PublicKey pkey = kgt.getKeyPair().getPublic();
+ Map<String, Object> pubObject = keyObject(pkey);
+ keypair.put("pubkey", pubObject);
+
+ PrivateKey skey = kgt.getKeyPair().getPrivate();
+ Map<String, Object> privObject = keyObject(skey);
+ keypair.put("privkey", privObject);
+ }
+
+ kgtObject.put("keypair", keypair);
+ return kgtObject;
+ }
+
+ private Map<String, Object> sigObject(SignatureTestable sig) {
+ Map<String, Object> sigObject = new HashMap<>();
+ sigObject.put("algo", sig.getSig().getAlgorithm());
+ sigObject.put("verified", sig.getVerified());
+ sigObject.put("raw", ByteUtil.bytesToHex(sig.getSignature()));
+ return sigObject;
+ }
+
+ @Override
+ protected Map<String, Object> testableObject(Testable t) {
+ Map<String, Object> result = new HashMap<>();
+ if (t instanceof KeyGeneratorTestable) {
+ result.put("type", "key-pair-generator");
+ result.put("key-pair-generator", kgtObject((KeyGeneratorTestable) t));
+ } else if (t instanceof KeyAgreementTestable) {
+ result.put("type", "key-agreement");
+ result.put("key-agreement", kaObject((KeyAgreementTestable) t));
+ } else if (t instanceof SignatureTestable) {
+ result.put("type", "signature");
+ result.put("signature", sigObject((SignatureTestable) t));
+ }
+ return result;
+ }
+
+ @Override
+ protected Map<String, Object> deviceObject(TestSuite suite) {
+ //TODO
+ return null;
+ }
+}