diff options
| author | J08nY | 2018-08-11 21:52:48 +0200 |
|---|---|---|
| committer | J08nY | 2018-08-11 22:03:39 +0200 |
| commit | b6d6766fef9b73db70bda8b6b398128ba5a41ab2 (patch) | |
| tree | a470e36aa69cb9e778070b175e9223432244f210 /src/cz/crcs/ectester/common | |
| parent | 1284516b6630250a3fc4a2bf8d23e15fede5a77b (diff) | |
| download | ECTester-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.java | 21 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/common/ec/EC_SigResult.java | 65 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/common/util/CardUtil.java | 17 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/common/util/ECUtil.java | 4 |
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); + } } |
