From 9a7b92adf94c63f93c18d579090f980f572720de Mon Sep 17 00:00:00 2001 From: J08nY Date: Fri, 25 May 2018 20:48:33 +0200 Subject: Add the edge-cases test suite. --- src/cz/crcs/ectester/common/ec/EC_Params.java | 2 +- src/cz/crcs/ectester/common/util/CardUtil.java | 10 +- src/cz/crcs/ectester/data/EC_Store.java | 31 +- src/cz/crcs/ectester/data/schema.xsd | 7 +- src/cz/crcs/ectester/data/wycheproof/keys.xml | 272 +++++----- src/cz/crcs/ectester/data/wycheproof/results.xml | 589 +++++++++++++++++++++ src/cz/crcs/ectester/reader/ECTesterReader.java | 7 +- .../ectester/reader/test/CardCofactorSuite.java | 2 +- .../reader/test/CardDegenerateCurvesSuite.java | 2 +- .../ectester/reader/test/CardEdgeCasesSuite.java | 102 ++++ .../reader/test/CardInvalidCurvesSuite.java | 2 +- .../ectester/reader/test/CardTwistTestSuite.java | 2 +- 12 files changed, 876 insertions(+), 152 deletions(-) create mode 100644 src/cz/crcs/ectester/data/wycheproof/results.xml create mode 100644 src/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java diff --git a/src/cz/crcs/ectester/common/ec/EC_Params.java b/src/cz/crcs/ectester/common/ec/EC_Params.java index 1c066e7..ef3019d 100644 --- a/src/cz/crcs/ectester/common/ec/EC_Params.java +++ b/src/cz/crcs/ectester/common/ec/EC_Params.java @@ -189,6 +189,6 @@ public class EC_Params extends EC_Data { } paramMask = (short) (paramMask << 1); } - return out.toArray(new String[out.size()]); + return out.toArray(new String[0]); } } diff --git a/src/cz/crcs/ectester/common/util/CardUtil.java b/src/cz/crcs/ectester/common/util/CardUtil.java index 85a4a35..26fdb78 100644 --- a/src/cz/crcs/ectester/common/util/CardUtil.java +++ b/src/cz/crcs/ectester/common/util/CardUtil.java @@ -14,11 +14,17 @@ public class CardUtil { public static byte getKA(String name) { switch (name) { case "DH": - case "ECDH": return EC_Consts.KeyAgreement_ALG_EC_SVDP_DH; case "DHC": - case "ECDHC": return EC_Consts.KeyAgreement_ALG_EC_SVDP_DHC; + case "DH_PLAIN": + return EC_Consts.KeyAgreement_ALG_EC_SVDP_DH_PLAIN; + case "DHC_PLAIN": + return EC_Consts.KeyAgreement_ALG_EC_SVDP_DHC_PLAIN; + case "PACE_GM": + return EC_Consts.KeyAgreement_ALG_EC_PACE_GM; + case "DH_PLAIN_XY": + return EC_Consts.KeyAgreement_ALG_EC_SVDP_DH_PLAIN_XY; default: return EC_Consts.KeyAgreement_ALG_EC_SVDP_DH; } diff --git a/src/cz/crcs/ectester/data/EC_Store.java b/src/cz/crcs/ectester/data/EC_Store.java index 63a0275..d2c8224 100644 --- a/src/cz/crcs/ectester/data/EC_Store.java +++ b/src/cz/crcs/ectester/data/EC_Store.java @@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.function.Function; /** * @author Jan Jancar johny@neuromancer.sk @@ -318,12 +319,12 @@ public class EC_Store { return getObject(objClass, query.substring(0, split), query.substring(split + 1)); } - public static List>> mapToCurve(Collection keys) { + private static List>> mapKeyToCurve(Collection data, Function getter) { Map> curves = new TreeMap<>(); - for (T key : keys) { - EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, key.getCurve()); + for (T item : data) { + EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, getter.apply(item)); List curveKeys = curves.getOrDefault(curve, new LinkedList<>()); - curveKeys.add(key); + curveKeys.add(item); curves.putIfAbsent(curve, curveKeys); } List>> curveList = new LinkedList<>(); @@ -333,6 +334,28 @@ public class EC_Store { return curveList; } + public static List>> mapKeyToCurve(Collection keys) { + return mapKeyToCurve(keys, EC_Key::getCurve); + } + + public static List>> mapResultToCurve(Collection results) { + return mapKeyToCurve(results, EC_KAResult::getCurve); + } + + public static List>> mapToPrefix(Collection data) { + Map> groups = new TreeMap<>(); + for (T item : data) { + String prefix = item.getId().split("/")[0]; + List group = groups.getOrDefault(prefix, new LinkedList<>()); + group.add(item); + groups.putIfAbsent(prefix, group); + } + List>> result = new LinkedList<>(); + result.addAll(groups.entrySet()); + result.sort(Comparator.comparing(Map.Entry::getKey)); + return result; + } + public static EC_Store getInstance() { if (instance == null) { instance = new EC_Store(); diff --git a/src/cz/crcs/ectester/data/schema.xsd b/src/cz/crcs/ectester/data/schema.xsd index 2fe7892..85e8107 100644 --- a/src/cz/crcs/ectester/data/schema.xsd +++ b/src/cz/crcs/ectester/data/schema.xsd @@ -61,10 +61,11 @@ - - - + + + + diff --git a/src/cz/crcs/ectester/data/wycheproof/keys.xml b/src/cz/crcs/ectester/data/wycheproof/keys.xml index e219eb7..46cd697 100644 --- a/src/cz/crcs/ectester/data/wycheproof/keys.xml +++ b/src/cz/crcs/ectester/data/wycheproof/keys.xml @@ -4,845 +4,845 @@ category="wycheproof" desc=""> - wycheproof/addsub/secp224r1/1s + addsub/secp224r1/1s 0x0ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c29b7 secg/secp224r1 tcId = 34 - wycheproof/addsub/secp224r1/1w + addsub/secp224r1/1w 0x478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac230,0x2e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504 secg/secp224r1 tcId = 34 - wycheproof/addsub/secp224r1/2s + addsub/secp224r1/2s 0x0ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a37 secg/secp224r1 tcId = 35 - wycheproof/addsub/secp224r1/2w + addsub/secp224r1/2w 0x478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac230,0x2e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504 secg/secp224r1 tcId = 35 - wycheproof/addsub/secp224r1/3s + addsub/secp224r1/3s 0x0ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3b secg/secp224r1 tcId = 37 - wycheproof/addsub/secp224r1/3w + addsub/secp224r1/3w 0x478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac230,0x2e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504 secg/secp224r1 tcId = 37 - wycheproof/addsub/secp256r1/1s + addsub/secp256r1/1s 0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f3 secg/secp256r1 tcId = 106 - wycheproof/addsub/secp256r1/1w + addsub/secp256r1/1w 0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b secg/secp256r1 tcId = 106 - wycheproof/addsub/secp256r1/2s + addsub/secp256r1/2s 0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632533 secg/secp256r1 tcId = 107 - wycheproof/addsub/secp256r1/2w + addsub/secp256r1/2w 0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b secg/secp256r1 tcId = 107 - wycheproof/addsub/secp256r1/3s + addsub/secp256r1/3s 0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632543 secg/secp256r1 tcId = 108 - wycheproof/addsub/secp256r1/3w + addsub/secp256r1/3w 0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b secg/secp256r1 tcId = 108 - wycheproof/addsub/secp256r1/4s + addsub/secp256r1/4s 0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254b secg/secp256r1 tcId = 109 - wycheproof/addsub/secp256r1/4w + addsub/secp256r1/4w 0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b secg/secp256r1 tcId = 109 - wycheproof/addsub/secp256r1/5s + addsub/secp256r1/5s 0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f secg/secp256r1 tcId = 111 - wycheproof/addsub/secp256r1/5w + addsub/secp256r1/5w 0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b secg/secp256r1 tcId = 111 - wycheproof/addsub/secp384r1/1s + addsub/secp384r1/1s 0x0ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52959 secg/secp384r1 tcId = 192 - wycheproof/addsub/secp384r1/1w + addsub/secp384r1/1w 0xe9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c0,0x20156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e secg/secp384r1 tcId = 192 - wycheproof/addsub/secp384r1/2s + addsub/secp384r1/2s 0x0ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52969 secg/secp384r1 tcId = 193 - wycheproof/addsub/secp384r1/2w + addsub/secp384r1/2w 0xe9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c0,0x20156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e secg/secp384r1 tcId = 193 - wycheproof/addsub/secp384r1/3s + addsub/secp384r1/3s 0x0ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52971 secg/secp384r1 tcId = 195 - wycheproof/addsub/secp384r1/3w + addsub/secp384r1/3w 0xe9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c0,0x20156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e secg/secp384r1 tcId = 195 - wycheproof/addsub/secp521r1/1s + addsub/secp521r1/1s 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138631b secg/secp521r1 tcId = 273 - wycheproof/addsub/secp521r1/1w + addsub/secp521r1/1w 0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 secg/secp521r1 tcId = 273 - wycheproof/addsub/secp521r1/2s + addsub/secp521r1/2s 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639b secg/secp521r1 tcId = 274 - wycheproof/addsub/secp521r1/2w + addsub/secp521r1/2w 0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 secg/secp521r1 tcId = 274 - wycheproof/addsub/secp521r1/3s + addsub/secp521r1/3s 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863db secg/secp521r1 tcId = 275 - wycheproof/addsub/secp521r1/3w + addsub/secp521r1/3w 0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 secg/secp521r1 tcId = 275 - wycheproof/addsub/secp521r1/4s + addsub/secp521r1/4s 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863fb secg/secp521r1 tcId = 276 - wycheproof/addsub/secp521r1/4w + addsub/secp521r1/4w 0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 secg/secp521r1 tcId = 276 - wycheproof/addsub/secp521r1/5s + addsub/secp521r1/5s 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386403 secg/secp521r1 tcId = 277 - wycheproof/addsub/secp521r1/5w + addsub/secp521r1/5w 0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 secg/secp521r1 tcId = 277 - wycheproof/addsub/secp521r1/6s + addsub/secp521r1/6s 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386407 secg/secp521r1 tcId = 279 - wycheproof/addsub/secp521r1/6w + addsub/secp521r1/6w 0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 secg/secp521r1 tcId = 279 - wycheproof/addsub/secp256k1/1s + addsub/secp256k1/1s 0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd03640c3 secg/secp256k1 tcId = 362 - wycheproof/addsub/secp256k1/1w + addsub/secp256k1/1w 0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b secg/secp256k1 tcId = 362 - wycheproof/addsub/secp256k1/2s + addsub/secp256k1/2s 0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364103 secg/secp256k1 tcId = 363 - wycheproof/addsub/secp256k1/2w + addsub/secp256k1/2w 0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b secg/secp256k1 tcId = 363 - wycheproof/addsub/secp256k1/3s + addsub/secp256k1/3s 0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364123 secg/secp256k1 tcId = 364 - wycheproof/addsub/secp256k1/3w + addsub/secp256k1/3w 0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b secg/secp256k1 tcId = 364 - wycheproof/addsub/secp256k1/4s + addsub/secp256k1/4s 0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364133 secg/secp256k1 tcId = 365 - wycheproof/addsub/secp256k1/4w + addsub/secp256k1/4w 0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b secg/secp256k1 tcId = 365 - wycheproof/addsub/secp256k1/5s + addsub/secp256k1/5s 0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036413b secg/secp256k1 tcId = 366 - wycheproof/addsub/secp256k1/5w + addsub/secp256k1/5w 0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b secg/secp256k1 tcId = 366 - wycheproof/addsub/secp256k1/6s + addsub/secp256k1/6s 0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036413f secg/secp256k1 tcId = 368 - wycheproof/addsub/secp256k1/6w + addsub/secp256k1/6w 0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b secg/secp256k1 tcId = 368 - wycheproof/addsub/brainpoolP224r1/1s + addsub/brainpoolP224r1/1s 0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a792dd brainpool/brainpoolP224r1 tcId = 441 - wycheproof/addsub/brainpoolP224r1/1w + addsub/brainpoolP224r1/1w 0xaaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d126,0x8c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66 brainpool/brainpoolP224r1 tcId = 441 - wycheproof/addsub/brainpoolP224r1/2s + addsub/brainpoolP224r1/2s 0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7935d brainpool/brainpoolP224r1 tcId = 442 - wycheproof/addsub/brainpoolP224r1/2w + addsub/brainpoolP224r1/2w 0xaaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d126,0x8c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66 brainpool/brainpoolP224r1 tcId = 442 - wycheproof/addsub/brainpoolP224r1/3s + addsub/brainpoolP224r1/3s 0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939d brainpool/brainpoolP224r1 tcId = 444 - wycheproof/addsub/brainpoolP224r1/3w + addsub/brainpoolP224r1/3w 0xaaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d126,0x8c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66 brainpool/brainpoolP224r1 tcId = 444 - wycheproof/addsub/brainpoolP256r1/1s + addsub/brainpoolP256r1/1s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974855f5 brainpool/brainpoolP256r1 tcId = 524 - wycheproof/addsub/brainpoolP256r1/1w + addsub/brainpoolP256r1/1w 0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b brainpool/brainpoolP256r1 tcId = 524 - wycheproof/addsub/brainpoolP256r1/2s + addsub/brainpoolP256r1/2s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485675 brainpool/brainpoolP256r1 tcId = 525 - wycheproof/addsub/brainpoolP256r1/2w + addsub/brainpoolP256r1/2w 0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b brainpool/brainpoolP256r1 tcId = 525 - wycheproof/addsub/brainpoolP256r1/3s + addsub/brainpoolP256r1/3s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485695 brainpool/brainpoolP256r1 tcId = 526 - wycheproof/addsub/brainpoolP256r1/3w + addsub/brainpoolP256r1/3w 0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b brainpool/brainpoolP256r1 tcId = 526 - wycheproof/addsub/brainpoolP256r1/4s + addsub/brainpoolP256r1/4s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a5 brainpool/brainpoolP256r1 tcId = 528 - wycheproof/addsub/brainpoolP256r1/4w + addsub/brainpoolP256r1/4w 0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b brainpool/brainpoolP256r1 tcId = 528 - wycheproof/addsub/brainpoolP320r1/1s + addsub/brainpoolP320r1/1s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59233 brainpool/brainpoolP320r1 tcId = 604 - wycheproof/addsub/brainpoolP320r1/1w + addsub/brainpoolP320r1/1w 0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d brainpool/brainpoolP320r1 tcId = 604 - wycheproof/addsub/brainpoolP320r1/2s + addsub/brainpoolP320r1/2s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592b3 brainpool/brainpoolP320r1 tcId = 605 - wycheproof/addsub/brainpoolP320r1/2w + addsub/brainpoolP320r1/2w 0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d brainpool/brainpoolP320r1 tcId = 605 - wycheproof/addsub/brainpoolP320r1/3s + addsub/brainpoolP320r1/3s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592f3 brainpool/brainpoolP320r1 tcId = 606 - wycheproof/addsub/brainpoolP320r1/3w + addsub/brainpoolP320r1/3w 0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d brainpool/brainpoolP320r1 tcId = 606 - wycheproof/addsub/brainpoolP320r1/4s + addsub/brainpoolP320r1/4s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59303 brainpool/brainpoolP320r1 tcId = 607 - wycheproof/addsub/brainpoolP320r1/4w + addsub/brainpoolP320r1/4w 0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d brainpool/brainpoolP320r1 tcId = 607 - wycheproof/addsub/brainpoolP320r1/5s + addsub/brainpoolP320r1/5s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930b brainpool/brainpoolP320r1 tcId = 608 - wycheproof/addsub/brainpoolP320r1/5w + addsub/brainpoolP320r1/5w 0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d brainpool/brainpoolP320r1 tcId = 608 - wycheproof/addsub/brainpoolP320r1/6s + addsub/brainpoolP320r1/6s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930f brainpool/brainpoolP320r1 tcId = 610 - wycheproof/addsub/brainpoolP320r1/6w + addsub/brainpoolP320r1/6w 0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d brainpool/brainpoolP320r1 tcId = 610 - wycheproof/addsub/brainpoolP384r1/1s + addsub/brainpoolP384r1/1s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904652f brainpool/brainpoolP384r1 tcId = 684 - wycheproof/addsub/brainpoolP384r1/1w + addsub/brainpoolP384r1/1w 0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf brainpool/brainpoolP384r1 tcId = 684 - wycheproof/addsub/brainpoolP384r1/2s + addsub/brainpoolP384r1/2s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904654f brainpool/brainpoolP384r1 tcId = 685 - wycheproof/addsub/brainpoolP384r1/2w + addsub/brainpoolP384r1/2w 0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf brainpool/brainpoolP384r1 tcId = 685 - wycheproof/addsub/brainpoolP384r1/3s + addsub/brainpoolP384r1/3s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904655f brainpool/brainpoolP384r1 tcId = 686 - wycheproof/addsub/brainpoolP384r1/3w + addsub/brainpoolP384r1/3w 0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf brainpool/brainpoolP384r1 tcId = 686 - wycheproof/addsub/brainpoolP384r1/4s + addsub/brainpoolP384r1/4s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046563 brainpool/brainpoolP384r1 tcId = 688 - wycheproof/addsub/brainpoolP384r1/4w + addsub/brainpoolP384r1/4w 0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf brainpool/brainpoolP384r1 tcId = 688 - wycheproof/addsub/brainpoolP512r1/1s + addsub/brainpoolP512r1/1s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9003b brainpool/brainpoolP512r1 tcId = 774 - wycheproof/addsub/brainpoolP512r1/1w + addsub/brainpoolP512r1/1w 0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd brainpool/brainpoolP512r1 tcId = 774 - wycheproof/addsub/brainpoolP512r1/2s + addsub/brainpoolP512r1/2s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9005b brainpool/brainpoolP512r1 tcId = 775 - wycheproof/addsub/brainpoolP512r1/2w + addsub/brainpoolP512r1/2w 0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd brainpool/brainpoolP512r1 tcId = 775 - wycheproof/addsub/brainpoolP512r1/3s + addsub/brainpoolP512r1/3s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90063 brainpool/brainpoolP512r1 tcId = 776 - wycheproof/addsub/brainpoolP512r1/3w + addsub/brainpoolP512r1/3w 0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd brainpool/brainpoolP512r1 tcId = 776 - wycheproof/addsub/brainpoolP512r1/4s + addsub/brainpoolP512r1/4s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90067 brainpool/brainpoolP512r1 tcId = 778 - wycheproof/addsub/brainpoolP512r1/4w + addsub/brainpoolP512r1/4w 0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd brainpool/brainpoolP512r1 tcId = 778 - wycheproof/addsub/brainpoolP224t1/1s + addsub/brainpoolP224t1/1s 0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a792dd brainpool/brainpoolP224t1 tcId = 854 - wycheproof/addsub/brainpoolP224t1/1w + addsub/brainpoolP224t1/1w 0x1b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c2,0x6709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1 brainpool/brainpoolP224t1 tcId = 854 - wycheproof/addsub/brainpoolP224t1/2s + addsub/brainpoolP224t1/2s 0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7935d brainpool/brainpoolP224t1 tcId = 855 - wycheproof/addsub/brainpoolP224t1/2w + addsub/brainpoolP224t1/2w 0x1b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c2,0x6709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1 brainpool/brainpoolP224t1 tcId = 855 - wycheproof/addsub/brainpoolP224t1/3s + addsub/brainpoolP224t1/3s 0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939d brainpool/brainpoolP224t1 tcId = 857 - wycheproof/addsub/brainpoolP224t1/3w + addsub/brainpoolP224t1/3w 0x1b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c2,0x6709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1 brainpool/brainpoolP224t1 tcId = 857 - wycheproof/addsub/brainpoolP256t1/1s + addsub/brainpoolP256t1/1s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974855f5 brainpool/brainpoolP256t1 tcId = 935 - wycheproof/addsub/brainpoolP256t1/1w + addsub/brainpoolP256t1/1w 0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 brainpool/brainpoolP256t1 tcId = 935 - wycheproof/addsub/brainpoolP256t1/2s + addsub/brainpoolP256t1/2s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485675 brainpool/brainpoolP256t1 tcId = 936 - wycheproof/addsub/brainpoolP256t1/2w + addsub/brainpoolP256t1/2w 0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 brainpool/brainpoolP256t1 tcId = 936 - wycheproof/addsub/brainpoolP256t1/3s + addsub/brainpoolP256t1/3s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485695 brainpool/brainpoolP256t1 tcId = 937 - wycheproof/addsub/brainpoolP256t1/3w + addsub/brainpoolP256t1/3w 0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 brainpool/brainpoolP256t1 tcId = 937 - wycheproof/addsub/brainpoolP256t1/4s + addsub/brainpoolP256t1/4s 0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a5 brainpool/brainpoolP256t1 tcId = 939 - wycheproof/addsub/brainpoolP256t1/4w + addsub/brainpoolP256t1/4w 0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 brainpool/brainpoolP256t1 tcId = 939 - wycheproof/addsub/brainpoolP320t1/1s + addsub/brainpoolP320t1/1s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59233 brainpool/brainpoolP320t1 tcId = 1015 - wycheproof/addsub/brainpoolP320t1/1w + addsub/brainpoolP320t1/1w 0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd brainpool/brainpoolP320t1 tcId = 1015 - wycheproof/addsub/brainpoolP320t1/2s + addsub/brainpoolP320t1/2s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592b3 brainpool/brainpoolP320t1 tcId = 1016 - wycheproof/addsub/brainpoolP320t1/2w + addsub/brainpoolP320t1/2w 0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd brainpool/brainpoolP320t1 tcId = 1016 - wycheproof/addsub/brainpoolP320t1/3s + addsub/brainpoolP320t1/3s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592f3 brainpool/brainpoolP320t1 tcId = 1017 - wycheproof/addsub/brainpoolP320t1/3w + addsub/brainpoolP320t1/3w 0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd brainpool/brainpoolP320t1 tcId = 1017 - wycheproof/addsub/brainpoolP320t1/4s + addsub/brainpoolP320t1/4s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59303 brainpool/brainpoolP320t1 tcId = 1018 - wycheproof/addsub/brainpoolP320t1/4w + addsub/brainpoolP320t1/4w 0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd brainpool/brainpoolP320t1 tcId = 1018 - wycheproof/addsub/brainpoolP320t1/5s + addsub/brainpoolP320t1/5s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930b brainpool/brainpoolP320t1 tcId = 1019 - wycheproof/addsub/brainpoolP320t1/5w + addsub/brainpoolP320t1/5w 0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd brainpool/brainpoolP320t1 tcId = 1019 - wycheproof/addsub/brainpoolP320t1/6s + addsub/brainpoolP320t1/6s 0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930f brainpool/brainpoolP320t1 tcId = 1021 - wycheproof/addsub/brainpoolP320t1/6w + addsub/brainpoolP320t1/6w 0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd brainpool/brainpoolP320t1 tcId = 1021 - wycheproof/addsub/brainpoolP384t1/1s + addsub/brainpoolP384t1/1s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904652f brainpool/brainpoolP384t1 tcId = 1093 - wycheproof/addsub/brainpoolP384t1/1w + addsub/brainpoolP384t1/1w 0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 brainpool/brainpoolP384t1 tcId = 1093 - wycheproof/addsub/brainpoolP384t1/2s + addsub/brainpoolP384t1/2s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904654f brainpool/brainpoolP384t1 tcId = 1094 - wycheproof/addsub/brainpoolP384t1/2w + addsub/brainpoolP384t1/2w 0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 brainpool/brainpoolP384t1 tcId = 1094 - wycheproof/addsub/brainpoolP384t1/3s + addsub/brainpoolP384t1/3s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904655f brainpool/brainpoolP384t1 tcId = 1095 - wycheproof/addsub/brainpoolP384t1/3w + addsub/brainpoolP384t1/3w 0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 brainpool/brainpoolP384t1 tcId = 1095 - wycheproof/addsub/brainpoolP384t1/4s + addsub/brainpoolP384t1/4s 0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046563 brainpool/brainpoolP384t1 tcId = 1097 - wycheproof/addsub/brainpoolP384t1/4w + addsub/brainpoolP384t1/4w 0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 brainpool/brainpoolP384t1 tcId = 1097 - wycheproof/addsub/brainpoolP512t1/1s + addsub/brainpoolP512t1/1s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9003b brainpool/brainpoolP512t1 tcId = 1185 - wycheproof/addsub/brainpoolP512t1/1w + addsub/brainpoolP512t1/1w 0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed brainpool/brainpoolP512t1 tcId = 1185 - wycheproof/addsub/brainpoolP512t1/2s + addsub/brainpoolP512t1/2s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9005b brainpool/brainpoolP512t1 tcId = 1186 - wycheproof/addsub/brainpoolP512t1/2w + addsub/brainpoolP512t1/2w 0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed brainpool/brainpoolP512t1 tcId = 1186 - wycheproof/addsub/brainpoolP512t1/3s + addsub/brainpoolP512t1/3s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90063 brainpool/brainpoolP512t1 tcId = 1187 - wycheproof/addsub/brainpoolP512t1/3w + addsub/brainpoolP512t1/3w 0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed brainpool/brainpoolP512t1 tcId = 1187 - wycheproof/addsub/brainpoolP512t1/4s + addsub/brainpoolP512t1/4s 0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90067 brainpool/brainpoolP512t1 tcId = 1189 - wycheproof/addsub/brainpoolP512t1/4w + addsub/brainpoolP512t1/4w 0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed brainpool/brainpoolP512t1 @@ -851,26 +851,26 @@ - wycheproof/cve_2017_8932/secp256r1/1s + cve_2017_8932/secp256r1/1s 0x2a265f8bcbdcaf94d58519141e578124cb40d64a501fba9c11847b28965bc737 secg/secp256r1 tcId = 112 - wycheproof/cve_2017_8932/secp256r1/1w + cve_2017_8932/secp256r1/1w 0x023819813ac969847059028ea88a1f30dfbcde03fc791d3a252c6b41211882ea,0xf93e4ae433cc12cf2a43fc0ef26400c0e125508224cdb649380f25479148a4ad secg/secp256r1 tcId = 112 - wycheproof/cve_2017_8932/secp256r1/2s + cve_2017_8932/secp256r1/2s 0x313f72ff9fe811bf573176231b286a3bdb6f1b14e05c40146590727a71c3bccd secg/secp256r1 tcId = 113 - wycheproof/cve_2017_8932/secp256r1/2w + cve_2017_8932/secp256r1/2w 0xcc11887b2d66cbae8f4d306627192522932146b42f01d3c6f92bd5c8ba739b06,0xa2f08a029cd06b46183085bae9248b0ed15b70280c7ef13a457f5af382426031 secg/secp256r1 @@ -879,13 +879,13 @@ - wycheproof/cve_2017_10176/secp521r1/1s + cve_2017_10176/secp521r1/1s 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f7 secg/secp521r1 tcId = 280 - wycheproof/cve_2017_10176/secp521r1/1w + cve_2017_10176/secp521r1/1w 0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66,0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650 secg/secp521r1 diff --git a/src/cz/crcs/ectester/data/wycheproof/results.xml b/src/cz/crcs/ectester/data/wycheproof/results.xml new file mode 100644 index 0000000..5508f4c --- /dev/null +++ b/src/cz/crcs/ectester/data/wycheproof/results.xml @@ -0,0 +1,589 @@ + + + + addsub/secp224r1/1test + DH_PLAIN + 0x475fd96e0eb8cb8f100a5d7fe043a7a6851d1d611da2643a3c6ae708 + secg/secp224r1 + wycheproof/addsub/secp224r1/1s + wycheproof/addsub/secp224r1/1w + + + addsub/secp224r1/2test + DH_PLAIN + 0x41ef931d669d1f57d8bb95a01a92321da74be8c6cbc3bbe0b2e73ebd + secg/secp224r1 + wycheproof/addsub/secp224r1/2s + wycheproof/addsub/secp224r1/2w + + + addsub/secp224r1/3test + DH_PLAIN + 0x11ff15126411299cbd49e2b7542e69e91ef132e2551a16ecfebb23a3 + secg/secp224r1 + wycheproof/addsub/secp224r1/3s + wycheproof/addsub/secp224r1/3w + + + addsub/secp256r1/1test + DH_PLAIN + 0xf7407d61fdf581be4f564621d590ca9b7ba37f31396150f9922f1501da8c83ef + secg/secp256r1 + wycheproof/addsub/secp256r1/1s + wycheproof/addsub/secp256r1/1w + + + addsub/secp256r1/2test + DH_PLAIN + 0x82236fd272208693e0574555ca465c6cc512163486084fa57f5e1bd2e2ccc0b3 + secg/secp256r1 + wycheproof/addsub/secp256r1/2s + wycheproof/addsub/secp256r1/2w + + + addsub/secp256r1/3test + DH_PLAIN + 0x06537149664dba1a9924654cb7f787ed224851b0df25ef53fcf54f8f26cd5f3f + secg/secp256r1 + wycheproof/addsub/secp256r1/3s + wycheproof/addsub/secp256r1/3w + + + addsub/secp256r1/4test + DH_PLAIN + 0xf2b38539bce995d443c7bfeeefadc9e42cc2c89c60bf4e86eac95d51987bd112 + secg/secp256r1 + wycheproof/addsub/secp256r1/4s + wycheproof/addsub/secp256r1/4w + + + addsub/secp256r1/5test + DH_PLAIN + 0x027b013a6f166db655d69d643c127ef8ace175311e667dff2520f5b5c75b7659 + secg/secp256r1 + wycheproof/addsub/secp256r1/5s + wycheproof/addsub/secp256r1/5w + + + addsub/secp384r1/1test + DH_PLAIN + 0x2ecf9dc47e8b07ae61ddbd1680ead02698e9e8469f78d5a28328e48d0c9d7a2ac787e50cba58cc44a32fb1235d2d7027 + + secg/secp384r1 + wycheproof/addsub/secp384r1/1s + wycheproof/addsub/secp384r1/1w + + + addsub/secp384r1/2test + DH_PLAIN + 0x06ee9f55079d3d3c18c683ba33e0d2521be97c4fbf7917bf3b6287d58ffcde2df88842e3f5530b39549ac20974b1b60e + + secg/secp384r1 + wycheproof/addsub/secp384r1/2s + wycheproof/addsub/secp384r1/2w + + + addsub/secp384r1/3test + DH_PLAIN + 0x024c5281487216058270cd1cfe259e948310e4adc263a9edaa4da0bc3f5f8ce8ffc88ae41b2c050bf6dd9c8c66857237 + + secg/secp384r1 + wycheproof/addsub/secp384r1/3s + wycheproof/addsub/secp384r1/3w + + + addsub/secp521r1/1test + DH_PLAIN + + 0x00286cefaaf38ca4c6657eb9b187d8614d51775fd71c1a79b4c0ef1a0d4ce72b6f5b2bc854a4e78283530942a3f4fd2a8586d5ea51513c89d3d29de5de06321e118e + + secg/secp521r1 + wycheproof/addsub/secp521r1/1s + wycheproof/addsub/secp521r1/1w + + + addsub/secp521r1/2test + DH_PLAIN + + 0x014790de14c481f1336fcb7d33a8bf8e23eb594cc48608e9edfe0e326e106b67e7eaa3f04ec9985599178f632a5ee6419e11217060e9fcd5958a43882bf8cd3be6ba + + secg/secp521r1 + wycheproof/addsub/secp521r1/2s + wycheproof/addsub/secp521r1/2w + + + addsub/secp521r1/3test + DH_PLAIN + + 0x01ae775dbc4096a3aea7977b1a0af4b2830ecf9ca927a6247fba4cccb46b3f71d0e7abb8dda72d1c1ee7bb5b875b4773cc8df40f732819c4147da330775d1742ea35 + + secg/secp521r1 + wycheproof/addsub/secp521r1/3s + wycheproof/addsub/secp521r1/3w + + + addsub/secp521r1/4test + DH_PLAIN + + 0x01979fb05e068a12a3f20cfdfb9eaee9f22b356edcc7655383ed38124b86814f86a6f2216a34f3fc2299d403ee42408f95d08c5c6cd11db72cbf299a4a3c2545be25 + + secg/secp521r1 + wycheproof/addsub/secp521r1/4s + wycheproof/addsub/secp521r1/4w + + + addsub/secp521r1/5test + DH_PLAIN + + 0x0197ebe26798bf67f06ff0282773af75115531f41d94c093d87481b76bef707bc222f2d6672f84a00fa20c5ed27027ab4006b68d93ee2151016c9ddbe014346272e2 + + secg/secp521r1 + wycheproof/addsub/secp521r1/5s + wycheproof/addsub/secp521r1/5w + + + addsub/secp521r1/6test + DH_PLAIN + + 0x01c168314cdc85757ade34a52a9e5379ffa5968f084b7e404939a8033a0fc698e26211754b9b2c04cf8a1420abe6e986ef1a238bbb91dd402b72e0ed50a876f1a83e + + secg/secp521r1 + wycheproof/addsub/secp521r1/6s + wycheproof/addsub/secp521r1/6w + + + addsub/secp256k1/1test + DH_PLAIN + 0x09c7337df6c2b35edf3a21382511cc5add1a71a84cbf8d3396a5be548d92fa67 + secg/secp256k1 + wycheproof/addsub/secp256k1/1s + wycheproof/addsub/secp256k1/1w + + + addsub/secp256k1/2test + DH_PLAIN + 0xd16caedd25793666f9e26f5331382106f54095b3d20d40c745b68ca76c0e6983 + secg/secp256k1 + wycheproof/addsub/secp256k1/2s + wycheproof/addsub/secp256k1/2w + + + addsub/secp256k1/3test + DH_PLAIN + 0xb8ae1e21d8b34ce4caffed7167a26868ec80a7d4a6a98b639d4d05cd226504de + secg/secp256k1 + wycheproof/addsub/secp256k1/3s + wycheproof/addsub/secp256k1/3w + + + addsub/secp256k1/4test + DH_PLAIN + 0x02776315fe147a36a4b0987492b6503acdea60f926450e5eddb9f88fc82178d3 + secg/secp256k1 + wycheproof/addsub/secp256k1/4s + wycheproof/addsub/secp256k1/4w + + + addsub/secp256k1/5test + DH_PLAIN + 0x3988c9c7050a28794934e5bd67629b556d97a4858d22812835f4a37dca351943 + secg/secp256k1 + wycheproof/addsub/secp256k1/5s + wycheproof/addsub/secp256k1/5w + + + addsub/secp256k1/6test + DH_PLAIN + 0x4b52257d8b3ba387797fdf7a752f195ddc4f7d76263de61d0d52a5ec14a36cbf + secg/secp256k1 + wycheproof/addsub/secp256k1/6s + wycheproof/addsub/secp256k1/6w + + + addsub/brainpoolP224r1/1test + DH_PLAIN + 0x1be0d59d1f0f3a743ae19c5246099391098f71444223831e16cfa0c5 + brainpool/brainpoolP224r1 + wycheproof/addsub/brainpoolP224r1/1s + wycheproof/addsub/brainpoolP224r1/1w + + + addsub/brainpoolP224r1/2test + DH_PLAIN + 0x7e00a9267243cea4ba7617860b6fcf404e0357d1202d8c85dc5e07d3 + brainpool/brainpoolP224r1 + wycheproof/addsub/brainpoolP224r1/2s + wycheproof/addsub/brainpoolP224r1/2w + + + addsub/brainpoolP224r1/3test + DH_PLAIN + 0xaac6a805f4ce1b6dcc13ec4ed16a889dc4d708f7f6f1e23471338324 + brainpool/brainpoolP224r1 + wycheproof/addsub/brainpoolP224r1/3s + wycheproof/addsub/brainpoolP224r1/3w + + + addsub/brainpoolP256r1/1test + DH_PLAIN + 0x1950b7ce510d4d8648e80c6385a42d005433fc5ca61e2022a1405fe18142c246 + brainpool/brainpoolP256r1 + wycheproof/addsub/brainpoolP256r1/1s + wycheproof/addsub/brainpoolP256r1/1w + + + addsub/brainpoolP256r1/2test + DH_PLAIN + 0x5c05c4d877a0e2af5ffa004c122630bb87157cf346dbeb8ae13017162da208f4 + brainpool/brainpoolP256r1 + wycheproof/addsub/brainpoolP256r1/2s + wycheproof/addsub/brainpoolP256r1/2w + + + addsub/brainpoolP256r1/3test + DH_PLAIN + 0x9639bbd4e22194ce3892a814c82eddbd21dde05cfac20e99396e3d6ef0841f7c + brainpool/brainpoolP256r1 + wycheproof/addsub/brainpoolP256r1/3s + wycheproof/addsub/brainpoolP256r1/3w + + + addsub/brainpoolP256r1/4test + DH_PLAIN + 0x341cbdf61f9dd620ba6873a74804afe30a06b0a113a6916a4104d2d4cc196aec + brainpool/brainpoolP256r1 + wycheproof/addsub/brainpoolP256r1/4s + wycheproof/addsub/brainpoolP256r1/4w + + + addsub/brainpoolP320r1/1test + DH_PLAIN + 0xc0038da858441f559a864dcd6c4558437f9ad091a67c3fda69a9e0cb6f446a8b47ae95edc2f4eade + brainpool/brainpoolP320r1 + wycheproof/addsub/brainpoolP320r1/1s + wycheproof/addsub/brainpoolP320r1/1w + + + addsub/brainpoolP320r1/2test + DH_PLAIN + 0x8258131a80bc9f2b8ba532ef1253ef39dce25e6deb85227c670273521c311dbb9bf1a56dd29107b3 + brainpool/brainpoolP320r1 + wycheproof/addsub/brainpoolP320r1/2s + wycheproof/addsub/brainpoolP320r1/2w + + + addsub/brainpoolP320r1/3test + DH_PLAIN + 0xae752e75684a9adfc6198e6c1ce9249d26743104e8b0bd0417998c62982622ea2fdf6917413d547c + brainpool/brainpoolP320r1 + wycheproof/addsub/brainpoolP320r1/3s + wycheproof/addsub/brainpoolP320r1/3w + + + addsub/brainpoolP320r1/4test + DH_PLAIN + 0x37bfbb637fce27ee80b3af326546303e0bd8af01b72f591830a548609055bda489d9a4e6b5e3f43e + brainpool/brainpoolP320r1 + wycheproof/addsub/brainpoolP320r1/4s + wycheproof/addsub/brainpoolP320r1/4w + + + addsub/brainpoolP320r1/5test + DH_PLAIN + 0x854ce9516e73c6cc8d0d6ce3cdf933541a719578712440f02a86829af1398fcab2bb0949c1d63106 + brainpool/brainpoolP320r1 + wycheproof/addsub/brainpoolP320r1/5s + wycheproof/addsub/brainpoolP320r1/5w + + + addsub/brainpoolP320r1/6test + DH_PLAIN + 0x7dfd07c1cfe70db4772cf9f6bb6b58a10bbc9509e5ce86651d5c395f3544f62d6d8f8109edba441a + brainpool/brainpoolP320r1 + wycheproof/addsub/brainpoolP320r1/6s + wycheproof/addsub/brainpoolP320r1/6w + + + addsub/brainpoolP384r1/1test + DH_PLAIN + 0x3729bcd215b41c658b832686c81362b3485d75b09478c6dde3b5e278564ef4162bdd6ff65afc6e8213bba9b6c54ba1eb + + brainpool/brainpoolP384r1 + wycheproof/addsub/brainpoolP384r1/1s + wycheproof/addsub/brainpoolP384r1/1w + + + addsub/brainpoolP384r1/2test + DH_PLAIN + 0x12ba4622daf1f2f950aad6d54aaab821885a47a98573afea49bc1896041ee9501acef82810f3755ff284e16665bd0f62 + + brainpool/brainpoolP384r1 + wycheproof/addsub/brainpoolP384r1/2s + wycheproof/addsub/brainpoolP384r1/2w + + + addsub/brainpoolP384r1/3test + DH_PLAIN + 0x7fb5398519857f2c17cddd0a9d2c1660ac35b4723e4a049ba5c58c458b742dfa813a5c7175e1c0974b514bfaeb0039f8 + + brainpool/brainpoolP384r1 + wycheproof/addsub/brainpoolP384r1/3s + wycheproof/addsub/brainpoolP384r1/3w + + + addsub/brainpoolP384r1/4test + DH_PLAIN + 0x0f0a1d20ba6a7b2c48154b43870be4890979d9261950736de96c29f371233b1ef94a79c2ab698868f00cea7e912deb94 + + brainpool/brainpoolP384r1 + wycheproof/addsub/brainpoolP384r1/4s + wycheproof/addsub/brainpoolP384r1/4w + + + addsub/brainpoolP512r1/1test + DH_PLAIN + + 0x194871645bbfc309eba92c5613ca7c6aa566fdab45635f656148ec7122d71c825f36852f52722ea949c2572dbb6b894a21f96a05c9bee0df6c6b4faa3197079a + + brainpool/brainpoolP512r1 + wycheproof/addsub/brainpoolP512r1/1s + wycheproof/addsub/brainpoolP512r1/1w + + + addsub/brainpoolP512r1/2test + DH_PLAIN + + 0x3a6e57858d4e61c7ed2cb93c124221210293a345b47f7644910543ac03117f48b0343ddebd2cf9925e3dc5e1ea590739ed2c2372e1146f84fd262ac7d8eebacd + + brainpool/brainpoolP512r1 + wycheproof/addsub/brainpoolP512r1/2s + wycheproof/addsub/brainpoolP512r1/2w + + + addsub/brainpoolP512r1/3test + DH_PLAIN + + 0x8e0a186a51eae08a86fdd476bcfd961d02be74966ce3c2d937c808db518f2ddc4760bfc924af72f85eb188ebc70edde6d12f402735f58b9006f8b8e283ef9fbe + + brainpool/brainpoolP512r1 + wycheproof/addsub/brainpoolP512r1/3s + wycheproof/addsub/brainpoolP512r1/3w + + + addsub/brainpoolP512r1/4test + DH_PLAIN + + 0x300b1d80d9dc5587076b7d850ccd00cf8961f389c4ded60bf910d98f196f67c3839d2197101607612b335871a818d50d8f4bb6163cc839cf41af0b742c7254f4 + + brainpool/brainpoolP512r1 + wycheproof/addsub/brainpoolP512r1/4s + wycheproof/addsub/brainpoolP512r1/4w + + + addsub/brainpoolP224t1/1test + DH_PLAIN + 0x97ded4c2e06b5a13c9109be3fa42dc2ca93a306fdf9e85ac4bb02e22 + brainpool/brainpoolP224t1 + wycheproof/addsub/brainpoolP224t1/1s + wycheproof/addsub/brainpoolP224t1/1w + + + addsub/brainpoolP224t1/2test + DH_PLAIN + 0x686798270c7e188e6ab3e28a10754f965d5d02f33d30d8faf38155f4 + brainpool/brainpoolP224t1 + wycheproof/addsub/brainpoolP224t1/2s + wycheproof/addsub/brainpoolP224t1/2w + + + addsub/brainpoolP224t1/3test + DH_PLAIN + 0xd64f68debaf751d63da1883668822031c69e913cc53b969e5fbae845 + brainpool/brainpoolP224t1 + wycheproof/addsub/brainpoolP224t1/3s + wycheproof/addsub/brainpoolP224t1/3w + + + addsub/brainpoolP256t1/1test + DH_PLAIN + 0x4875ed4b2bc7e7a0cb89d93b359fa72ddaf0377ddeddd33f62ec2450cd80e7cd + brainpool/brainpoolP256t1 + wycheproof/addsub/brainpoolP256t1/1s + wycheproof/addsub/brainpoolP256t1/1w + + + addsub/brainpoolP256t1/2test + DH_PLAIN + 0x315637f94d6776cc3928c1ffbe3c7004aa70b787cc0687faee1da5f9324a36c4 + brainpool/brainpoolP256t1 + wycheproof/addsub/brainpoolP256t1/2s + wycheproof/addsub/brainpoolP256t1/2w + + + addsub/brainpoolP256t1/3test + DH_PLAIN + 0x54d1009ab7d3cb9d4314ea7512f7bc4d916ecd47bc9e491ad4a6d65a40672554 + brainpool/brainpoolP256t1 + wycheproof/addsub/brainpoolP256t1/3s + wycheproof/addsub/brainpoolP256t1/3w + + + addsub/brainpoolP256t1/4test + DH_PLAIN + 0x892923527eb529de963e902641c01701a66cd999d1b665717d7b11cbb5a96f7c + brainpool/brainpoolP256t1 + wycheproof/addsub/brainpoolP256t1/4s + wycheproof/addsub/brainpoolP256t1/4w + + + addsub/brainpoolP320t1/1test + DH_PLAIN + 0x147c9b3b4880f7f6d4eb96f891672cb0d09a6bef15574ab2a43f09ae7f8090cdfa81517e098dac1e + brainpool/brainpoolP320t1 + wycheproof/addsub/brainpoolP320t1/1s + wycheproof/addsub/brainpoolP320t1/1w + + + addsub/brainpoolP320t1/2test + DH_PLAIN + 0x47f4412278edc51ba0635853a82e033b164a68194d4c3e2492017432daaa8c35684c343f701f6b02 + brainpool/brainpoolP320t1 + wycheproof/addsub/brainpoolP320t1/2s + wycheproof/addsub/brainpoolP320t1/2w + + + addsub/brainpoolP320t1/3test + DH_PLAIN + 0xa64c2b075abf446a9ba43f6ffcefda795835ab2e1c4d19bd9c9ede59cd9eaf9c831a520b1e0ce269 + brainpool/brainpoolP320t1 + wycheproof/addsub/brainpoolP320t1/3s + wycheproof/addsub/brainpoolP320t1/3w + + + addsub/brainpoolP320t1/4test + DH_PLAIN + 0xb3b25821ac9b07c614f6fce7f9a1c2325d3cbd51cac82dadeb79037a23bce03b0352407ccd447af8 + brainpool/brainpoolP320t1 + wycheproof/addsub/brainpoolP320t1/4s + wycheproof/addsub/brainpoolP320t1/4w + + + addsub/brainpoolP320t1/5test + DH_PLAIN + 0x594aebd8010757d15f79631af0e481310359e0086e4e988ab5525a9303aaf800cd4ef123ceb68875 + brainpool/brainpoolP320t1 + wycheproof/addsub/brainpoolP320t1/5s + wycheproof/addsub/brainpoolP320t1/5w + + + addsub/brainpoolP320t1/6test + DH_PLAIN + 0xc7e67dc2f64d0e66841777a6f014340b8a63f42024c6cd5ac5e10cec3b02a2d050c2fd8f078a754f + brainpool/brainpoolP320t1 + wycheproof/addsub/brainpoolP320t1/6s + wycheproof/addsub/brainpoolP320t1/6w + + + addsub/brainpoolP384t1/1test + DH_PLAIN + 0x22d772bd2104c3d24b8505b3e7d1f3f00ca2dacb493ca729170854ef2158407a0ffab006153d5cb7781e9cb57cda505f + + brainpool/brainpoolP384t1 + wycheproof/addsub/brainpoolP384t1/1s + wycheproof/addsub/brainpoolP384t1/1w + + + addsub/brainpoolP384t1/2test + DH_PLAIN + 0x2b2c617f8c84713f8440e5e273341d69edf9e6ea2056af38ccfc6ee733a9c11e1f9aa63cb3615d2b3cebe69d8360a2bd + + brainpool/brainpoolP384t1 + wycheproof/addsub/brainpoolP384t1/2s + wycheproof/addsub/brainpoolP384t1/2w + + + addsub/brainpoolP384t1/3test + DH_PLAIN + 0x28518f75e020e00095d47166f7825f1767b6425172decde390c9266764c8b631608dc323b8415c39c9d0b8a24cd337ac + + brainpool/brainpoolP384t1 + wycheproof/addsub/brainpoolP384t1/3s + wycheproof/addsub/brainpoolP384t1/3w + + + addsub/brainpoolP384t1/4test + DH_PLAIN + 0x4424a1b48eba0524e4aa82455e282b35cf0d13d8536fe6c410cd5050f3d4d1739254945a8f580d43ee0245b1df67de56 + + brainpool/brainpoolP384t1 + wycheproof/addsub/brainpoolP384t1/4s + wycheproof/addsub/brainpoolP384t1/4w + + + addsub/brainpoolP512t1/1test + DH_PLAIN + + 0x71f9265fcb0a1a899c5a3c8dc31d2fc3c87955285687e73928aab9c5cc750a83760292d514d4cde457fc8e05bb49eac1fb677ffa5f9dc9fa62e1126a9eded5a4 + + brainpool/brainpoolP512t1 + wycheproof/addsub/brainpoolP512t1/1s + wycheproof/addsub/brainpoolP512t1/1w + + + addsub/brainpoolP512t1/2test + DH_PLAIN + + 0x79cc52b05b942dec984ea1d88675fcff93f87103b58bd0f7153c7b36b205ea39f99e85017e97ba89726d15e7d7fe5eb1525827011b3852e1121753dea15cfbb9 + + brainpool/brainpoolP512t1 + wycheproof/addsub/brainpoolP512t1/2s + wycheproof/addsub/brainpoolP512t1/2w + + + addsub/brainpoolP512t1/3test + DH_PLAIN + + 0x618f57d971efa605cb141993a1149dff87d01c773fb8f2a8db5726eb1703522568cc55abca616dae5727f390c90cfa792d4349856820f2d0b5df7da418328e7f + + brainpool/brainpoolP512t1 + wycheproof/addsub/brainpoolP512t1/3s + wycheproof/addsub/brainpoolP512t1/3w + + + addsub/brainpoolP512t1/4test + DH_PLAIN + + 0x34998a162b0463d81a96dda6c4e256b94ed35f89cb0b69a9af70123bec61b387bb358451e1994d6c29acbec66c50c61f36b66da33782db21521415952b55fa48 + + brainpool/brainpoolP512t1 + wycheproof/addsub/brainpoolP512t1/4s + wycheproof/addsub/brainpoolP512t1/4w + + + cve_2017_10176/secp521r1/1test + DH_PLAIN + + 0x01bc33425e72a12779eacb2edcc5b63d1281f7e86dbc7bf99a7abd0cfe367de4666d6edbb8525bffe5222f0702c3096dec0884ce572f5a15c423fdf44d01dd99c61d + + secg/secp521r1 + wycheproof/cve_2017_10176/secp521r1/1s + wycheproof/cve_2017_10176/secp521r1/1w + + + cve_2017_8932/secp256r1/1test + DH_PLAIN + 0x4d4de80f1534850d261075997e3049321a0864082d24a917863366c0724f5ae3 + secg/secp256r1 + wycheproof/cve_2017_8932/secp256r1/1s + wycheproof/cve_2017_8932/secp256r1/1w + + + cve_2017_8932/secp256r1/2test + DH_PLAIN + 0x831c3f6b5f762d2f461901577af41354ac5f228c2591f84f8a6e51e2e3f17991 + secg/secp256r1 + wycheproof/cve_2017_8932/secp256r1/2s + wycheproof/cve_2017_8932/secp256r1/2w + + \ No newline at end of file diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java index 68bb3d8..9d7df4e 100644 --- a/src/cz/crcs/ectester/reader/ECTesterReader.java +++ b/src/cz/crcs/ectester/reader/ECTesterReader.java @@ -247,7 +247,7 @@ public class ECTesterReader { actions.addOption(Option.builder("ln").longOpt("list-named").desc("Print the list of supported named curves and keys.").hasArg().argName("what").optionalArg(true).build()); actions.addOption(Option.builder("e").longOpt("export").desc("Export the defaut curve parameters of the card(if any).").build()); actions.addOption(Option.builder("g").longOpt("generate").desc("Generate [amount] of EC keys.").hasArg().argName("amount").optionalArg(true).build()); - actions.addOption(Option.builder("t").longOpt("test").desc("Test ECC support. [test_suite]:\n- default:\n- compression:\n- invalid:\n- twist:\n- degenerate:\n- cofactor:\n- wrong:\n- composite:\n- test-vectors:").hasArg().argName("test_suite").optionalArg(true).build()); + actions.addOption(Option.builder("t").longOpt("test").desc("Test ECC support. [test_suite]:\n- default:\n- compression:\n- invalid:\n- twist:\n- degenerate:\n- cofactor:\n- wrong:\n- composite:\n- test-vectors:\n- edge-cases:").hasArg().argName("test_suite").optionalArg(true).build()); actions.addOption(Option.builder("dh").longOpt("ecdh").desc("Do EC KeyAgreement (ECDH...), [count] times.").hasArg().argName("count").optionalArg(true).build()); actions.addOption(Option.builder("dsa").longOpt("ecdsa").desc("Sign data with ECDSA, [count] times.").hasArg().argName("count").optionalArg(true).build()); @@ -441,6 +441,9 @@ public class ECTesterReader { case "cofactor": suite = new CardCofactorSuite(writer, cfg, cardManager); break; + case "edge-cases": + suite = new CardEdgeCasesSuite(writer, cfg, cardManager); + break; default: System.err.println("Unknown test suite."); return; @@ -770,7 +773,7 @@ public class ECTesterReader { } testSuite = cli.getOptionValue("test", "default").toLowerCase(); - String[] tests = new String[]{"default", "composite", "compression", "invalid", "degenerate", "test-vectors", "wrong", "twist", "cofactor"}; + String[] tests = new String[]{"default", "composite", "compression", "invalid", "degenerate", "test-vectors", "wrong", "twist", "cofactor", "edge-cases"}; if (!Arrays.asList(tests).contains(testSuite)) { System.err.println("Unknown test suite " + testSuite + ". Should be one of: " + Arrays.toString(tests)); return false; diff --git a/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java b/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java index aca3371..012e950 100644 --- a/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java @@ -30,7 +30,7 @@ public class CardCofactorSuite extends CardTestSuite { @Override protected void runTests() throws Exception { Map pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "cofactor"); - List>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry> e : curveList) { EC_Curve curve = e.getKey(); List keys = e.getValue(); diff --git a/src/cz/crcs/ectester/reader/test/CardDegenerateCurvesSuite.java b/src/cz/crcs/ectester/reader/test/CardDegenerateCurvesSuite.java index 81c2fbf..217544b 100644 --- a/src/cz/crcs/ectester/reader/test/CardDegenerateCurvesSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardDegenerateCurvesSuite.java @@ -30,7 +30,7 @@ public class CardDegenerateCurvesSuite extends CardTestSuite { @Override protected void runTests() throws Exception { Map pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "degenerate"); - List>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry> e : curveList) { EC_Curve curve = e.getKey(); List keys = e.getValue(); diff --git a/src/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java b/src/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java new file mode 100644 index 0000000..ae18f77 --- /dev/null +++ b/src/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java @@ -0,0 +1,102 @@ +package cz.crcs.ectester.reader.test; + +import cz.crcs.ectester.applet.ECTesterApplet; +import cz.crcs.ectester.applet.EC_Consts; +import cz.crcs.ectester.common.ec.EC_Curve; +import cz.crcs.ectester.common.ec.EC_KAResult; +import cz.crcs.ectester.common.ec.EC_Key; +import cz.crcs.ectester.common.output.TestWriter; +import cz.crcs.ectester.common.test.CompoundTest; +import cz.crcs.ectester.common.test.Result; +import cz.crcs.ectester.common.test.Test; +import cz.crcs.ectester.common.test.TestCallback; +import cz.crcs.ectester.common.util.ByteUtil; +import cz.crcs.ectester.data.EC_Store; +import cz.crcs.ectester.reader.CardMngr; +import cz.crcs.ectester.reader.ECTesterReader; +import cz.crcs.ectester.reader.command.Command; +import cz.crcs.ectester.reader.response.Response; +import javacard.security.CryptoException; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * @author Jan Jancar johny@neuromancer.sk + */ +public class CardEdgeCasesSuite extends CardTestSuite { + public CardEdgeCasesSuite(TestWriter writer, ECTesterReader.Config cfg, CardMngr cardManager) { + super(writer, cfg, cardManager, "edge-cases", "The edge-cases test suite tests various inputs to ECDH which may cause an implementation to achieve a certain edge-case state during ECDH.\n" + + "Some of the data is from the google/Wycheproof project. Tests include CVE-2017-10176 and CVE-2017-8932."); + } + + @Override + protected void runTests() throws Exception { + Map results = EC_Store.getInstance().getObjects(EC_KAResult.class, "wycheproof"); + List>> groupList = EC_Store.mapToPrefix(results.values()); + for (Map.Entry> e : groupList) { + String description = null; + switch (e.getKey()) { + case "addsub": + case "cve_2017_10176": + description = "Tests for CVE-2017-10176."; + break; + case "cve_2017_8932": + description = "Tests for CVE-2017-8932."; + break; + } + + List groupTests = new LinkedList<>(); + List>> curveList = EC_Store.mapResultToCurve(e.getValue()); + for (Map.Entry> c : curveList) { + EC_Curve curve = c.getKey(); + + List curveTests = new LinkedList<>(); + Test allocate = CommandTest.expect(new Command.Allocate(this.card, ECTesterApplet.KEYPAIR_BOTH, curve.getBits(), curve.getField()), Result.ExpectedValue.SUCCESS); + Test set = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), Result.ExpectedValue.SUCCESS); + curveTests.add(allocate); + curveTests.add(set); + + List values = c.getValue(); + for (EC_KAResult value : values) { + String id = value.getId(); + String privkeyId = value.getOneKey(); + String pubkeyId = value.getOtherKey(); + + EC_Key.Private privkey = EC_Store.getInstance().getObject(EC_Key.Private.class, privkeyId); + EC_Key.Public pubkey = EC_Store.getInstance().getObject(EC_Key.Public.class, pubkeyId); + + Test setPrivkey = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.CURVE_external, privkey.getParams(), privkey.flatten()), Result.ExpectedValue.SUCCESS); + Test setPubkey = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_REMOTE, EC_Consts.CURVE_external, pubkey.getParams(), pubkey.flatten()), Result.ExpectedValue.SUCCESS); + Test ecdhPreTest = CommandTest.expect(new Command.ECDH(this.card, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.EXPORT_FALSE, EC_Consts.TRANSFORMATION_NONE, EC_Consts.KeyAgreement_ALG_EC_SVDP_DH), Result.ExpectedValue.SUCCESS); + Test ecdh = CommandTest.function(new Command.ECDH(this.card, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.EXPORT_TRUE, EC_Consts.TRANSFORMATION_NONE, value.getJavaCardKA()), new TestCallback() { + @Override + public Result apply(CommandTestable testable) { + Response.ECDH dh = (Response.ECDH) testable.getResponse(); + if (dh.getSW(0) == CryptoException.NO_SUCH_ALGORITHM) { + return new Result(Result.Value.SUCCESS, "ECDH algorithm unsupported."); + } + if (!dh.successful()) + return new Result(Result.Value.FAILURE, "ECDH was unsuccessful."); + if (!dh.hasSecret()) + return new Result(Result.Value.FAILURE, "ECDH response did not contain the derived secret."); + if (!ByteUtil.compareBytes(dh.getSecret(), 0, value.getData(0), 0, dh.secretLength())) { + int firstDiff = ByteUtil.diffBytes(dh.getSecret(), 0, value.getData(0), 0, dh.secretLength()); + System.err.println(ByteUtil.bytesToHex(dh.getSecret())); + System.err.println(ByteUtil.bytesToHex(value.getData(0))); + return new Result(Result.Value.FAILURE, "ECDH derived secret does not match the test-vector, first difference was at byte " + String.valueOf(firstDiff) + "."); + } + return new Result(Result.Value.SUCCESS); + } + }); + + Test one = CompoundTest.greedyAll(Result.ExpectedValue.SUCCESS, "Test " + id + ".", setPrivkey, setPubkey, ecdhPreTest, ecdh); + curveTests.add(one); + } + groupTests.add(CompoundTest.all(Result.ExpectedValue.SUCCESS, "Tests on " + curve.getId() + ".", curveTests.toArray(new Test[0]))); + } + doTest(CompoundTest.all(Result.ExpectedValue.SUCCESS, description, groupTests.toArray(new Test[0]))); + } + } +} diff --git a/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java b/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java index 8af7c77..3c56110 100644 --- a/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java @@ -32,7 +32,7 @@ public class CardInvalidCurvesSuite extends CardTestSuite { * Try ECDH with invalid public keys of increasing order. */ Map pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "invalid"); - List>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry> e : curveList) { EC_Curve curve = e.getKey(); List keys = e.getValue(); diff --git a/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java b/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java index 4ddd74f..ab8e144 100644 --- a/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java @@ -26,7 +26,7 @@ public class CardTwistTestSuite extends CardTestSuite { @Override protected void runTests() throws Exception { Map pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "twist"); - List>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry> e : curveList) { EC_Curve curve = e.getKey(); List keys = e.getValue(); -- cgit v1.3.1