aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJ08nY2018-05-25 20:48:33 +0200
committerJ08nY2018-05-25 20:48:33 +0200
commit9a7b92adf94c63f93c18d579090f980f572720de (patch)
treeea2ccb0d95d56bad01cb6ab69e1b18f5d24f6940 /src
parent0c266d8909982cdd1fc74952819acfa018539b82 (diff)
downloadECTester-9a7b92adf94c63f93c18d579090f980f572720de.tar.gz
ECTester-9a7b92adf94c63f93c18d579090f980f572720de.tar.zst
ECTester-9a7b92adf94c63f93c18d579090f980f572720de.zip
Diffstat (limited to 'src')
-rw-r--r--src/cz/crcs/ectester/common/ec/EC_Params.java2
-rw-r--r--src/cz/crcs/ectester/common/util/CardUtil.java10
-rw-r--r--src/cz/crcs/ectester/data/EC_Store.java31
-rw-r--r--src/cz/crcs/ectester/data/schema.xsd7
-rw-r--r--src/cz/crcs/ectester/data/wycheproof/keys.xml272
-rw-r--r--src/cz/crcs/ectester/data/wycheproof/results.xml589
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java7
-rw-r--r--src/cz/crcs/ectester/reader/test/CardCofactorSuite.java2
-rw-r--r--src/cz/crcs/ectester/reader/test/CardDegenerateCurvesSuite.java2
-rw-r--r--src/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java102
-rw-r--r--src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java2
-rw-r--r--src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java2
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();