aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/common
diff options
context:
space:
mode:
authorJ08nY2018-08-11 21:52:48 +0200
committerJ08nY2018-08-11 22:03:39 +0200
commitb6d6766fef9b73db70bda8b6b398128ba5a41ab2 (patch)
treea470e36aa69cb9e778070b175e9223432244f210 /src/cz/crcs/ectester/common
parent1284516b6630250a3fc4a2bf8d23e15fede5a77b (diff)
downloadECTester-b6d6766fef9b73db70bda8b6b398128ba5a41ab2.tar.gz
ECTester-b6d6766fef9b73db70bda8b6b398128ba5a41ab2.tar.zst
ECTester-b6d6766fef9b73db70bda8b6b398128ba5a41ab2.zip
Add various ECDSA tests.
Diffstat (limited to 'src/cz/crcs/ectester/common')
-rw-r--r--src/cz/crcs/ectester/common/ec/EC_Category.java21
-rw-r--r--src/cz/crcs/ectester/common/ec/EC_SigResult.java65
-rw-r--r--src/cz/crcs/ectester/common/util/CardUtil.java17
-rw-r--r--src/cz/crcs/ectester/common/util/ECUtil.java4
4 files changed, 103 insertions, 4 deletions
diff --git a/src/cz/crcs/ectester/common/ec/EC_Category.java b/src/cz/crcs/ectester/common/ec/EC_Category.java
index 9c65f3b..8c58159 100644
--- a/src/cz/crcs/ectester/common/ec/EC_Category.java
+++ b/src/cz/crcs/ectester/common/ec/EC_Category.java
@@ -116,11 +116,24 @@ public class EC_Category {
out.append(System.lineSeparator());
}
- Map<String, EC_KAResult> results = getObjects(EC_KAResult.class);
- size = results.size();
+ Map<String, EC_KAResult> kaResults = getObjects(EC_KAResult.class);
+ size = kaResults.size();
if (size > 0) {
- out.append(Colors.bold("\t\tResults: "));
- for (Map.Entry<String, EC_KAResult> result : results.entrySet()) {
+ out.append(Colors.bold("\t\tResults(KA): "));
+ for (Map.Entry<String, EC_KAResult> result : kaResults.entrySet()) {
+ out.append(result.getKey());
+ size--;
+ if (size > 0)
+ out.append(", ");
+ }
+ out.append(System.lineSeparator());
+ }
+
+ Map<String, EC_SigResult> sigResults = getObjects(EC_SigResult.class);
+ size = sigResults.size();
+ if (size > 0) {
+ out.append(Colors.bold("\t\tResults(SIG): "));
+ for (Map.Entry<String, EC_SigResult> result : sigResults.entrySet()) {
out.append(result.getKey());
size--;
if (size > 0)
diff --git a/src/cz/crcs/ectester/common/ec/EC_SigResult.java b/src/cz/crcs/ectester/common/ec/EC_SigResult.java
new file mode 100644
index 0000000..0595944
--- /dev/null
+++ b/src/cz/crcs/ectester/common/ec/EC_SigResult.java
@@ -0,0 +1,65 @@
+package cz.crcs.ectester.common.ec;
+
+import cz.crcs.ectester.common.util.CardUtil;
+
+/**
+ * A result of EC based Signature operation.
+ *
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class EC_SigResult extends EC_Data {
+ private String sig;
+ private String curve;
+ private String signKey;
+ private String verifyKey;
+
+ private String desc;
+
+ public EC_SigResult(String sig, String curve, String signKey, String verifyKey) {
+ super(1);
+ this.sig = sig;
+ this.curve = curve;
+ this.signKey = signKey;
+ this.verifyKey = verifyKey;
+ }
+
+ public EC_SigResult(String id, String sig, String curve, String signKey, String verifyKey) {
+ this(sig, curve, signKey, verifyKey);
+ this.id = id;
+ }
+
+ public EC_SigResult(String id, String sig, String curve, String signKey, String verifyKey, String desc) {
+ this(id, sig, curve, signKey, verifyKey);
+ this.desc = desc;
+ }
+
+ public String getSig() {
+ return sig;
+ }
+
+ public byte getJavaCardSig() {
+ return CardUtil.getSig(sig);
+ }
+
+ public String getCurve() {
+ return curve;
+ }
+
+ public String getSignKey() {
+ return signKey;
+ }
+
+ public String getVerifyKey() {
+ return verifyKey;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ @Override
+ public String toString() {
+ return "<" + getId() + "> " + sig + " result over " + curve + ", " + signKey + " + " + verifyKey + (desc == null ? "" : ": " + desc) + System.lineSeparator() + super.toString();
+ }
+
+}
diff --git a/src/cz/crcs/ectester/common/util/CardUtil.java b/src/cz/crcs/ectester/common/util/CardUtil.java
index a628d5b..e7b370c 100644
--- a/src/cz/crcs/ectester/common/util/CardUtil.java
+++ b/src/cz/crcs/ectester/common/util/CardUtil.java
@@ -14,6 +14,23 @@ import java.util.List;
* @author Jan Jancar johny@neuromancer.sk
*/
public class CardUtil {
+ public static byte getSig(String name) {
+ switch (name) {
+ case "SHA1":
+ return EC_Consts.Signature_ALG_ECDSA_SHA;
+ case "SHA224":
+ return EC_Consts.Signature_ALG_ECDSA_SHA_224;
+ case "SHA256":
+ return EC_Consts.Signature_ALG_ECDSA_SHA_256;
+ case "SHA384":
+ return EC_Consts.Signature_ALG_ECDSA_SHA_384;
+ case "SHA512":
+ return EC_Consts.Signature_ALG_ECDSA_SHA_512;
+ default:
+ return EC_Consts.Signature_ALG_ECDSA_SHA;
+ }
+ }
+
public static byte getKA(String name) {
switch (name) {
case "DH":
diff --git a/src/cz/crcs/ectester/common/util/ECUtil.java b/src/cz/crcs/ectester/common/util/ECUtil.java
index 3c1f138..6c3ad58 100644
--- a/src/cz/crcs/ectester/common/util/ECUtil.java
+++ b/src/cz/crcs/ectester/common/util/ECUtil.java
@@ -210,4 +210,8 @@ public class ECUtil {
ECPrivateKey privkey = new RawECPrivateKey(toScalar(kp), curve.toSpec());
return new KeyPair(pubkey, privkey);
}
+
+ public static byte[] toDERSignature(byte[] r, byte[] s) {
+ return ByteUtil.concatenate(new byte[]{0x30, (byte) (r.length + s.length + 4), 0x02, (byte) r.length}, r, new byte[]{0x02, (byte) s.length}, s);
+ }
}