diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cz/crcs/ectester/common/ec/EC_Params.java | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/common/util/CardUtil.java | 10 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/EC_Store.java | 31 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/schema.xsd | 7 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/wycheproof/keys.xml | 272 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/wycheproof/results.xml | 589 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/ECTesterReader.java | 7 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/test/CardCofactorSuite.java | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/test/CardDegenerateCurvesSuite.java | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java | 102 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java | 2 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java | 2 |
12 files changed, 876 insertions, 152 deletions
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 <T extends EC_Key> List<Map.Entry<EC_Curve, List<T>>> mapToCurve(Collection<T> keys) { + private static <T extends EC_Data> List<Map.Entry<EC_Curve, List<T>>> mapKeyToCurve(Collection<T> data, Function<T, String> getter) { Map<EC_Curve, List<T>> 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<T> curveKeys = curves.getOrDefault(curve, new LinkedList<>()); - curveKeys.add(key); + curveKeys.add(item); curves.putIfAbsent(curve, curveKeys); } List<Map.Entry<EC_Curve, List<T>>> curveList = new LinkedList<>(); @@ -333,6 +334,28 @@ public class EC_Store { return curveList; } + public static <T extends EC_Key> List<Map.Entry<EC_Curve, List<T>>> mapKeyToCurve(Collection<T> keys) { + return mapKeyToCurve(keys, EC_Key::getCurve); + } + + public static List<Map.Entry<EC_Curve, List<EC_KAResult>>> mapResultToCurve(Collection<EC_KAResult> results) { + return mapKeyToCurve(results, EC_KAResult::getCurve); + } + + public static <T extends EC_Data> List<Map.Entry<String, List<T>>> mapToPrefix(Collection<T> data) { + Map<String, List<T>> groups = new TreeMap<>(); + for (T item : data) { + String prefix = item.getId().split("/")[0]; + List<T> group = groups.getOrDefault(prefix, new LinkedList<>()); + group.add(item); + groups.putIfAbsent(prefix, group); + } + List<Map.Entry<String, List<T>>> 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 @@ <xs:simpleType name="kaType"> <xs:restriction base="xs:string"> <xs:enumeration value="DH"/> - <xs:enumeration value="ECDH"/> <xs:enumeration value="DHC"/> - <xs:enumeration value="ECDHC"/> - <xs:enumeration value="BOTH"/> + <xs:enumeration value="DH_PLAIN"/> + <xs:enumeration value="DHC_PLAIN"/> + <xs:enumeration value="PACE_GM"/> + <xs:enumeration value="DH_PLAIN_XY"/> <xs:enumeration value="ANY"/> </xs:restriction> </xs:simpleType> 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=""> <privkey> - <id>wycheproof/addsub/secp224r1/1s</id> + <id>addsub/secp224r1/1s</id> <inline>0x0ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c29b7</inline> <curve>secg/secp224r1</curve> <desc>tcId = 34</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp224r1/1w</id> + <id>addsub/secp224r1/1w</id> <inline>0x478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac230,0x2e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504</inline> <!-- 304e301006072a8648ce3d020106052b81040021033a0004478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac2302e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504 --> <curve>secg/secp224r1</curve> <desc>tcId = 34</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp224r1/2s</id> + <id>addsub/secp224r1/2s</id> <inline>0x0ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a37</inline> <curve>secg/secp224r1</curve> <desc>tcId = 35</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp224r1/2w</id> + <id>addsub/secp224r1/2w</id> <inline>0x478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac230,0x2e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504</inline> <!-- 304e301006072a8648ce3d020106052b81040021033a0004478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac2302e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504 --> <curve>secg/secp224r1</curve> <desc>tcId = 35</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp224r1/3s</id> + <id>addsub/secp224r1/3s</id> <inline>0x0ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3b</inline> <curve>secg/secp224r1</curve> <desc>tcId = 37</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp224r1/3w</id> + <id>addsub/secp224r1/3w</id> <inline>0x478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac230,0x2e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504</inline> <!-- 304e301006072a8648ce3d020106052b81040021033a0004478e73465bb1183583f4064e67e8b4343af4a05d29dfc04eb60ac2302e5b9a3a1b32e4208d4c284ff26822e09c3a9a4683443e4a35175504 --> <curve>secg/secp224r1</curve> <desc>tcId = 37</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256r1/1s</id> + <id>addsub/secp256r1/1s</id> <inline>0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6324f3</inline> <curve>secg/secp256r1</curve> <desc>tcId = 106</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256r1/1w</id> + <id>addsub/secp256r1/1w</id> <inline>0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b</inline> <!-- 3059301306072a8648ce3d020106082a8648ce3d0301070342000431028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f116744743a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b --> <curve>secg/secp256r1</curve> <desc>tcId = 106</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256r1/2s</id> + <id>addsub/secp256r1/2s</id> <inline>0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632533</inline> <curve>secg/secp256r1</curve> <desc>tcId = 107</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256r1/2w</id> + <id>addsub/secp256r1/2w</id> <inline>0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b</inline> <!-- 3059301306072a8648ce3d020106082a8648ce3d0301070342000431028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f116744743a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b --> <curve>secg/secp256r1</curve> <desc>tcId = 107</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256r1/3s</id> + <id>addsub/secp256r1/3s</id> <inline>0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632543</inline> <curve>secg/secp256r1</curve> <desc>tcId = 108</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256r1/3w</id> + <id>addsub/secp256r1/3w</id> <inline>0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b</inline> <!-- 3059301306072a8648ce3d020106082a8648ce3d0301070342000431028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f116744743a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b --> <curve>secg/secp256r1</curve> <desc>tcId = 108</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256r1/4s</id> + <id>addsub/secp256r1/4s</id> <inline>0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254b</inline> <curve>secg/secp256r1</curve> <desc>tcId = 109</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256r1/4w</id> + <id>addsub/secp256r1/4w</id> <inline>0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b</inline> <!-- 3059301306072a8648ce3d020106082a8648ce3d0301070342000431028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f116744743a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b --> <curve>secg/secp256r1</curve> <desc>tcId = 109</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256r1/5s</id> + <id>addsub/secp256r1/5s</id> <inline>0x0ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f</inline> <curve>secg/secp256r1</curve> <desc>tcId = 111</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256r1/5w</id> + <id>addsub/secp256r1/5w</id> <inline>0x31028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f1167447,0x43a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b</inline> <!-- 3059301306072a8648ce3d020106082a8648ce3d0301070342000431028f3377fc8f2b1967edaab90213acad0da9f50897f08f57537f78f116744743a1930189363bbde2ac4cbd1649cdc6f451add71dd2f16a8a867f2b17caa16b --> <curve>secg/secp256r1</curve> <desc>tcId = 111</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp384r1/1s</id> + <id>addsub/secp384r1/1s</id> <inline>0x0ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52959</inline> <curve>secg/secp384r1</curve> <desc>tcId = 192</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp384r1/1w</id> + <id>addsub/secp384r1/1w</id> <inline>0xe9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c0,0x20156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e</inline> <!-- 3076301006072a8648ce3d020106052b8104002203620004e9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c020156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e --> <curve>secg/secp384r1</curve> <desc>tcId = 192</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp384r1/2s</id> + <id>addsub/secp384r1/2s</id> <inline>0x0ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52969</inline> <curve>secg/secp384r1</curve> <desc>tcId = 193</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp384r1/2w</id> + <id>addsub/secp384r1/2w</id> <inline>0xe9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c0,0x20156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e</inline> <!-- 3076301006072a8648ce3d020106052b8104002203620004e9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c020156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e --> <curve>secg/secp384r1</curve> <desc>tcId = 193</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp384r1/3s</id> + <id>addsub/secp384r1/3s</id> <inline>0x0ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52971</inline> <curve>secg/secp384r1</curve> <desc>tcId = 195</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp384r1/3w</id> + <id>addsub/secp384r1/3w</id> <inline>0xe9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c0,0x20156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e</inline> <!-- 3076301006072a8648ce3d020106052b8104002203620004e9dfaaab808b3aac1ccca7cc6242a7ee583249afe8ee8f66b904cc8eec34ad334456e00f33a94de8b5169cf0199550c020156e9651734ff999c5f3ea62b83d0083a6093f234457251ecf72c41e4df7cea2420b5454a7f690034380bac981e92e --> <curve>secg/secp384r1</curve> <desc>tcId = 195</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp521r1/1s</id> + <id>addsub/secp521r1/1s</id> <inline>0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138631b</inline> <curve>secg/secp521r1</curve> <desc>tcId = 273</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp521r1/1w</id> + <id>addsub/secp521r1/1w</id> <inline>0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314</inline> <!-- 30819b301006072a8648ce3d020106052b81040023038186000401ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b900854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 --> <curve>secg/secp521r1</curve> <desc>tcId = 273</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp521r1/2s</id> + <id>addsub/secp521r1/2s</id> <inline>0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639b</inline> <curve>secg/secp521r1</curve> <desc>tcId = 274</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp521r1/2w</id> + <id>addsub/secp521r1/2w</id> <inline>0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314</inline> <!-- 30819b301006072a8648ce3d020106052b81040023038186000401ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b900854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 --> <curve>secg/secp521r1</curve> <desc>tcId = 274</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp521r1/3s</id> + <id>addsub/secp521r1/3s</id> <inline>0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863db</inline> <curve>secg/secp521r1</curve> <desc>tcId = 275</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp521r1/3w</id> + <id>addsub/secp521r1/3w</id> <inline>0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314</inline> <!-- 30819b301006072a8648ce3d020106052b81040023038186000401ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b900854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 --> <curve>secg/secp521r1</curve> <desc>tcId = 275</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp521r1/4s</id> + <id>addsub/secp521r1/4s</id> <inline>0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863fb</inline> <curve>secg/secp521r1</curve> <desc>tcId = 276</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp521r1/4w</id> + <id>addsub/secp521r1/4w</id> <inline>0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314</inline> <!-- 30819b301006072a8648ce3d020106052b81040023038186000401ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b900854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 --> <curve>secg/secp521r1</curve> <desc>tcId = 276</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp521r1/5s</id> + <id>addsub/secp521r1/5s</id> <inline>0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386403</inline> <curve>secg/secp521r1</curve> <desc>tcId = 277</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp521r1/5w</id> + <id>addsub/secp521r1/5w</id> <inline>0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314</inline> <!-- 30819b301006072a8648ce3d020106052b81040023038186000401ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b900854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 --> <curve>secg/secp521r1</curve> <desc>tcId = 277</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp521r1/6s</id> + <id>addsub/secp521r1/6s</id> <inline>0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386407</inline> <curve>secg/secp521r1</curve> <desc>tcId = 279</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp521r1/6w</id> + <id>addsub/secp521r1/6w</id> <inline>0x01ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b9,0x00854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314</inline> <!-- 30819b301006072a8648ce3d020106052b81040023038186000401ad5043591dbe81657fe3d1c3d7a516606ad9d320a35fce8aaec8a950fb53f95388f3fc48be998e99334ad9e9234cded14471fe86caccaa07d058ee8771733ac3b900854de36366590b9ee4d0370ea6b00f7ebd8156ccf14e99f1a5344a9b4964fbb8348b081a8840c6b64be77997ad8bebfea5e7d9f7a6a7fa6d7655c50b2b7835f314 --> <curve>secg/secp521r1</curve> <desc>tcId = 279</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256k1/1s</id> + <id>addsub/secp256k1/1s</id> <inline>0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd03640c3</inline> <curve>secg/secp256k1</curve> <desc>tcId = 362</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256k1/1w</id> + <id>addsub/secp256k1/1w</id> <inline>0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b</inline> <!-- 3056301006072a8648ce3d020106052b8104000a0342000432bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b --> <curve>secg/secp256k1</curve> <desc>tcId = 362</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256k1/2s</id> + <id>addsub/secp256k1/2s</id> <inline>0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364103</inline> <curve>secg/secp256k1</curve> <desc>tcId = 363</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256k1/2w</id> + <id>addsub/secp256k1/2w</id> <inline>0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b</inline> <!-- 3056301006072a8648ce3d020106052b8104000a0342000432bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b --> <curve>secg/secp256k1</curve> <desc>tcId = 363</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256k1/3s</id> + <id>addsub/secp256k1/3s</id> <inline>0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364123</inline> <curve>secg/secp256k1</curve> <desc>tcId = 364</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256k1/3w</id> + <id>addsub/secp256k1/3w</id> <inline>0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b</inline> <!-- 3056301006072a8648ce3d020106052b8104000a0342000432bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b --> <curve>secg/secp256k1</curve> <desc>tcId = 364</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256k1/4s</id> + <id>addsub/secp256k1/4s</id> <inline>0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364133</inline> <curve>secg/secp256k1</curve> <desc>tcId = 365</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256k1/4w</id> + <id>addsub/secp256k1/4w</id> <inline>0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b</inline> <!-- 3056301006072a8648ce3d020106052b8104000a0342000432bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b --> <curve>secg/secp256k1</curve> <desc>tcId = 365</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256k1/5s</id> + <id>addsub/secp256k1/5s</id> <inline>0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036413b</inline> <curve>secg/secp256k1</curve> <desc>tcId = 366</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256k1/5w</id> + <id>addsub/secp256k1/5w</id> <inline>0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b</inline> <!-- 3056301006072a8648ce3d020106052b8104000a0342000432bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b --> <curve>secg/secp256k1</curve> <desc>tcId = 366</desc> </pubkey> <privkey> - <id>wycheproof/addsub/secp256k1/6s</id> + <id>addsub/secp256k1/6s</id> <inline>0x0fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036413f</inline> <curve>secg/secp256k1</curve> <desc>tcId = 368</desc> </privkey> <pubkey> - <id>wycheproof/addsub/secp256k1/6w</id> + <id>addsub/secp256k1/6w</id> <inline>0x32bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e,0x981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b</inline> <!-- 3056301006072a8648ce3d020106052b8104000a0342000432bdd978eb62b1f369a56d0949ab8551a7ad527d9602e891ce457586c2a8569e981e67fae053b03fc33e1a291f0a3beb58fceb2e85bb1205dacee1232dfd316b --> <curve>secg/secp256k1</curve> <desc>tcId = 368</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP224r1/1s</id> + <id>addsub/brainpoolP224r1/1s</id> <inline>0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a792dd</inline> <curve>brainpool/brainpoolP224r1</curve> <desc>tcId = 441</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP224r1/1w</id> + <id>addsub/brainpoolP224r1/1w</id> <inline>0xaaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d126,0x8c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66</inline> <!-- 3052301406072a8648ce3d020106092b2403030208010105033a0004aaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d1268c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66 --> <curve>brainpool/brainpoolP224r1</curve> <desc>tcId = 441</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP224r1/2s</id> + <id>addsub/brainpoolP224r1/2s</id> <inline>0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7935d</inline> <curve>brainpool/brainpoolP224r1</curve> <desc>tcId = 442</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP224r1/2w</id> + <id>addsub/brainpoolP224r1/2w</id> <inline>0xaaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d126,0x8c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66</inline> <!-- 3052301406072a8648ce3d020106092b2403030208010105033a0004aaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d1268c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66 --> <curve>brainpool/brainpoolP224r1</curve> <desc>tcId = 442</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP224r1/3s</id> + <id>addsub/brainpoolP224r1/3s</id> <inline>0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939d</inline> <curve>brainpool/brainpoolP224r1</curve> <desc>tcId = 444</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP224r1/3w</id> + <id>addsub/brainpoolP224r1/3w</id> <inline>0xaaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d126,0x8c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66</inline> <!-- 3052301406072a8648ce3d020106092b2403030208010105033a0004aaf040d6cad2c18b953de46420b387fa83474d74c6767ed708b9d1268c82a09310bc35b5caf2d9b46318b895e4c097ed501d2dcb14d30a66 --> <curve>brainpool/brainpoolP224r1</curve> <desc>tcId = 444</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256r1/1s</id> + <id>addsub/brainpoolP256r1/1s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974855f5</inline> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 524</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256r1/1w</id> + <id>addsub/brainpoolP256r1/1w</id> <inline>0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b</inline> <!-- 305a301406072a8648ce3d020106092b240303020801010703420004a4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b377d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b --> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 524</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256r1/2s</id> + <id>addsub/brainpoolP256r1/2s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485675</inline> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 525</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256r1/2w</id> + <id>addsub/brainpoolP256r1/2w</id> <inline>0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b</inline> <!-- 305a301406072a8648ce3d020106092b240303020801010703420004a4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b377d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b --> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 525</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256r1/3s</id> + <id>addsub/brainpoolP256r1/3s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485695</inline> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 526</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256r1/3w</id> + <id>addsub/brainpoolP256r1/3w</id> <inline>0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b</inline> <!-- 305a301406072a8648ce3d020106092b240303020801010703420004a4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b377d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b --> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 526</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256r1/4s</id> + <id>addsub/brainpoolP256r1/4s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a5</inline> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 528</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256r1/4w</id> + <id>addsub/brainpoolP256r1/4w</id> <inline>0xa4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b3,0x77d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b</inline> <!-- 305a301406072a8648ce3d020106092b240303020801010703420004a4597cfee2797aaace662caa92a444592c9f626f04beca98a06b6dfcaf53f4b377d67b1c109154309bcf3d2f3928e58747806f08a8cf88436ac1b2110b83493b --> <curve>brainpool/brainpoolP256r1</curve> <desc>tcId = 528</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320r1/1s</id> + <id>addsub/brainpoolP320r1/1s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59233</inline> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 604</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320r1/1w</id> + <id>addsub/brainpoolP320r1/1w</id> <inline>0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d</inline> <!-- 306a301406072a8648ce3d020106092b2403030208010109035200044e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfed230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d --> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 604</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320r1/2s</id> + <id>addsub/brainpoolP320r1/2s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592b3</inline> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 605</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320r1/2w</id> + <id>addsub/brainpoolP320r1/2w</id> <inline>0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d</inline> <!-- 306a301406072a8648ce3d020106092b2403030208010109035200044e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfed230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d --> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 605</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320r1/3s</id> + <id>addsub/brainpoolP320r1/3s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592f3</inline> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 606</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320r1/3w</id> + <id>addsub/brainpoolP320r1/3w</id> <inline>0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d</inline> <!-- 306a301406072a8648ce3d020106092b2403030208010109035200044e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfed230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d --> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 606</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320r1/4s</id> + <id>addsub/brainpoolP320r1/4s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59303</inline> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 607</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320r1/4w</id> + <id>addsub/brainpoolP320r1/4w</id> <inline>0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d</inline> <!-- 306a301406072a8648ce3d020106092b2403030208010109035200044e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfed230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d --> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 607</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320r1/5s</id> + <id>addsub/brainpoolP320r1/5s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930b</inline> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 608</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320r1/5w</id> + <id>addsub/brainpoolP320r1/5w</id> <inline>0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d</inline> <!-- 306a301406072a8648ce3d020106092b2403030208010109035200044e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfed230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d --> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 608</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320r1/6s</id> + <id>addsub/brainpoolP320r1/6s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930f</inline> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 610</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320r1/6w</id> + <id>addsub/brainpoolP320r1/6w</id> <inline>0x4e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfe,0xd230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d</inline> <!-- 306a301406072a8648ce3d020106092b2403030208010109035200044e73d59ec474e679414d0922de22e06d0dad990ba4746c3d026bdea52e7bbeaac928d0ddaab29dfed230dde60fd57d4ef8e935b23cb7d4216b278b17a3f02d70454fa0e45da2054b91b0c4b663ab243d --> <curve>brainpool/brainpoolP320r1</curve> <desc>tcId = 610</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384r1/1s</id> + <id>addsub/brainpoolP384r1/1s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904652f</inline> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 684</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384r1/1w</id> + <id>addsub/brainpoolP384r1/1w</id> <inline>0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010b0362000409d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf --> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 684</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384r1/2s</id> + <id>addsub/brainpoolP384r1/2s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904654f</inline> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 685</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384r1/2w</id> + <id>addsub/brainpoolP384r1/2w</id> <inline>0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010b0362000409d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf --> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 685</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384r1/3s</id> + <id>addsub/brainpoolP384r1/3s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904655f</inline> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 686</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384r1/3w</id> + <id>addsub/brainpoolP384r1/3w</id> <inline>0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010b0362000409d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf --> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 686</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384r1/4s</id> + <id>addsub/brainpoolP384r1/4s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046563</inline> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 688</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384r1/4w</id> + <id>addsub/brainpoolP384r1/4w</id> <inline>0x09d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf,0x03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010b0362000409d897b6d1452a2f91c4c37fbb06d82f9ebf722298cafb135e582cded3e3210033e4cd07703c34acf36ba72b401c30bf03b161af6e11309a1122145c431996047a7e7808cf8314b6ec37c61a817d08c7d00c8c7b5d258f2674378c832f682edf --> <curve>brainpool/brainpoolP384r1</curve> <desc>tcId = 688</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512r1/1s</id> + <id>addsub/brainpoolP512r1/1s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9003b</inline> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 774</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512r1/1w</id> + <id>addsub/brainpoolP512r1/1w</id> <inline>0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010d03818200042ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd --> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 774</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512r1/2s</id> + <id>addsub/brainpoolP512r1/2s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9005b</inline> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 775</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512r1/2w</id> + <id>addsub/brainpoolP512r1/2w</id> <inline>0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010d03818200042ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd --> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 775</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512r1/3s</id> + <id>addsub/brainpoolP512r1/3s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90063</inline> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 776</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512r1/3w</id> + <id>addsub/brainpoolP512r1/3w</id> <inline>0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010d03818200042ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd --> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 776</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512r1/4s</id> + <id>addsub/brainpoolP512r1/4s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90067</inline> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 778</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512r1/4w</id> + <id>addsub/brainpoolP512r1/4w</id> <inline>0x2ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc,0x99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010d03818200042ee402777200a1c9e7eceb61feb070af49429f9240d7c0bab9b2f01c5ee145683df47cbe852ff6f99198f6fdfaef1925eb96bd25e03d6d70f709eb1922308acc99a3fbc1e982db7a7b3bbf7827ea70912ee677bb0ba70bfabec38d4b993af165c40727680fe79ad0fbb55d1e9568d978b11f77cc4e72aa7ca5c391034078b8bd --> <curve>brainpool/brainpoolP512r1</curve> <desc>tcId = 778</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP224t1/1s</id> + <id>addsub/brainpoolP224t1/1s</id> <inline>0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a792dd</inline> <curve>brainpool/brainpoolP224t1</curve> <desc>tcId = 854</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP224t1/1w</id> + <id>addsub/brainpoolP224t1/1w</id> <inline>0x1b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c2,0x6709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1</inline> <!-- 3052301406072a8648ce3d020106092b2403030208010106033a00041b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c26709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1 --> <curve>brainpool/brainpoolP224t1</curve> <desc>tcId = 854</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP224t1/2s</id> + <id>addsub/brainpoolP224t1/2s</id> <inline>0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7935d</inline> <curve>brainpool/brainpoolP224t1</curve> <desc>tcId = 855</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP224t1/2w</id> + <id>addsub/brainpoolP224t1/2w</id> <inline>0x1b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c2,0x6709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1</inline> <!-- 3052301406072a8648ce3d020106092b2403030208010106033a00041b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c26709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1 --> <curve>brainpool/brainpoolP224t1</curve> <desc>tcId = 855</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP224t1/3s</id> + <id>addsub/brainpoolP224t1/3s</id> <inline>0x0d7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939d</inline> <curve>brainpool/brainpoolP224t1</curve> <desc>tcId = 857</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP224t1/3w</id> + <id>addsub/brainpoolP224t1/3w</id> <inline>0x1b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c2,0x6709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1</inline> <!-- 3052301406072a8648ce3d020106092b2403030208010106033a00041b801b9b969daaddbc40876ef79201c5dd8e480f003a043e818862c26709e1b2f6d8826ae4257a5db46b78848091c56a54577248185936b1 --> <curve>brainpool/brainpoolP224t1</curve> <desc>tcId = 857</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256t1/1s</id> + <id>addsub/brainpoolP256t1/1s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974855f5</inline> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 935</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256t1/1w</id> + <id>addsub/brainpoolP256t1/1w</id> <inline>0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245</inline> <!-- 305a301406072a8648ce3d020106092b2403030208010108034200042053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 --> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 935</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256t1/2s</id> + <id>addsub/brainpoolP256t1/2s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485675</inline> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 936</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256t1/2w</id> + <id>addsub/brainpoolP256t1/2w</id> <inline>0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245</inline> <!-- 305a301406072a8648ce3d020106092b2403030208010108034200042053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 --> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 936</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256t1/3s</id> + <id>addsub/brainpoolP256t1/3s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e8297485695</inline> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 937</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256t1/3w</id> + <id>addsub/brainpoolP256t1/3w</id> <inline>0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245</inline> <!-- 305a301406072a8648ce3d020106092b2403030208010108034200042053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 --> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 937</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP256t1/4s</id> + <id>addsub/brainpoolP256t1/4s</id> <inline>0x0a9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a5</inline> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 939</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP256t1/4w</id> + <id>addsub/brainpoolP256t1/4w</id> <inline>0x2053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b,0x02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245</inline> <!-- 305a301406072a8648ce3d020106092b2403030208010108034200042053bf936c82599d38aef8ec650f502ad9dce3be818d32de66009a3137604f5b02317c894b1138b873b612714c95527021b4240edd45ad26ee96d507954c3245 --> <curve>brainpool/brainpoolP256t1</curve> <desc>tcId = 939</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320t1/1s</id> + <id>addsub/brainpoolP320t1/1s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59233</inline> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1015</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320t1/1w</id> + <id>addsub/brainpoolP320t1/1w</id> <inline>0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd</inline> <!-- 306a301406072a8648ce3d020106092b240303020801010a03520004aac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b972253955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd --> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1015</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320t1/2s</id> + <id>addsub/brainpoolP320t1/2s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592b3</inline> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1016</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320t1/2w</id> + <id>addsub/brainpoolP320t1/2w</id> <inline>0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd</inline> <!-- 306a301406072a8648ce3d020106092b240303020801010a03520004aac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b972253955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd --> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1016</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320t1/3s</id> + <id>addsub/brainpoolP320t1/3s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c592f3</inline> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1017</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320t1/3w</id> + <id>addsub/brainpoolP320t1/3w</id> <inline>0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd</inline> <!-- 306a301406072a8648ce3d020106092b240303020801010a03520004aac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b972253955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd --> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1017</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320t1/4s</id> + <id>addsub/brainpoolP320t1/4s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59303</inline> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1018</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320t1/4w</id> + <id>addsub/brainpoolP320t1/4w</id> <inline>0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd</inline> <!-- 306a301406072a8648ce3d020106092b240303020801010a03520004aac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b972253955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd --> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1018</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320t1/5s</id> + <id>addsub/brainpoolP320t1/5s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930b</inline> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1019</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320t1/5w</id> + <id>addsub/brainpoolP320t1/5w</id> <inline>0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd</inline> <!-- 306a301406072a8648ce3d020106092b240303020801010a03520004aac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b972253955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd --> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1019</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP320t1/6s</id> + <id>addsub/brainpoolP320t1/6s</id> <inline>0x0d35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c5930f</inline> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1021</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP320t1/6w</id> + <id>addsub/brainpoolP320t1/6w</id> <inline>0xaac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b97225,0x3955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd</inline> <!-- 306a301406072a8648ce3d020106092b240303020801010a03520004aac3566c8e494d7d52976b107a9b9058e65e541c01dab5d4bba90658a655890fd2c48d29f0b972253955fdbd31c6328df2e893fe5b401ddc529c4ed70a9c46badb80843277b8f9874538312460d54dfd --> <curve>brainpool/brainpoolP320t1</curve> <desc>tcId = 1021</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384t1/1s</id> + <id>addsub/brainpoolP384t1/1s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904652f</inline> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1093</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384t1/1w</id> + <id>addsub/brainpoolP384t1/1w</id> <inline>0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010c036200041e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 --> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1093</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384t1/2s</id> + <id>addsub/brainpoolP384t1/2s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904654f</inline> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1094</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384t1/2w</id> + <id>addsub/brainpoolP384t1/2w</id> <inline>0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010c036200041e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 --> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1094</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384t1/3s</id> + <id>addsub/brainpoolP384t1/3s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e904655f</inline> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1095</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384t1/3w</id> + <id>addsub/brainpoolP384t1/3w</id> <inline>0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010c036200041e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 --> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1095</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP384t1/4s</id> + <id>addsub/brainpoolP384t1/4s</id> <inline>0x08cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046563</inline> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1097</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP384t1/4w</id> + <id>addsub/brainpoolP384t1/4w</id> <inline>0x1e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf,0x88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71</inline> <!-- 307a301406072a8648ce3d020106092b240303020801010c036200041e6c405358fab0f63c09eddacc372dd29c17d0eebcffe37975ee3c6bf05c7b8db09f104fcf6cc1a0576c44c12637b4bf88938d33d2d9390c1075f3af467937074db4022a44e2ea2e9cbff6bfcb4af4909fbb8bd3ab627e1dd1649d5faec28a71 --> <curve>brainpool/brainpoolP384t1</curve> <desc>tcId = 1097</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512t1/1s</id> + <id>addsub/brainpoolP512t1/1s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9003b</inline> <curve>brainpool/brainpoolP512t1</curve> <desc>tcId = 1185</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512t1/1w</id> + <id>addsub/brainpoolP512t1/1w</id> <inline>0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010e0381820004242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd0793d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed --> <curve>brainpool/brainpoolP512t1</curve> <desc>tcId = 1185</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512t1/2s</id> + <id>addsub/brainpoolP512t1/2s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca9005b</inline> <curve>brainpool/brainpoolP512t1</curve> <desc>tcId = 1186</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512t1/2w</id> + <id>addsub/brainpoolP512t1/2w</id> <inline>0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010e0381820004242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd0793d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed --> <curve>brainpool/brainpoolP512t1</curve> <desc>tcId = 1186</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512t1/3s</id> + <id>addsub/brainpoolP512t1/3s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90063</inline> <curve>brainpool/brainpoolP512t1</curve> <desc>tcId = 1187</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512t1/3w</id> + <id>addsub/brainpoolP512t1/3w</id> <inline>0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010e0381820004242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd0793d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed --> <curve>brainpool/brainpoolP512t1</curve> <desc>tcId = 1187</desc> </pubkey> <privkey> - <id>wycheproof/addsub/brainpoolP512t1/4s</id> + <id>addsub/brainpoolP512t1/4s</id> <inline>0x0aadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90067</inline> <curve>brainpool/brainpoolP512t1</curve> <desc>tcId = 1189</desc> </privkey> <pubkey> - <id>wycheproof/addsub/brainpoolP512t1/4w</id> + <id>addsub/brainpoolP512t1/4w</id> <inline>0x242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd079,0x3d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed</inline> <!-- 30819b301406072a8648ce3d020106092b240303020801010e0381820004242748b1fa44edac413a79ee1cdcc3d4bab5fa125d4d692208ac52764377b84fe3472dbe8f292572f1f3dbf3e927624d983d5c0f4bfca5224dc0739889ddd0793d1f2089639992a74a3c1783d2f1bd50f85ad77540adfa78b1a6581bcd74b3ef0dd996be2809ed16434c42b3a29cb81b1a39720cede1b640f018788afa61cbed --> <curve>brainpool/brainpoolP512t1</curve> @@ -851,26 +851,26 @@ <!-- CVE-2017-8932 tests --> <privkey> - <id>wycheproof/cve_2017_8932/secp256r1/1s</id> + <id>cve_2017_8932/secp256r1/1s</id> <inline>0x2a265f8bcbdcaf94d58519141e578124cb40d64a501fba9c11847b28965bc737</inline> <curve>secg/secp256r1</curve> <desc>tcId = 112</desc> </privkey> <pubkey> - <id>wycheproof/cve_2017_8932/secp256r1/1w</id> + <id>cve_2017_8932/secp256r1/1w</id> <inline>0x023819813ac969847059028ea88a1f30dfbcde03fc791d3a252c6b41211882ea,0xf93e4ae433cc12cf2a43fc0ef26400c0e125508224cdb649380f25479148a4ad</inline> <!-- 3059301306072a8648ce3d020106082a8648ce3d03010703420004023819813ac969847059028ea88a1f30dfbcde03fc791d3a252c6b41211882eaf93e4ae433cc12cf2a43fc0ef26400c0e125508224cdb649380f25479148a4ad --> <curve>secg/secp256r1</curve> <desc>tcId = 112</desc> </pubkey> <privkey> - <id>wycheproof/cve_2017_8932/secp256r1/2s</id> + <id>cve_2017_8932/secp256r1/2s</id> <inline>0x313f72ff9fe811bf573176231b286a3bdb6f1b14e05c40146590727a71c3bccd</inline> <curve>secg/secp256r1</curve> <desc>tcId = 113</desc> </privkey> <pubkey> - <id>wycheproof/cve_2017_8932/secp256r1/2w</id> + <id>cve_2017_8932/secp256r1/2w</id> <inline>0xcc11887b2d66cbae8f4d306627192522932146b42f01d3c6f92bd5c8ba739b06,0xa2f08a029cd06b46183085bae9248b0ed15b70280c7ef13a457f5af382426031</inline> <!-- 3059301306072a8648ce3d020106082a8648ce3d03010703420004cc11887b2d66cbae8f4d306627192522932146b42f01d3c6f92bd5c8ba739b06a2f08a029cd06b46183085bae9248b0ed15b70280c7ef13a457f5af382426031 --> <curve>secg/secp256r1</curve> @@ -879,13 +879,13 @@ <!-- CVE-2017-10176 tests --> <privkey> - <id>wycheproof/cve_2017_10176/secp521r1/1s</id> + <id>cve_2017_10176/secp521r1/1s</id> <inline>0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f7</inline> <curve>secg/secp521r1</curve> <desc>tcId = 280</desc> </privkey> <pubkey> - <id>wycheproof/cve_2017_10176/secp521r1/1w</id> + <id>cve_2017_10176/secp521r1/1w</id> <inline>0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66,0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650</inline> <!-- 30819b301006072a8648ce3d020106052b81040023038186000400c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650 --> <curve>secg/secp521r1</curve> 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 @@ +<?xml version="1.0" encoding="utf-8" ?> +<results xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../schema.xsd"> + <result> + <id>addsub/secp224r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x475fd96e0eb8cb8f100a5d7fe043a7a6851d1d611da2643a3c6ae708</inline> + <curve>secg/secp224r1</curve> + <onekey>wycheproof/addsub/secp224r1/1s</onekey> + <otherkey>wycheproof/addsub/secp224r1/1w</otherkey> + </result> + <result> + <id>addsub/secp224r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x41ef931d669d1f57d8bb95a01a92321da74be8c6cbc3bbe0b2e73ebd</inline> + <curve>secg/secp224r1</curve> + <onekey>wycheproof/addsub/secp224r1/2s</onekey> + <otherkey>wycheproof/addsub/secp224r1/2w</otherkey> + </result> + <result> + <id>addsub/secp224r1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0x11ff15126411299cbd49e2b7542e69e91ef132e2551a16ecfebb23a3</inline> + <curve>secg/secp224r1</curve> + <onekey>wycheproof/addsub/secp224r1/3s</onekey> + <otherkey>wycheproof/addsub/secp224r1/3w</otherkey> + </result> + <result> + <id>addsub/secp256r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0xf7407d61fdf581be4f564621d590ca9b7ba37f31396150f9922f1501da8c83ef</inline> + <curve>secg/secp256r1</curve> + <onekey>wycheproof/addsub/secp256r1/1s</onekey> + <otherkey>wycheproof/addsub/secp256r1/1w</otherkey> + </result> + <result> + <id>addsub/secp256r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x82236fd272208693e0574555ca465c6cc512163486084fa57f5e1bd2e2ccc0b3</inline> + <curve>secg/secp256r1</curve> + <onekey>wycheproof/addsub/secp256r1/2s</onekey> + <otherkey>wycheproof/addsub/secp256r1/2w</otherkey> + </result> + <result> + <id>addsub/secp256r1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0x06537149664dba1a9924654cb7f787ed224851b0df25ef53fcf54f8f26cd5f3f</inline> + <curve>secg/secp256r1</curve> + <onekey>wycheproof/addsub/secp256r1/3s</onekey> + <otherkey>wycheproof/addsub/secp256r1/3w</otherkey> + </result> + <result> + <id>addsub/secp256r1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0xf2b38539bce995d443c7bfeeefadc9e42cc2c89c60bf4e86eac95d51987bd112</inline> + <curve>secg/secp256r1</curve> + <onekey>wycheproof/addsub/secp256r1/4s</onekey> + <otherkey>wycheproof/addsub/secp256r1/4w</otherkey> + </result> + <result> + <id>addsub/secp256r1/5test</id> + <ka>DH_PLAIN</ka> + <inline>0x027b013a6f166db655d69d643c127ef8ace175311e667dff2520f5b5c75b7659</inline> + <curve>secg/secp256r1</curve> + <onekey>wycheproof/addsub/secp256r1/5s</onekey> + <otherkey>wycheproof/addsub/secp256r1/5w</otherkey> + </result> + <result> + <id>addsub/secp384r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x2ecf9dc47e8b07ae61ddbd1680ead02698e9e8469f78d5a28328e48d0c9d7a2ac787e50cba58cc44a32fb1235d2d7027 + </inline> + <curve>secg/secp384r1</curve> + <onekey>wycheproof/addsub/secp384r1/1s</onekey> + <otherkey>wycheproof/addsub/secp384r1/1w</otherkey> + </result> + <result> + <id>addsub/secp384r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x06ee9f55079d3d3c18c683ba33e0d2521be97c4fbf7917bf3b6287d58ffcde2df88842e3f5530b39549ac20974b1b60e + </inline> + <curve>secg/secp384r1</curve> + <onekey>wycheproof/addsub/secp384r1/2s</onekey> + <otherkey>wycheproof/addsub/secp384r1/2w</otherkey> + </result> + <result> + <id>addsub/secp384r1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0x024c5281487216058270cd1cfe259e948310e4adc263a9edaa4da0bc3f5f8ce8ffc88ae41b2c050bf6dd9c8c66857237 + </inline> + <curve>secg/secp384r1</curve> + <onekey>wycheproof/addsub/secp384r1/3s</onekey> + <otherkey>wycheproof/addsub/secp384r1/3w</otherkey> + </result> + <result> + <id>addsub/secp521r1/1test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x00286cefaaf38ca4c6657eb9b187d8614d51775fd71c1a79b4c0ef1a0d4ce72b6f5b2bc854a4e78283530942a3f4fd2a8586d5ea51513c89d3d29de5de06321e118e + </inline> + <curve>secg/secp521r1</curve> + <onekey>wycheproof/addsub/secp521r1/1s</onekey> + <otherkey>wycheproof/addsub/secp521r1/1w</otherkey> + </result> + <result> + <id>addsub/secp521r1/2test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x014790de14c481f1336fcb7d33a8bf8e23eb594cc48608e9edfe0e326e106b67e7eaa3f04ec9985599178f632a5ee6419e11217060e9fcd5958a43882bf8cd3be6ba + </inline> + <curve>secg/secp521r1</curve> + <onekey>wycheproof/addsub/secp521r1/2s</onekey> + <otherkey>wycheproof/addsub/secp521r1/2w</otherkey> + </result> + <result> + <id>addsub/secp521r1/3test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x01ae775dbc4096a3aea7977b1a0af4b2830ecf9ca927a6247fba4cccb46b3f71d0e7abb8dda72d1c1ee7bb5b875b4773cc8df40f732819c4147da330775d1742ea35 + </inline> + <curve>secg/secp521r1</curve> + <onekey>wycheproof/addsub/secp521r1/3s</onekey> + <otherkey>wycheproof/addsub/secp521r1/3w</otherkey> + </result> + <result> + <id>addsub/secp521r1/4test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x01979fb05e068a12a3f20cfdfb9eaee9f22b356edcc7655383ed38124b86814f86a6f2216a34f3fc2299d403ee42408f95d08c5c6cd11db72cbf299a4a3c2545be25 + </inline> + <curve>secg/secp521r1</curve> + <onekey>wycheproof/addsub/secp521r1/4s</onekey> + <otherkey>wycheproof/addsub/secp521r1/4w</otherkey> + </result> + <result> + <id>addsub/secp521r1/5test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x0197ebe26798bf67f06ff0282773af75115531f41d94c093d87481b76bef707bc222f2d6672f84a00fa20c5ed27027ab4006b68d93ee2151016c9ddbe014346272e2 + </inline> + <curve>secg/secp521r1</curve> + <onekey>wycheproof/addsub/secp521r1/5s</onekey> + <otherkey>wycheproof/addsub/secp521r1/5w</otherkey> + </result> + <result> + <id>addsub/secp521r1/6test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x01c168314cdc85757ade34a52a9e5379ffa5968f084b7e404939a8033a0fc698e26211754b9b2c04cf8a1420abe6e986ef1a238bbb91dd402b72e0ed50a876f1a83e + </inline> + <curve>secg/secp521r1</curve> + <onekey>wycheproof/addsub/secp521r1/6s</onekey> + <otherkey>wycheproof/addsub/secp521r1/6w</otherkey> + </result> + <result> + <id>addsub/secp256k1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x09c7337df6c2b35edf3a21382511cc5add1a71a84cbf8d3396a5be548d92fa67</inline> + <curve>secg/secp256k1</curve> + <onekey>wycheproof/addsub/secp256k1/1s</onekey> + <otherkey>wycheproof/addsub/secp256k1/1w</otherkey> + </result> + <result> + <id>addsub/secp256k1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0xd16caedd25793666f9e26f5331382106f54095b3d20d40c745b68ca76c0e6983</inline> + <curve>secg/secp256k1</curve> + <onekey>wycheproof/addsub/secp256k1/2s</onekey> + <otherkey>wycheproof/addsub/secp256k1/2w</otherkey> + </result> + <result> + <id>addsub/secp256k1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0xb8ae1e21d8b34ce4caffed7167a26868ec80a7d4a6a98b639d4d05cd226504de</inline> + <curve>secg/secp256k1</curve> + <onekey>wycheproof/addsub/secp256k1/3s</onekey> + <otherkey>wycheproof/addsub/secp256k1/3w</otherkey> + </result> + <result> + <id>addsub/secp256k1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0x02776315fe147a36a4b0987492b6503acdea60f926450e5eddb9f88fc82178d3</inline> + <curve>secg/secp256k1</curve> + <onekey>wycheproof/addsub/secp256k1/4s</onekey> + <otherkey>wycheproof/addsub/secp256k1/4w</otherkey> + </result> + <result> + <id>addsub/secp256k1/5test</id> + <ka>DH_PLAIN</ka> + <inline>0x3988c9c7050a28794934e5bd67629b556d97a4858d22812835f4a37dca351943</inline> + <curve>secg/secp256k1</curve> + <onekey>wycheproof/addsub/secp256k1/5s</onekey> + <otherkey>wycheproof/addsub/secp256k1/5w</otherkey> + </result> + <result> + <id>addsub/secp256k1/6test</id> + <ka>DH_PLAIN</ka> + <inline>0x4b52257d8b3ba387797fdf7a752f195ddc4f7d76263de61d0d52a5ec14a36cbf</inline> + <curve>secg/secp256k1</curve> + <onekey>wycheproof/addsub/secp256k1/6s</onekey> + <otherkey>wycheproof/addsub/secp256k1/6w</otherkey> + </result> + <result> + <id>addsub/brainpoolP224r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x1be0d59d1f0f3a743ae19c5246099391098f71444223831e16cfa0c5</inline> + <curve>brainpool/brainpoolP224r1</curve> + <onekey>wycheproof/addsub/brainpoolP224r1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP224r1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP224r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x7e00a9267243cea4ba7617860b6fcf404e0357d1202d8c85dc5e07d3</inline> + <curve>brainpool/brainpoolP224r1</curve> + <onekey>wycheproof/addsub/brainpoolP224r1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP224r1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP224r1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0xaac6a805f4ce1b6dcc13ec4ed16a889dc4d708f7f6f1e23471338324</inline> + <curve>brainpool/brainpoolP224r1</curve> + <onekey>wycheproof/addsub/brainpoolP224r1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP224r1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x1950b7ce510d4d8648e80c6385a42d005433fc5ca61e2022a1405fe18142c246</inline> + <curve>brainpool/brainpoolP256r1</curve> + <onekey>wycheproof/addsub/brainpoolP256r1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256r1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x5c05c4d877a0e2af5ffa004c122630bb87157cf346dbeb8ae13017162da208f4</inline> + <curve>brainpool/brainpoolP256r1</curve> + <onekey>wycheproof/addsub/brainpoolP256r1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256r1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256r1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0x9639bbd4e22194ce3892a814c82eddbd21dde05cfac20e99396e3d6ef0841f7c</inline> + <curve>brainpool/brainpoolP256r1</curve> + <onekey>wycheproof/addsub/brainpoolP256r1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256r1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256r1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0x341cbdf61f9dd620ba6873a74804afe30a06b0a113a6916a4104d2d4cc196aec</inline> + <curve>brainpool/brainpoolP256r1</curve> + <onekey>wycheproof/addsub/brainpoolP256r1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256r1/4w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0xc0038da858441f559a864dcd6c4558437f9ad091a67c3fda69a9e0cb6f446a8b47ae95edc2f4eade</inline> + <curve>brainpool/brainpoolP320r1</curve> + <onekey>wycheproof/addsub/brainpoolP320r1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320r1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x8258131a80bc9f2b8ba532ef1253ef39dce25e6deb85227c670273521c311dbb9bf1a56dd29107b3</inline> + <curve>brainpool/brainpoolP320r1</curve> + <onekey>wycheproof/addsub/brainpoolP320r1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320r1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320r1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0xae752e75684a9adfc6198e6c1ce9249d26743104e8b0bd0417998c62982622ea2fdf6917413d547c</inline> + <curve>brainpool/brainpoolP320r1</curve> + <onekey>wycheproof/addsub/brainpoolP320r1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320r1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320r1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0x37bfbb637fce27ee80b3af326546303e0bd8af01b72f591830a548609055bda489d9a4e6b5e3f43e</inline> + <curve>brainpool/brainpoolP320r1</curve> + <onekey>wycheproof/addsub/brainpoolP320r1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320r1/4w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320r1/5test</id> + <ka>DH_PLAIN</ka> + <inline>0x854ce9516e73c6cc8d0d6ce3cdf933541a719578712440f02a86829af1398fcab2bb0949c1d63106</inline> + <curve>brainpool/brainpoolP320r1</curve> + <onekey>wycheproof/addsub/brainpoolP320r1/5s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320r1/5w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320r1/6test</id> + <ka>DH_PLAIN</ka> + <inline>0x7dfd07c1cfe70db4772cf9f6bb6b58a10bbc9509e5ce86651d5c395f3544f62d6d8f8109edba441a</inline> + <curve>brainpool/brainpoolP320r1</curve> + <onekey>wycheproof/addsub/brainpoolP320r1/6s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320r1/6w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x3729bcd215b41c658b832686c81362b3485d75b09478c6dde3b5e278564ef4162bdd6ff65afc6e8213bba9b6c54ba1eb + </inline> + <curve>brainpool/brainpoolP384r1</curve> + <onekey>wycheproof/addsub/brainpoolP384r1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384r1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x12ba4622daf1f2f950aad6d54aaab821885a47a98573afea49bc1896041ee9501acef82810f3755ff284e16665bd0f62 + </inline> + <curve>brainpool/brainpoolP384r1</curve> + <onekey>wycheproof/addsub/brainpoolP384r1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384r1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384r1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0x7fb5398519857f2c17cddd0a9d2c1660ac35b4723e4a049ba5c58c458b742dfa813a5c7175e1c0974b514bfaeb0039f8 + </inline> + <curve>brainpool/brainpoolP384r1</curve> + <onekey>wycheproof/addsub/brainpoolP384r1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384r1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384r1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0x0f0a1d20ba6a7b2c48154b43870be4890979d9261950736de96c29f371233b1ef94a79c2ab698868f00cea7e912deb94 + </inline> + <curve>brainpool/brainpoolP384r1</curve> + <onekey>wycheproof/addsub/brainpoolP384r1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384r1/4w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512r1/1test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x194871645bbfc309eba92c5613ca7c6aa566fdab45635f656148ec7122d71c825f36852f52722ea949c2572dbb6b894a21f96a05c9bee0df6c6b4faa3197079a + </inline> + <curve>brainpool/brainpoolP512r1</curve> + <onekey>wycheproof/addsub/brainpoolP512r1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512r1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512r1/2test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x3a6e57858d4e61c7ed2cb93c124221210293a345b47f7644910543ac03117f48b0343ddebd2cf9925e3dc5e1ea590739ed2c2372e1146f84fd262ac7d8eebacd + </inline> + <curve>brainpool/brainpoolP512r1</curve> + <onekey>wycheproof/addsub/brainpoolP512r1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512r1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512r1/3test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x8e0a186a51eae08a86fdd476bcfd961d02be74966ce3c2d937c808db518f2ddc4760bfc924af72f85eb188ebc70edde6d12f402735f58b9006f8b8e283ef9fbe + </inline> + <curve>brainpool/brainpoolP512r1</curve> + <onekey>wycheproof/addsub/brainpoolP512r1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512r1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512r1/4test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x300b1d80d9dc5587076b7d850ccd00cf8961f389c4ded60bf910d98f196f67c3839d2197101607612b335871a818d50d8f4bb6163cc839cf41af0b742c7254f4 + </inline> + <curve>brainpool/brainpoolP512r1</curve> + <onekey>wycheproof/addsub/brainpoolP512r1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512r1/4w</otherkey> + </result> + <result> + <id>addsub/brainpoolP224t1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x97ded4c2e06b5a13c9109be3fa42dc2ca93a306fdf9e85ac4bb02e22</inline> + <curve>brainpool/brainpoolP224t1</curve> + <onekey>wycheproof/addsub/brainpoolP224t1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP224t1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP224t1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x686798270c7e188e6ab3e28a10754f965d5d02f33d30d8faf38155f4</inline> + <curve>brainpool/brainpoolP224t1</curve> + <onekey>wycheproof/addsub/brainpoolP224t1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP224t1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP224t1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0xd64f68debaf751d63da1883668822031c69e913cc53b969e5fbae845</inline> + <curve>brainpool/brainpoolP224t1</curve> + <onekey>wycheproof/addsub/brainpoolP224t1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP224t1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256t1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x4875ed4b2bc7e7a0cb89d93b359fa72ddaf0377ddeddd33f62ec2450cd80e7cd</inline> + <curve>brainpool/brainpoolP256t1</curve> + <onekey>wycheproof/addsub/brainpoolP256t1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256t1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256t1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x315637f94d6776cc3928c1ffbe3c7004aa70b787cc0687faee1da5f9324a36c4</inline> + <curve>brainpool/brainpoolP256t1</curve> + <onekey>wycheproof/addsub/brainpoolP256t1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256t1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256t1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0x54d1009ab7d3cb9d4314ea7512f7bc4d916ecd47bc9e491ad4a6d65a40672554</inline> + <curve>brainpool/brainpoolP256t1</curve> + <onekey>wycheproof/addsub/brainpoolP256t1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256t1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP256t1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0x892923527eb529de963e902641c01701a66cd999d1b665717d7b11cbb5a96f7c</inline> + <curve>brainpool/brainpoolP256t1</curve> + <onekey>wycheproof/addsub/brainpoolP256t1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP256t1/4w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320t1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x147c9b3b4880f7f6d4eb96f891672cb0d09a6bef15574ab2a43f09ae7f8090cdfa81517e098dac1e</inline> + <curve>brainpool/brainpoolP320t1</curve> + <onekey>wycheproof/addsub/brainpoolP320t1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320t1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320t1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x47f4412278edc51ba0635853a82e033b164a68194d4c3e2492017432daaa8c35684c343f701f6b02</inline> + <curve>brainpool/brainpoolP320t1</curve> + <onekey>wycheproof/addsub/brainpoolP320t1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320t1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320t1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0xa64c2b075abf446a9ba43f6ffcefda795835ab2e1c4d19bd9c9ede59cd9eaf9c831a520b1e0ce269</inline> + <curve>brainpool/brainpoolP320t1</curve> + <onekey>wycheproof/addsub/brainpoolP320t1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320t1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320t1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0xb3b25821ac9b07c614f6fce7f9a1c2325d3cbd51cac82dadeb79037a23bce03b0352407ccd447af8</inline> + <curve>brainpool/brainpoolP320t1</curve> + <onekey>wycheproof/addsub/brainpoolP320t1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320t1/4w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320t1/5test</id> + <ka>DH_PLAIN</ka> + <inline>0x594aebd8010757d15f79631af0e481310359e0086e4e988ab5525a9303aaf800cd4ef123ceb68875</inline> + <curve>brainpool/brainpoolP320t1</curve> + <onekey>wycheproof/addsub/brainpoolP320t1/5s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320t1/5w</otherkey> + </result> + <result> + <id>addsub/brainpoolP320t1/6test</id> + <ka>DH_PLAIN</ka> + <inline>0xc7e67dc2f64d0e66841777a6f014340b8a63f42024c6cd5ac5e10cec3b02a2d050c2fd8f078a754f</inline> + <curve>brainpool/brainpoolP320t1</curve> + <onekey>wycheproof/addsub/brainpoolP320t1/6s</onekey> + <otherkey>wycheproof/addsub/brainpoolP320t1/6w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384t1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x22d772bd2104c3d24b8505b3e7d1f3f00ca2dacb493ca729170854ef2158407a0ffab006153d5cb7781e9cb57cda505f + </inline> + <curve>brainpool/brainpoolP384t1</curve> + <onekey>wycheproof/addsub/brainpoolP384t1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384t1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384t1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x2b2c617f8c84713f8440e5e273341d69edf9e6ea2056af38ccfc6ee733a9c11e1f9aa63cb3615d2b3cebe69d8360a2bd + </inline> + <curve>brainpool/brainpoolP384t1</curve> + <onekey>wycheproof/addsub/brainpoolP384t1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384t1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384t1/3test</id> + <ka>DH_PLAIN</ka> + <inline>0x28518f75e020e00095d47166f7825f1767b6425172decde390c9266764c8b631608dc323b8415c39c9d0b8a24cd337ac + </inline> + <curve>brainpool/brainpoolP384t1</curve> + <onekey>wycheproof/addsub/brainpoolP384t1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384t1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP384t1/4test</id> + <ka>DH_PLAIN</ka> + <inline>0x4424a1b48eba0524e4aa82455e282b35cf0d13d8536fe6c410cd5050f3d4d1739254945a8f580d43ee0245b1df67de56 + </inline> + <curve>brainpool/brainpoolP384t1</curve> + <onekey>wycheproof/addsub/brainpoolP384t1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP384t1/4w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512t1/1test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x71f9265fcb0a1a899c5a3c8dc31d2fc3c87955285687e73928aab9c5cc750a83760292d514d4cde457fc8e05bb49eac1fb677ffa5f9dc9fa62e1126a9eded5a4 + </inline> + <curve>brainpool/brainpoolP512t1</curve> + <onekey>wycheproof/addsub/brainpoolP512t1/1s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512t1/1w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512t1/2test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x79cc52b05b942dec984ea1d88675fcff93f87103b58bd0f7153c7b36b205ea39f99e85017e97ba89726d15e7d7fe5eb1525827011b3852e1121753dea15cfbb9 + </inline> + <curve>brainpool/brainpoolP512t1</curve> + <onekey>wycheproof/addsub/brainpoolP512t1/2s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512t1/2w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512t1/3test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x618f57d971efa605cb141993a1149dff87d01c773fb8f2a8db5726eb1703522568cc55abca616dae5727f390c90cfa792d4349856820f2d0b5df7da418328e7f + </inline> + <curve>brainpool/brainpoolP512t1</curve> + <onekey>wycheproof/addsub/brainpoolP512t1/3s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512t1/3w</otherkey> + </result> + <result> + <id>addsub/brainpoolP512t1/4test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x34998a162b0463d81a96dda6c4e256b94ed35f89cb0b69a9af70123bec61b387bb358451e1994d6c29acbec66c50c61f36b66da33782db21521415952b55fa48 + </inline> + <curve>brainpool/brainpoolP512t1</curve> + <onekey>wycheproof/addsub/brainpoolP512t1/4s</onekey> + <otherkey>wycheproof/addsub/brainpoolP512t1/4w</otherkey> + </result> + <result> + <id>cve_2017_10176/secp521r1/1test</id> + <ka>DH_PLAIN</ka> + <inline> + 0x01bc33425e72a12779eacb2edcc5b63d1281f7e86dbc7bf99a7abd0cfe367de4666d6edbb8525bffe5222f0702c3096dec0884ce572f5a15c423fdf44d01dd99c61d + </inline> + <curve>secg/secp521r1</curve> + <onekey>wycheproof/cve_2017_10176/secp521r1/1s</onekey> + <otherkey>wycheproof/cve_2017_10176/secp521r1/1w</otherkey> + </result> + <result> + <id>cve_2017_8932/secp256r1/1test</id> + <ka>DH_PLAIN</ka> + <inline>0x4d4de80f1534850d261075997e3049321a0864082d24a917863366c0724f5ae3</inline> + <curve>secg/secp256r1</curve> + <onekey>wycheproof/cve_2017_8932/secp256r1/1s</onekey> + <otherkey>wycheproof/cve_2017_8932/secp256r1/1w</otherkey> + </result> + <result> + <id>cve_2017_8932/secp256r1/2test</id> + <ka>DH_PLAIN</ka> + <inline>0x831c3f6b5f762d2f461901577af41354ac5f228c2591f84f8a6e51e2e3f17991</inline> + <curve>secg/secp256r1</curve> + <onekey>wycheproof/cve_2017_8932/secp256r1/2s</onekey> + <otherkey>wycheproof/cve_2017_8932/secp256r1/2w</otherkey> + </result> +</results>
\ 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<String, EC_Key.Public> pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "cofactor"); - List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curveList) { EC_Curve curve = e.getKey(); List<EC_Key.Public> 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<String, EC_Key.Public> pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "degenerate"); - List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curveList) { EC_Curve curve = e.getKey(); List<EC_Key.Public> 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<String, EC_KAResult> results = EC_Store.getInstance().getObjects(EC_KAResult.class, "wycheproof"); + List<Map.Entry<String, List<EC_KAResult>>> groupList = EC_Store.mapToPrefix(results.values()); + for (Map.Entry<String, List<EC_KAResult>> 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<Test> groupTests = new LinkedList<>(); + List<Map.Entry<EC_Curve, List<EC_KAResult>>> curveList = EC_Store.mapResultToCurve(e.getValue()); + for (Map.Entry<EC_Curve, List<EC_KAResult>> c : curveList) { + EC_Curve curve = c.getKey(); + + List<Test> 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<EC_KAResult> 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<CommandTestable>() { + @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<String, EC_Key.Public> pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "invalid"); - List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curveList) { EC_Curve curve = e.getKey(); List<EC_Key.Public> 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<String, EC_Key.Public> pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "twist"); - List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapToCurve(pubkeys.values()); + List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapKeyToCurve(pubkeys.values()); for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curveList) { EC_Curve curve = e.getKey(); List<EC_Key.Public> keys = e.getValue(); |
