aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cz/crcs/ectester/data/composite/curves.xml2
-rw-r--r--src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160r1.xml16
-rw-r--r--src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160t1.xml8
-rw-r--r--src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192r1.xml14
-rw-r--r--src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192t1.xml8
-rw-r--r--src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP224r1.xml2
-rw-r--r--src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256r1.xml32
-rw-r--r--src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256t1.xml30
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java39
-rw-r--r--src/cz/crcs/ectester/reader/test/CardCofactorSuite.java4
-rw-r--r--src/cz/crcs/ectester/reader/test/CardCompositeSuite.java10
-rw-r--r--src/cz/crcs/ectester/reader/test/CardMiscSuite.java6
-rw-r--r--src/cz/crcs/ectester/reader/test/CardTestSuite.java26
-rw-r--r--src/cz/crcs/ectester/reader/test/CardTestVectorSuite.java2
-rw-r--r--src/cz/crcs/ectester/reader/test/CardWrongSuite.java4
15 files changed, 111 insertions, 92 deletions
diff --git a/src/cz/crcs/ectester/data/composite/curves.xml b/src/cz/crcs/ectester/data/composite/curves.xml
index d4ef2ce..34ad33a 100644
--- a/src/cz/crcs/ectester/data/composite/curves.xml
+++ b/src/cz/crcs/ectester/data/composite/curves.xml
@@ -524,7 +524,7 @@
<desc>r = 152 bit prime</desc>
</curve>
<curve>
- <id>varying/160/first/152cofactor</id>
+ <id>varying/160/cofactor/152</id>
<bits>160</bits>
<field>prime</field>
<file>varying/160/first/152_cofactor.csv</file>
diff --git a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160r1.xml b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160r1.xml
index b11c2c8..7656432 100644
--- a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160r1.xml
+++ b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160r1.xml
@@ -97,7 +97,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160r1/16</id>
- <inline>0x5699ff94f28628b37b35afce2cfbe033946ec7b8,0x63f5d424359563aeb46cee26d8ba5e1bcc1e052</inline>
+ <inline>0x5699ff94f28628b37b35afce2cfbe033946ec7b8,0x063f5d424359563aeb46cee26d8ba5e1bcc1e052</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 59</desc>
</pubkey>
@@ -121,13 +121,13 @@
</pubkey>
<pubkey>
<id>brainpoolP160r1/20</id>
- <inline>0x301528c0245255342671904c643decf32a7a233,0x802721fa4911239d28825fc50d5bd85496d69305</inline>
+ <inline>0x0301528c0245255342671904c643decf32a7a233,0x802721fa4911239d28825fc50d5bd85496d69305</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 73</desc>
</pubkey>
<pubkey>
<id>brainpoolP160r1/21</id>
- <inline>0xc4dab799a81f3397c487bafde8133e324244d5c,0x99d70a4f7bb2c62d34dd835f7da5df1ec31058d</inline>
+ <inline>0x0c4dab799a81f3397c487bafde8133e324244d5c,0x099d70a4f7bb2c62d34dd835f7da5df1ec31058d</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 79</desc>
</pubkey>
@@ -169,7 +169,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160r1/28</id>
- <inline>0x8987c8fdcf194692bba9468ee6153bd561befef,0x76dda0681cf1b07f7cea5a233ff6cda45eaddd42</inline>
+ <inline>0x08987c8fdcf194692bba9468ee6153bd561befef,0x76dda0681cf1b07f7cea5a233ff6cda45eaddd42</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 109</desc>
</pubkey>
@@ -181,7 +181,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160r1/30</id>
- <inline>0xdf1ffb84e573d940df790fe5f714aae6c7e25c2f,0x8b70760193ea02b29769b31be869fc6a500aeee</inline>
+ <inline>0xdf1ffb84e573d940df790fe5f714aae6c7e25c2f,0x08b70760193ea02b29769b31be869fc6a500aeee</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 127</desc>
</pubkey>
@@ -241,7 +241,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160r1/40</id>
- <inline>0x4d55a23dd8da29f49de10385e052503223b57b2a,0x5d42f9e7b85df543c1d7583a6712af2d4cde554</inline>
+ <inline>0x4d55a23dd8da29f49de10385e052503223b57b2a,0x05d42f9e7b85df543c1d7583a6712af2d4cde554</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 179</desc>
</pubkey>
@@ -259,7 +259,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160r1/43</id>
- <inline>0x64977b60eaefabd73d238d0bfe99a6b42aab0029,0x202d8d421cdc97bd18be388c1e4423b92ca5e09</inline>
+ <inline>0x64977b60eaefabd73d238d0bfe99a6b42aab0029,0x0202d8d421cdc97bd18be388c1e4423b92ca5e09</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 193</desc>
</pubkey>
@@ -319,7 +319,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160r1/53</id>
- <inline>0x40892221b8291a17a70fef729b3d0958db3300,0xe613aa9e4991281f8618ebb73003aff70df87a14</inline>
+ <inline>0x0040892221b8291a17a70fef729b3d0958db3300,0xe613aa9e4991281f8618ebb73003aff70df87a14</inline>
<curve>brainpool/brainpoolP160r1</curve>
<desc>invalid order = 251</desc>
</pubkey>
diff --git a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160t1.xml b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160t1.xml
index 5ef2693..ffac676 100644
--- a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160t1.xml
+++ b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP160t1.xml
@@ -163,7 +163,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160t1/27</id>
- <inline>0x9902830338496e4e2ff394e0c10410982afdd2ef,0x383c77a02e3c3add14c241cd6db01ae8bbabc94</inline>
+ <inline>0x9902830338496e4e2ff394e0c10410982afdd2ef,0x0383c77a02e3c3add14c241cd6db01ae8bbabc94</inline>
<curve>brainpool/brainpoolP160t1</curve>
<desc>invalid order = 107</desc>
</pubkey>
@@ -223,13 +223,13 @@
</pubkey>
<pubkey>
<id>brainpoolP160t1/37</id>
- <inline>0x466fa585d429d7c810945310ffaec7fd08f77e,0x6681a71c0ddc36ba776081b0bbb04af90d1ef459</inline>
+ <inline>0x00466fa585d429d7c810945310ffaec7fd08f77e,0x6681a71c0ddc36ba776081b0bbb04af90d1ef459</inline>
<curve>brainpool/brainpoolP160t1</curve>
<desc>invalid order = 163</desc>
</pubkey>
<pubkey>
<id>brainpoolP160t1/38</id>
- <inline>0xefa98dc9008d32500f01781c2c1a5b69f80f6c3,0x5a8cf27b9732b4399e6bce12c238524667881c03</inline>
+ <inline>0x0efa98dc9008d32500f01781c2c1a5b69f80f6c3,0x5a8cf27b9732b4399e6bce12c238524667881c03</inline>
<curve>brainpool/brainpoolP160t1</curve>
<desc>invalid order = 167</desc>
</pubkey>
@@ -247,7 +247,7 @@
</pubkey>
<pubkey>
<id>brainpoolP160t1/41</id>
- <inline>0xcec5ad185a118e567adf7911680764df3f6c0f2c,0x9b82c5f305bd8edfd410a1b3c2779f972ccc09b</inline>
+ <inline>0xcec5ad185a118e567adf7911680764df3f6c0f2c,0x09b82c5f305bd8edfd410a1b3c2779f972ccc09b</inline>
<curve>brainpool/brainpoolP160t1</curve>
<desc>invalid order = 181</desc>
</pubkey>
diff --git a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192r1.xml b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192r1.xml
index 6458609..4ceb20c 100644
--- a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192r1.xml
+++ b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192r1.xml
@@ -31,7 +31,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192r1/5</id>
- <inline>0x91f9ee514f7ba95b02f6a6a421e5c407aa98750f4800c489,0x75bc5be4e76df961ee39cde63e78e49969b2e4e08741a8e</inline>
+ <inline>0x91f9ee514f7ba95b02f6a6a421e5c407aa98750f4800c489,0x075bc5be4e76df961ee39cde63e78e49969b2e4e08741a8e</inline>
<curve>brainpool/brainpoolP192r1</curve>
<desc>invalid order = 13</desc>
</pubkey>
@@ -127,7 +127,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192r1/21</id>
- <inline>0xb775ff62b4cfd5938855b327ba4ed92b20102215b80593e7,0x1822fab9134b819adae394b401fdc995080542e1b131aad</inline>
+ <inline>0xb775ff62b4cfd5938855b327ba4ed92b20102215b80593e7,0x01822fab9134b819adae394b401fdc995080542e1b131aad</inline>
<curve>brainpool/brainpoolP192r1</curve>
<desc>invalid order = 79</desc>
</pubkey>
@@ -157,7 +157,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192r1/26</id>
- <inline>0x51262d2d0d43887a4913ebde0505c6f945d72588e786493e,0x947b3447c161eeb65c5d2ea0ce25f8538a3be5e9612580c</inline>
+ <inline>0x51262d2d0d43887a4913ebde0505c6f945d72588e786493e,0x0947b3447c161eeb65c5d2ea0ce25f8538a3be5e9612580c</inline>
<curve>brainpool/brainpoolP192r1</curve>
<desc>invalid order = 103</desc>
</pubkey>
@@ -247,7 +247,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192r1/41</id>
- <inline>0xbe28f2c028623f3b2cb5f52d796fcbd6de65a8f9428bf7b3,0x6c186203b8cb15ce01d002cf9f47fcce9f67939131ce3dd</inline>
+ <inline>0xbe28f2c028623f3b2cb5f52d796fcbd6de65a8f9428bf7b3,0x06c186203b8cb15ce01d002cf9f47fcce9f67939131ce3dd</inline>
<curve>brainpool/brainpoolP192r1</curve>
<desc>invalid order = 181</desc>
</pubkey>
@@ -337,7 +337,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192r1/56</id>
- <inline>0x6152805a62d2ba015dac702fe4688efb34a5ca3c11b88e5b,0x349428b8179e041affa4311ead89de00d508fc7d3c8d9fb</inline>
+ <inline>0x6152805a62d2ba015dac702fe4688efb34a5ca3c11b88e5b,0x0349428b8179e041affa4311ead89de00d508fc7d3c8d9fb</inline>
<curve>brainpool/brainpoolP192r1</curve>
<desc>invalid order = 269</desc>
</pubkey>
@@ -355,13 +355,13 @@
</pubkey>
<pubkey>
<id>brainpoolP192r1/59</id>
- <inline>0x940d62366df60884cb2d482a00ef24d4195d2242c65e29f,0x90c75f89c3809dd80be41e8c72265d6c8f21db8294cf970b</inline>
+ <inline>0x0940d62366df60884cb2d482a00ef24d4195d2242c65e29f,0x90c75f89c3809dd80be41e8c72265d6c8f21db8294cf970b</inline>
<curve>brainpool/brainpoolP192r1</curve>
<desc>invalid order = 281</desc>
</pubkey>
<pubkey>
<id>brainpoolP192r1/60</id>
- <inline>0x129bca166096f206be151fa2e61dfd89c0da5abb093f373,0x545b00cb1201b786fe6361e1bd606819707b2b929a70c5a5</inline>
+ <inline>0x0129bca166096f206be151fa2e61dfd89c0da5abb093f373,0x545b00cb1201b786fe6361e1bd606819707b2b929a70c5a5</inline>
<curve>brainpool/brainpoolP192r1</curve>
<desc>invalid order = 283</desc>
</pubkey>
diff --git a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192t1.xml b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192t1.xml
index cf90464..fe06dcf 100644
--- a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192t1.xml
+++ b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP192t1.xml
@@ -145,7 +145,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192t1/24</id>
- <inline>0x39701cde7695ba5f45b70dd3698004daaca12eb6365be6b,0x7888943d187330eed979330f7bb597b145c96d944d93bfff</inline>
+ <inline>0x039701cde7695ba5f45b70dd3698004daaca12eb6365be6b,0x7888943d187330eed979330f7bb597b145c96d944d93bfff</inline>
<curve>brainpool/brainpoolP192t1</curve>
<desc>invalid order = 97</desc>
</pubkey>
@@ -199,7 +199,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192t1/33</id>
- <inline>0x50e3ceed3ec28c2cb201c954698f1c0092c7ac6b5a42a46,0x94c9ef437dfda2ee40fce97a8949a3b9cea5452122def043</inline>
+ <inline>0x050e3ceed3ec28c2cb201c954698f1c0092c7ac6b5a42a46,0x94c9ef437dfda2ee40fce97a8949a3b9cea5452122def043</inline>
<curve>brainpool/brainpoolP192t1</curve>
<desc>invalid order = 139</desc>
</pubkey>
@@ -325,7 +325,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192t1/54</id>
- <inline>0x9aab4fa1bd8c55746f2584eec54118f400815e5b2b0290a3,0xd1b9110aed6e79c0c2951f02609ea62df69d6f2193f54c3</inline>
+ <inline>0x9aab4fa1bd8c55746f2584eec54118f400815e5b2b0290a3,0x0d1b9110aed6e79c0c2951f02609ea62df69d6f2193f54c3</inline>
<curve>brainpool/brainpoolP192t1</curve>
<desc>invalid order = 257</desc>
</pubkey>
@@ -355,7 +355,7 @@
</pubkey>
<pubkey>
<id>brainpoolP192t1/59</id>
- <inline>0x5a1d82fe88b392b28aafd1960a576092f05baf3d5c04164c,0x118cad17735949799602bc4ccb8170e34cb9e7fb2f76959</inline>
+ <inline>0x5a1d82fe88b392b28aafd1960a576092f05baf3d5c04164c,0x0118cad17735949799602bc4ccb8170e34cb9e7fb2f76959</inline>
<curve>brainpool/brainpoolP192t1</curve>
<desc>invalid order = 281</desc>
</pubkey>
diff --git a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP224r1.xml b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP224r1.xml
index 7a12145..c708160 100644
--- a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP224r1.xml
+++ b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP224r1.xml
@@ -313,7 +313,7 @@
</pubkey>
<pubkey>
<id>brainpoolP224r1/52</id>
- <inline>0x89b90b886ed09591c182478b66a3b1cb19ae01fe529897a2a2d5c8,0xc4650cc96a78639f5f33b7b05f48a72e5c49e7cccf916ed5638f22bc</inline>
+ <inline>0x0089b90b886ed09591c182478b66a3b1cb19ae01fe529897a2a2d5c8,0xc4650cc96a78639f5f33b7b05f48a72e5c49e7cccf916ed5638f22bc</inline>
<curve>brainpool/brainpoolP224r1</curve>
<desc>invalid order = 241</desc>
</pubkey>
diff --git a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256r1.xml b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256r1.xml
index ebd8f6b..30343e6 100644
--- a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256r1.xml
+++ b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256r1.xml
@@ -37,13 +37,13 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/6</id>
- <inline>0xb9f03197a680d49ad3e7b4d40d95340d5e1a46e57e2f961703137eea8e61653,0x681b44c0540f64f8fa77166a1c95002a7a7ae4f53a4317d57800cb3c8146310a</inline>
+ <inline>0x0b9f03197a680d49ad3e7b4d40d95340d5e1a46e57e2f961703137eea8e61653,0x681b44c0540f64f8fa77166a1c95002a7a7ae4f53a4317d57800cb3c8146310a</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 17</desc>
</pubkey>
<pubkey>
<id>brainpoolP256r1/7</id>
- <inline>0x2d4b3dc4f3d3a9f4f4843637eb1ad271ffcf49bf6a2a837bb89b81920022899d,0x9ec63d7131dad83633aac03d648fc8b9c5016a403a3e4266a7b859337d00c31</inline>
+ <inline>0x2d4b3dc4f3d3a9f4f4843637eb1ad271ffcf49bf6a2a837bb89b81920022899d,0x09ec63d7131dad83633aac03d648fc8b9c5016a403a3e4266a7b859337d00c31</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 19</desc>
</pubkey>
@@ -79,7 +79,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/13</id>
- <inline>0xabbdab45a30470fe34f79aa752b068daa8356a198fb171293109ee87fc5b9e4,0x6daf3a42a1c7f7e3fe75649caf1bbc7e36260a4bcdef5b900fca1b7795a35a87</inline>
+ <inline>0x0abbdab45a30470fe34f79aa752b068daa8356a198fb171293109ee87fc5b9e4,0x6daf3a42a1c7f7e3fe75649caf1bbc7e36260a4bcdef5b900fca1b7795a35a87</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 43</desc>
</pubkey>
@@ -97,7 +97,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/16</id>
- <inline>0x80070fcc7e01481ac8f408d3fffd8bbb3abb719868ead0629115698dafbb073d,0x4015e9e8842bf388a967129a4a8a203840e96297cc2bac91828e35ae6b6bafc</inline>
+ <inline>0x80070fcc7e01481ac8f408d3fffd8bbb3abb719868ead0629115698dafbb073d,0x04015e9e8842bf388a967129a4a8a203840e96297cc2bac91828e35ae6b6bafc</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 59</desc>
</pubkey>
@@ -181,7 +181,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/30</id>
- <inline>0xa3084e293cbc36389c7641dbd1b9fe978e0d4bf80b0c76e0c1c621c2f759ce1,0x77109db8c35585c9717cf8678663b32a11c9e0ec37ed665a777ec74ed69330ff</inline>
+ <inline>0x0a3084e293cbc36389c7641dbd1b9fe978e0d4bf80b0c76e0c1c621c2f759ce1,0x77109db8c35585c9717cf8678663b32a11c9e0ec37ed665a777ec74ed69330ff</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 127</desc>
</pubkey>
@@ -199,13 +199,13 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/33</id>
- <inline>0x907d254851cdceba689917f23e95d0f97ec4cb1a70e00f61dc0a21f14dda70f1,0xc51bbdc4ef9b0b10c385d1fa1583c2756960d640190e3b06891c4643ded97dc</inline>
+ <inline>0x907d254851cdceba689917f23e95d0f97ec4cb1a70e00f61dc0a21f14dda70f1,0x0c51bbdc4ef9b0b10c385d1fa1583c2756960d640190e3b06891c4643ded97dc</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 139</desc>
</pubkey>
<pubkey>
<id>brainpoolP256r1/34</id>
- <inline>0xb3ca29e79bf55c9f4f902d8e6ef976cfd91a4c11d2cebe829507d9703280cf3,0x41bcaaf1f9e02d469f2ece950730d01f842c00270e489299c4d12af9b257b2f6</inline>
+ <inline>0x0b3ca29e79bf55c9f4f902d8e6ef976cfd91a4c11d2cebe829507d9703280cf3,0x41bcaaf1f9e02d469f2ece950730d01f842c00270e489299c4d12af9b257b2f6</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 149</desc>
</pubkey>
@@ -259,13 +259,13 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/43</id>
- <inline>0x92bc20e7aee1d18d017916336ba8c5d0366a429d31033c2801c0f295b93acda1,0xbc03be75c78342563a9667e000744fb8895724d013f08caddcadd8576326cba</inline>
+ <inline>0x92bc20e7aee1d18d017916336ba8c5d0366a429d31033c2801c0f295b93acda1,0x0bc03be75c78342563a9667e000744fb8895724d013f08caddcadd8576326cba</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 193</desc>
</pubkey>
<pubkey>
<id>brainpoolP256r1/44</id>
- <inline>0x188c91fe6a08837cad3c31eef72411cf16277dba8062d16cff1fd01fd8a43d98,0x8e5102f93db66e44867626315f98e488bef161c25d979388b9d6cdf5c64dc94</inline>
+ <inline>0x188c91fe6a08837cad3c31eef72411cf16277dba8062d16cff1fd01fd8a43d98,0x08e5102f93db66e44867626315f98e488bef161c25d979388b9d6cdf5c64dc94</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 197</desc>
</pubkey>
@@ -283,7 +283,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/47</id>
- <inline>0xa86083f363bb7aabb79b0757d52a77f3ef17975e7e8e1ac7e19ac3382750a769,0x74372f3343c2fa6011fbde39cdb23e2d253a7d9102e4d52e5769687abda1432</inline>
+ <inline>0xa86083f363bb7aabb79b0757d52a77f3ef17975e7e8e1ac7e19ac3382750a769,0x074372f3343c2fa6011fbde39cdb23e2d253a7d9102e4d52e5769687abda1432</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 223</desc>
</pubkey>
@@ -295,13 +295,13 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/49</id>
- <inline>0x5317d56926ab92ae38597afcf2ba6bf20c4fe981421c87de2f50d4d2356b8ff,0x8ad21c1c871e2b68948971039ea6095fe368572180ef360103c6fa5d9230c164</inline>
+ <inline>0x05317d56926ab92ae38597afcf2ba6bf20c4fe981421c87de2f50d4d2356b8ff,0x8ad21c1c871e2b68948971039ea6095fe368572180ef360103c6fa5d9230c164</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 229</desc>
</pubkey>
<pubkey>
<id>brainpoolP256r1/50</id>
- <inline>0x33d7fffa35bbfd951ba1a3a974b962f3f8acb0f4b2bfe72f5cc6cc2054b23e36,0x84503cb28c332e2ecd08304f8f09d5f6409dc67d7737991ddea997449c55728</inline>
+ <inline>0x33d7fffa35bbfd951ba1a3a974b962f3f8acb0f4b2bfe72f5cc6cc2054b23e36,0x084503cb28c332e2ecd08304f8f09d5f6409dc67d7737991ddea997449c55728</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 233</desc>
</pubkey>
@@ -313,7 +313,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/52</id>
- <inline>0x5d2ff3680dfeef97a037e99ec79afd4cac7861fa441c2fe756d8f6494213bc,0x3ba863cd56155d7dd20d37f38e6d977a76eed84233b1240ae2c8fdf210529442</inline>
+ <inline>0x005d2ff3680dfeef97a037e99ec79afd4cac7861fa441c2fe756d8f6494213bc,0x3ba863cd56155d7dd20d37f38e6d977a76eed84233b1240ae2c8fdf210529442</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 241</desc>
</pubkey>
@@ -325,7 +325,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/54</id>
- <inline>0x5e1648b24e5ea32a9a32b51bf3b1bb6b13db50b435c4893c3683f07fb467e9e7,0xef62afba115ce527c39ea43c8d6873f37610878937781549adb9b79efd635b1</inline>
+ <inline>0x5e1648b24e5ea32a9a32b51bf3b1bb6b13db50b435c4893c3683f07fb467e9e7,0x0ef62afba115ce527c39ea43c8d6873f37610878937781549adb9b79efd635b1</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 257</desc>
</pubkey>
@@ -355,7 +355,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/59</id>
- <inline>0x6d3eb141c8057de9e03e8b6b0bf6f6151f1cf493c45ab7d417f09e66cd1c6fcc,0xd9304a6fff3410873d18e43f44bf4a68740542bb1f936fb6df723b0ada2bc5f</inline>
+ <inline>0x6d3eb141c8057de9e03e8b6b0bf6f6151f1cf493c45ab7d417f09e66cd1c6fcc,0x0d9304a6fff3410873d18e43f44bf4a68740542bb1f936fb6df723b0ada2bc5f</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 281</desc>
</pubkey>
@@ -445,7 +445,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256r1/74</id>
- <inline>0x55d7cd53bd7775a0cb719e75741efc69d207b7ded1b1a6a74285ecbfd14dd555,0xfdd325700cbecf7d4323bd7cf8d5894f1ca4d80a85523dbd4982f55638fce12</inline>
+ <inline>0x55d7cd53bd7775a0cb719e75741efc69d207b7ded1b1a6a74285ecbfd14dd555,0x0fdd325700cbecf7d4323bd7cf8d5894f1ca4d80a85523dbd4982f55638fce12</inline>
<curve>brainpool/brainpoolP256r1</curve>
<desc>invalid order = 379</desc>
</pubkey>
diff --git a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256t1.xml b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256t1.xml
index c2cf345..8b0a544 100644
--- a/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256t1.xml
+++ b/src/cz/crcs/ectester/data/invalid/brainpool/brainpoolP256t1.xml
@@ -79,7 +79,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/13</id>
- <inline>0xa8d85e8357da11efd22ba80da4bb125f0d8b6189845133b2bc3be81da2de87cb,0xc73e6d8d720a55e1c74206a8662503fc8b487391c29d510744e54fdd98eeb4</inline>
+ <inline>0xa8d85e8357da11efd22ba80da4bb125f0d8b6189845133b2bc3be81da2de87cb,0x00c73e6d8d720a55e1c74206a8662503fc8b487391c29d510744e54fdd98eeb4</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 43</desc>
</pubkey>
@@ -139,7 +139,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/23</id>
- <inline>0x1c4a352bac2efde91d52ad41ea4bc3525d78da0061b04eb08b81912be0a0acc2,0xc7fbe998338b83e7567cee01a88b465c032b8ee6b58c631966921d67b0dd3ae</inline>
+ <inline>0x1c4a352bac2efde91d52ad41ea4bc3525d78da0061b04eb08b81912be0a0acc2,0x0c7fbe998338b83e7567cee01a88b465c032b8ee6b58c631966921d67b0dd3ae</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 89</desc>
</pubkey>
@@ -151,19 +151,19 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/25</id>
- <inline>0x61cd1350205127d6a83c42b424e103bd1c4d804a81ff1f524886f8b719ded2d7,0x17d8f7969f9b850e82b35078c4303b4b6a94c79459cde47a766724a79e83c1d</inline>
+ <inline>0x61cd1350205127d6a83c42b424e103bd1c4d804a81ff1f524886f8b719ded2d7,0x017d8f7969f9b850e82b35078c4303b4b6a94c79459cde47a766724a79e83c1d</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 101</desc>
</pubkey>
<pubkey>
<id>brainpoolP256t1/26</id>
- <inline>0x461fbc9128ce57e13a8e9414a053c5477d0bcf1889c48f5c0218510d40f99962,0x57f14edee8af46b61a8054a304923c3fad612e3b4d2e0fbd82d8562c49a4042</inline>
+ <inline>0x461fbc9128ce57e13a8e9414a053c5477d0bcf1889c48f5c0218510d40f99962,0x057f14edee8af46b61a8054a304923c3fad612e3b4d2e0fbd82d8562c49a4042</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 103</desc>
</pubkey>
<pubkey>
<id>brainpoolP256t1/27</id>
- <inline>0x5a4d44a36b9e91778da732db19c59deb3ad1f865eaa8362a0b9596ed4519f417,0x76e32264277f2d80d3fb2f2cd4d12657209b52da7d07e910072bce22749ec14</inline>
+ <inline>0x5a4d44a36b9e91778da732db19c59deb3ad1f865eaa8362a0b9596ed4519f417,0x076e32264277f2d80d3fb2f2cd4d12657209b52da7d07e910072bce22749ec14</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 107</desc>
</pubkey>
@@ -205,7 +205,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/34</id>
- <inline>0x3fbdc402d055a8bda9cb808f8ff9bb112b315da546784925b020925df99c6cc,0x9f73b9e859d544caa731ba70c65da08d3e791da4f2913ba5dcca0a811a6349bd</inline>
+ <inline>0x03fbdc402d055a8bda9cb808f8ff9bb112b315da546784925b020925df99c6cc,0x9f73b9e859d544caa731ba70c65da08d3e791da4f2913ba5dcca0a811a6349bd</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 149</desc>
</pubkey>
@@ -223,7 +223,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/37</id>
- <inline>0x657fd424b17e5e7e65391bd734e2d123943011f72a551c56c1599a3ae51b752,0x259fe7af5aa7ba34a936ee859ae3b6d730a9b575c9e6603ea34fc083ce89d310</inline>
+ <inline>0x0657fd424b17e5e7e65391bd734e2d123943011f72a551c56c1599a3ae51b752,0x259fe7af5aa7ba34a936ee859ae3b6d730a9b575c9e6603ea34fc083ce89d310</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 163</desc>
</pubkey>
@@ -247,7 +247,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/41</id>
- <inline>0x8becdae261b104d9ee78948780b555eb86cc7035b73a3a367b7f8a1be8cd01c0,0x36de4eee57440062907c8c1284ff925c497c0574c6cace8e4a38805161f11e8</inline>
+ <inline>0x8becdae261b104d9ee78948780b555eb86cc7035b73a3a367b7f8a1be8cd01c0,0x036de4eee57440062907c8c1284ff925c497c0574c6cace8e4a38805161f11e8</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 181</desc>
</pubkey>
@@ -283,7 +283,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/47</id>
- <inline>0x91712468bd01e16c5d608a10951d4d82e6ae49ef66485e8754c22cdfc7259808,0xbac428282adb922c0c5ac23f8c0bb9767eed1dddeab194ea5de9ccb1401513</inline>
+ <inline>0x91712468bd01e16c5d608a10951d4d82e6ae49ef66485e8754c22cdfc7259808,0x00bac428282adb922c0c5ac23f8c0bb9767eed1dddeab194ea5de9ccb1401513</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 223</desc>
</pubkey>
@@ -325,7 +325,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/54</id>
- <inline>0x8e66cf003c13d492f5bba32bb933792335379812f7edcb69f61889d09fcc694,0x492bd824e57d53cfd01961703ad0344527df78f8e2f7f0a6f51eb06461f77121</inline>
+ <inline>0x08e66cf003c13d492f5bba32bb933792335379812f7edcb69f61889d09fcc694,0x492bd824e57d53cfd01961703ad0344527df78f8e2f7f0a6f51eb06461f77121</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 257</desc>
</pubkey>
@@ -337,7 +337,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/56</id>
- <inline>0x5df0571aabfb0d3cb734ab0f6623cb1a22f0f227b463dbd5cbfa0f8ebfe37b3,0x3a3250e75db55543c76d92eee205349953e7c53d0dc505baf70802805f5c78c2</inline>
+ <inline>0x05df0571aabfb0d3cb734ab0f6623cb1a22f0f227b463dbd5cbfa0f8ebfe37b3,0x3a3250e75db55543c76d92eee205349953e7c53d0dc505baf70802805f5c78c2</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 269</desc>
</pubkey>
@@ -349,7 +349,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/58</id>
- <inline>0x3b0f68153ec7a3641e6693f34cd80ebd20181305b8951ea04911d8022f588b96,0x15c1e08b84503b6b81be5212ddf5385d79d2e09bcb3942eeed3eeb766428b73</inline>
+ <inline>0x3b0f68153ec7a3641e6693f34cd80ebd20181305b8951ea04911d8022f588b96,0x015c1e08b84503b6b81be5212ddf5385d79d2e09bcb3942eeed3eeb766428b73</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 277</desc>
</pubkey>
@@ -385,7 +385,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/64</id>
- <inline>0x9784b99751dca1564983e97ea9dc117c88a0cc7d8b4a8fe571b8f767feadbd2,0xa34ee01a891dc707e96a00c75b2f7fb803429290ed3bff15ae8d4810aaeb4f67</inline>
+ <inline>0x09784b99751dca1564983e97ea9dc117c88a0cc7d8b4a8fe571b8f767feadbd2,0xa34ee01a891dc707e96a00c75b2f7fb803429290ed3bff15ae8d4810aaeb4f67</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 313</desc>
</pubkey>
@@ -403,7 +403,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/67</id>
- <inline>0x694ea76457f3856cd64cbffd2e960fa63674555645e49a0eb11c0bb23058fc4,0x3d474292d44f14c6d64200aa49590b1a4cad714d3af2e14f4d6e38dedd1909a4</inline>
+ <inline>0x0694ea76457f3856cd64cbffd2e960fa63674555645e49a0eb11c0bb23058fc4,0x3d474292d44f14c6d64200aa49590b1a4cad714d3af2e14f4d6e38dedd1909a4</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 337</desc>
</pubkey>
@@ -445,7 +445,7 @@
</pubkey>
<pubkey>
<id>brainpoolP256t1/74</id>
- <inline>0x546fc53be826e6ee5ee1c10ae2e8a652ea238b7d4c5045a17fd9fdc423bc9a1,0x4db945865e98861802a29e82cbab586ff44ebb8d9e9252e709eea7c55b9a9d0d</inline>
+ <inline>0x0546fc53be826e6ee5ee1c10ae2e8a652ea238b7d4c5045a17fd9fdc423bc9a1,0x4db945865e98861802a29e82cbab586ff44ebb8d9e9252e709eea7c55b9a9d0d</inline>
<curve>brainpool/brainpoolP256t1</curve>
<desc>invalid order = 379</desc>
</pubkey>
diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java
index adad635..6372248 100644
--- a/src/cz/crcs/ectester/reader/ECTesterReader.java
+++ b/src/cz/crcs/ectester/reader/ECTesterReader.java
@@ -341,7 +341,7 @@ public class ECTesterReader {
opts.addOption(Option.builder().longOpt("cleanup").desc("Send the cleanup command trigerring JCSystem.requestObjectDeletion() after some operations.").build());
opts.addOption(Option.builder("s").longOpt("simulate").desc("Simulate a card with jcardsim instead of using a terminal.").build());
opts.addOption(Option.builder("y").longOpt("yes").desc("Accept all warnings and prompts.").build());
- opts.addOption(Option.builder("to").longOpt("test-options").desc("Test options to use:\n- preset: Use preset semi-random private keys instead of generating keypairs on the cards when the test needs one.").hasArg().argName("options").build());
+ opts.addOption(Option.builder("to").longOpt("test-options").desc("Test options to use:\n- preset: Use preset semi-random private keys (derived from curve) instead of generating keypairs on the cards when the test needs one.\n- random: Use fully random private keys instead of generating keypairs.").hasArg().argName("options").build());
opts.addOption(Option.builder("ka").longOpt("ka-type").desc("Set KeyAgreement object [type], corresponds to JC.KeyAgreement constants.").hasArg().argName("type").optionalArg(true).build());
opts.addOption(Option.builder("sig").longOpt("sig-type").desc("Set Signature object [type], corresponds to JC.Signature constants.").hasArg().argName("type").optionalArg(true).build());
@@ -1012,40 +1012,45 @@ public class ECTesterReader {
testFrom = 0;
testTo = -1;
}
-
+
String[] tests = new String[]{"default", "composite", "compression", "invalid", "degenerate", "test-vectors", "wrong", "twist", "cofactor", "edge-cases", "miscellaneous", "signature"};
- String selected = null;
- for (String test : tests) {
- if (test.startsWith(testSuite)) {
- if (selected != null) {
- System.err.println(Colors.error("Test suite ambiguous " + test + " or " + selected + "?"));
- return false;
- } else {
- selected = test;
- }
- }
- }
- if (selected == null) {
+ String selected = null;
+ for (String test : tests) {
+ if (test.startsWith(testSuite)) {
+ if (selected != null) {
+ System.err.println(Colors.error("Test suite ambiguous " + test + " or " + selected + "?"));
+ return false;
+ } else {
+ selected = test;
+ }
+ }
+ }
+ if (selected == null) {
System.err.println(Colors.error("Unknown test suite " + testSuite + ". Should be one of: " + Arrays.toString(tests)));
return false;
} else {
- testSuite = selected;
+ testSuite = selected;
}
String[] opts = cli.getOptionValue("test-options", "").split(",");
- List<String> validOpts = Arrays.asList("preset");
+ List<String> validOpts = Arrays.asList("preset", "random");
testOptions = new HashSet<>();
for (String opt : opts) {
if (opt.equals("")) {
continue;
}
if (!validOpts.contains(opt)) {
- System.err.println(Colors.error("Unknown test option " + opt + ". Should be one of: " + "preset."));
+ System.err.println(Colors.error("Unknown test option " + opt + ". Should be one of: " + Arrays.toString(validOpts.toArray())));
return false;
} else {
testOptions.add(opt);
}
}
+
+ if (testOptions.contains("preset") && testOptions.contains("random")) {
+ System.err.println("Cannot have both preset and random option enabled.");
+ return false;
+ }
} else if (cli.hasOption("ecdh")) {
if (primeField == binaryField) {
System.err.print(Colors.error("Need to specify field with -fp or -f2m. (not both)"));
diff --git a/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java b/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java
index 6b15ab0..d1eb2b1 100644
--- a/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CardCofactorSuite.java
@@ -25,7 +25,7 @@ import static cz.crcs.ectester.common.test.Result.ExpectedValue;
*/
public class CardCofactorSuite extends CardTestSuite {
public CardCofactorSuite(TestWriter writer, ECTesterReader.Config cfg, CardMngr cardManager) {
- super(writer, cfg, cardManager, "cofactor", new String[]{"preset"}, "The cofactor test suite tests whether the card correctly rejects points on the curve",
+ super(writer, cfg, cardManager, "cofactor", new String[]{"preset", "random"}, "The cofactor test suite tests whether the card correctly rejects points on the curve",
"but not in the subgroup generated by the generator(so of small order, dividing the cofactor) during ECDH.");
}
@@ -39,7 +39,7 @@ public class CardCofactorSuite extends CardTestSuite {
Test allocate = CommandTest.expect(new Command.Allocate(this.card, ECTesterApplet.KEYPAIR_BOTH, curve.getBits(), curve.getField()), ExpectedValue.SUCCESS);
Test set = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), ExpectedValue.SUCCESS);
- Test generate = genOrPreset(curve, ExpectedValue.SUCCESS, ECTesterApplet.KEYPAIR_LOCAL);
+ Test generate = setupKeypairs(curve, ExpectedValue.SUCCESS, ECTesterApplet.KEYPAIR_LOCAL);
Test prepare = CompoundTest.all(ExpectedValue.SUCCESS, "Prepare and generate keypair on " + curve.getId() + ".", allocate, set, generate);
diff --git a/src/cz/crcs/ectester/reader/test/CardCompositeSuite.java b/src/cz/crcs/ectester/reader/test/CardCompositeSuite.java
index 0076e3d..babe732 100644
--- a/src/cz/crcs/ectester/reader/test/CardCompositeSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CardCompositeSuite.java
@@ -25,8 +25,8 @@ import static cz.crcs.ectester.common.test.Result.ExpectedValue;
public class CardCompositeSuite extends CardTestSuite {
public CardCompositeSuite(TestWriter writer, ECTesterReader.Config cfg, CardMngr cardManager) {
- super(writer, cfg, cardManager, "composite", new String[]{"preset"}, "The composite suite runs ECDH over curves with composite order.",
- "Various types of compositeness is tested: smooth numbers, Carmichael pseudoprime, prime square, product of two large primes.");
+ super(writer, cfg, cardManager, "composite", new String[]{"preset", "random"}, "The composite suite runs ECDH over curves with composite order.",
+ "Various types of compositeness is tested: smooth numbers, Carmichael pseudo-prime, prime square, product of two large primes.");
}
@Override
@@ -50,7 +50,7 @@ public class CardCompositeSuite extends CardTestSuite {
} else {
name = "generated private key";
}
- tests.add(genOrPreset(curve, ExpectedValue.ANY, ECTesterApplet.KEYPAIR_LOCAL));
+ tests.add(setupKeypairs(curve, ExpectedValue.ANY, ECTesterApplet.KEYPAIR_LOCAL));
for (EC_Key key : curveKeys.getValue()) {
Command ecdhCommand = new Command.ECDH_direct(this.card, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.EXPORT_FALSE, EC_Consts.TRANSFORMATION_NONE, EC_Consts.KeyAgreement_ALG_EC_SVDP_DH, key.flatten());
Test ecdh = CommandTest.expect(ecdhCommand, ExpectedValue.FAILURE, "Card correctly rejected to do ECDH over a composite order curve.", "Card incorrectly does ECDH over a composite order curve, leaks bits of private key.");
@@ -85,7 +85,7 @@ public class CardCompositeSuite extends CardTestSuite {
/* Also test having G or large order being a Carmichael pseudoprime, R = p * q * r,
*/
List<EC_Curve> ppCurves = groups.entrySet().stream().filter((e) -> e.getKey().equals("pp")).findFirst().get().getValue();
- testGroup(ppCurves, "Generator order = Carmichael pseudoprime", ExpectedValue.ANY, "", "");
+ testGroup(ppCurves, "Generator order = Carmichael pseudo-prime", ExpectedValue.ANY, "", "");
/* Also test rg0 curves.
*/
@@ -97,7 +97,7 @@ public class CardCompositeSuite extends CardTestSuite {
for (EC_Curve curve : curves) {
Test allocate = CommandTest.expect(new Command.Allocate(this.card, ECTesterApplet.KEYPAIR_BOTH, curve.getBits(), curve.getField()), ExpectedValue.SUCCESS);
Test set = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), ExpectedValue.ANY);
- Test generate = genOrPreset(curve, ExpectedValue.ANY, ECTesterApplet.KEYPAIR_BOTH);
+ Test generate = setupKeypairs(curve, ExpectedValue.ANY, ECTesterApplet.KEYPAIR_BOTH);
Test ecdh = 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), dhValue, ok, nok);
Test ecdsa = CommandTest.expect(new Command.ECDSA_sign(this.card, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.Signature_ALG_ECDSA_SHA, ECTesterApplet.EXPORT_FALSE, null), dhValue, ok, nok);
diff --git a/src/cz/crcs/ectester/reader/test/CardMiscSuite.java b/src/cz/crcs/ectester/reader/test/CardMiscSuite.java
index acd8a04..dd49708 100644
--- a/src/cz/crcs/ectester/reader/test/CardMiscSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CardMiscSuite.java
@@ -3,12 +3,10 @@ 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_Params;
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.util.ECUtil;
import cz.crcs.ectester.data.EC_Store;
import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTesterReader;
@@ -25,7 +23,7 @@ import java.util.Map;
public class CardMiscSuite extends CardTestSuite {
public CardMiscSuite(TestWriter writer, ECTesterReader.Config cfg, CardMngr cardManager) {
- super(writer, cfg, cardManager, "miscellaneous", new String[]{"preset"}, "Some miscellaneous tests, tries ECDH and ECDSA over supersingular curves, anomalous curves,",
+ super(writer, cfg, cardManager, "miscellaneous", new String[]{"preset", "random"}, "Some miscellaneous tests, tries ECDH and ECDSA over supersingular curves, anomalous curves,",
"Barreto-Naehrig curves with small embedding degree and CM discriminant, MNT curves,",
"some Montgomery curves transformed to short Weierstrass form and Curve25519 transformed to short Weierstrass form.");
}
@@ -58,7 +56,7 @@ public class CardMiscSuite extends CardTestSuite {
}
Test set = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), Result.ExpectedValue.SUCCESS);
- Test generate = genOrPreset(curve, Result.ExpectedValue.ANY, ECTesterApplet.KEYPAIR_BOTH);
+ Test generate = setupKeypairs(curve, Result.ExpectedValue.ANY, ECTesterApplet.KEYPAIR_BOTH);
Test ka = 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), expected);
Test sig = CommandTest.expect(new Command.ECDSA_sign(this.card, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.Signature_ALG_ECDSA_SHA, ECTesterApplet.EXPORT_FALSE, null), expected);
Test perform = CompoundTest.all(Result.ExpectedValue.SUCCESS, "Perform ECDH and ECDSA.", ka, sig);
diff --git a/src/cz/crcs/ectester/reader/test/CardTestSuite.java b/src/cz/crcs/ectester/reader/test/CardTestSuite.java
index 87f6271..fc60ae5 100644
--- a/src/cz/crcs/ectester/reader/test/CardTestSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CardTestSuite.java
@@ -47,16 +47,26 @@ public abstract class CardTestSuite extends TestSuite {
}
}
- public Test genOrPreset(EC_Curve curve, Result.ExpectedValue expected, byte keyPair) {
- if (Arrays.asList(options).contains("preset") && cfg.testOptions.contains("preset")) {
+ public Test setupKeypairs(EC_Curve curve, Result.ExpectedValue expected, byte keyPair) {
+ if ((Arrays.asList(options).contains("preset") && cfg.testOptions.contains("preset")) || (Arrays.asList(options).contains("random") && cfg.testOptions.contains("random"))) {
Test setLocal = null;
if ((keyPair & ECTesterApplet.KEYPAIR_LOCAL) != 0) {
- EC_Params priv = ECUtil.fixedRandomKey(curve);
+ EC_Params priv;
+ if (cfg.testOptions.contains("preset")) {
+ priv = ECUtil.fixedRandomKey(curve);
+ } else {
+ priv = ECUtil.fullRandomKey(curve);
+ }
setLocal = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.CURVE_external, priv.getParams(), priv.flatten()), expected);
}
Test setRemote = null;
if ((keyPair & ECTesterApplet.KEYPAIR_REMOTE) != 0) {
- EC_Params pub = ECUtil.fixedRandomPoint(curve);
+ EC_Params pub;
+ if (cfg.testOptions.contains("preset")) {
+ pub = ECUtil.fixedRandomPoint(curve);
+ } else {
+ pub = ECUtil.fullRandomPoint(curve);
+ }
if (pub == null) {
setRemote = CommandTest.expect(new Command.Generate(this.card, ECTesterApplet.KEYPAIR_REMOTE), expected);
} else {
@@ -69,7 +79,13 @@ public abstract class CardTestSuite extends TestSuite {
} else if (keyPair == ECTesterApplet.KEYPAIR_REMOTE) {
return setRemote;
} else {
- return CompoundTest.all(expected, "Set semi-random parameters.", setLocal, setRemote);
+ String desc;
+ if (cfg.testOptions.contains("preset")) {
+ desc = "Set semi-random parameters.";
+ } else {
+ desc = "Set fully-random parameters.";
+ }
+ return CompoundTest.all(expected, desc, setLocal, setRemote);
}
} else {
return CommandTest.expect(new Command.Generate(this.card, keyPair), expected);
diff --git a/src/cz/crcs/ectester/reader/test/CardTestVectorSuite.java b/src/cz/crcs/ectester/reader/test/CardTestVectorSuite.java
index 3c4378a..d143852 100644
--- a/src/cz/crcs/ectester/reader/test/CardTestVectorSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CardTestVectorSuite.java
@@ -170,7 +170,7 @@ public class CardTestVectorSuite extends CardTestSuite {
System.arraycopy(derived, 0, padded, fieldSize - derived.length, derived.length);
derived = padded;
}
- if (ecdhData.getType() == EC_Consts.KeyAgreement_ALG_EC_SVDP_DH) {
+ if (ecdhData.getType() == EC_Consts.KeyAgreement_ALG_EC_SVDP_DH || ecdhData.getType() == EC_Consts.KeyAgreement_ALG_EC_SVDP_DHC) {
derived = md.digest(derived);
}
if (secret.length != derived.length) {
diff --git a/src/cz/crcs/ectester/reader/test/CardWrongSuite.java b/src/cz/crcs/ectester/reader/test/CardWrongSuite.java
index e1dbbe3..4a3a2e9 100644
--- a/src/cz/crcs/ectester/reader/test/CardWrongSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CardWrongSuite.java
@@ -31,7 +31,7 @@ import static cz.crcs.ectester.common.test.Result.ExpectedValue;
public class CardWrongSuite extends CardTestSuite {
public CardWrongSuite(TestWriter writer, ECTesterReader.Config cfg, CardMngr cardManager) {
- super(writer, cfg, cardManager, "wrong", new String[]{"preset"}, "The wrong curve suite tests whether the card rejects domain parameters which are not curves.");
+ super(writer, cfg, cardManager, "wrong", new String[]{"preset", "random"}, "The wrong curve suite tests whether the card rejects domain parameters which are not curves.");
}
@Override
@@ -50,7 +50,7 @@ public class CardWrongSuite extends CardTestSuite {
}
tests.add(key);
Test set = runTest(CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), ExpectedValue.FAILURE));
- Test generate = runTest(genOrPreset(curve, ExpectedValue.SUCCESS, ECTesterApplet.KEYPAIR_BOTH));
+ Test generate = runTest(setupKeypairs(curve, ExpectedValue.SUCCESS, ECTesterApplet.KEYPAIR_BOTH));
Test setup = runTest(CompoundTest.any(ExpectedValue.SUCCESS, "Set wrong curve and generate keypairs.", set, generate));
tests.add(setup);