chiark / gitweb /
ec-bin (ec_binproj): Make curve setup faster.
[catacomb] / tests / group
1 # $Id$
2 #
3 # Test group abstraction, and a bunch of other things.
4
5 check {
6   "prime { 29, 7, 16 }" "ok";
7   "prime { 29, 6, 5 }" "not a subgroup";
8   "prime { 21, 2, 2 }" "p is not prime";
9   "prime { 29, 14, 9 }" "group order not prime";        
10
11   "ec { secp224r1 }" "ok";
12
13   "prime { catacomb-ll-160-1024 }" "ok";
14
15   "ec { 
16      prime:
17        0xdb7c2abf62e35e668076bead208b
18      primeproj: 
19        0xdb7c2abf62e35e668076bead2088, 0x659ef8ba043916eede8911702b22
20      0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500
21      0xdb7c2abf62e35e7628dfac6561c5 * 1
22   }" "ok";
23         
24   "ec { 
25      prime:
26        0xdb7c2abf62e35e668076bead208b
27      primeproj: 
28        0xdb7c2abf62e35e668076bead2088, 0x659ef8ba043916eede8911702b22
29        0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500
30        0xdb7c2abf62e35e7628dfac6561c5 * 2
31   }" "incorrect cofactor";
32
33   # --- This one's oakley-155 ---
34
35   "ec { 
36     binpoly: 0x0800000000000000000000004000000000000001
37     binproj: 0, 0x7338F
38     0xaa089ae4666a422e714651ad9372213fa65a93,
39       0x12d29c630dda76010397809a6816be6d2ffa815
40     0xaaaaaaaaaaaaaaaaaab1fcf1e206f421a3ea1b * 12
41   }" "degree not prime";
42
43 }
44
45 checkelt {
46   "prime { 29, 7, 16 }" 16 0;
47   "prime { 29, 7, 16 }" 2 -1;
48
49   "ec { secp112r1 } "
50     "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"
51     0;
52
53   "ec { 
54     binpoly: 0x0800000000000000000000004000000000000001
55     binproj: 0, 0x7338F
56     0xaa089ae4666a422e714651ad9372213fa65a93,
57       0x12d29c630dda76010397809a6816be6d2ffa815
58     0xaaaaaaaaaaaaaaaaaab1fcf1e206f421a3ea1b * 12
59   }"
60   "0x7b, 0x1c8"
61   -1;
62
63 }
64
65 mul {
66   "prime { 29, 7, 16 }" 8 7 27;
67
68   "prime { catacomb-ll-128-512 }"
69     3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590
70     32459289443738057373904596685867555624839649360339363831766212033645755638497600605981483758068704145575847399920657057013890131443911836862688141735006
71     3947634573386515057215934636174241616115542585724861166389751782289048647501330677434616929656928819642658111077814577650964230037753641582364366136933940;
72
73   "ec { nist-p192 }"
74     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
75        0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
76     "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
77        0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab"
78     "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da,
79        0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd"; 
80 }
81
82 sqr {
83   "prime { 29, 7, 16 }" 8 6;
84
85   "prime { catacomb-ll-128-512 }"
86     3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590
87     1140714521254648115393410274780412972862841854751618635120376750594285456137894804866135103112174518443866054055338095672091997366768745026933347678925721;
88
89   "ec { nist-p192 }"
90     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
91        0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
92     "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
93        0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab";    
94 }
95
96 inv {
97   "prime { 29, 7, 16 }" 9 13;
98   
99   "prime { catacomb-ll-128-512 }"
100     3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590
101     5876676858790113051879264634636727534122591023949326683791506203503263391580079717512212895466773363712551406785344528808275608153699681298608650332072384;
102
103   "ec { nist-p192 }"
104     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
105        0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
106     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
107        0xf8e6d46a003725879cefee1294db32298c06885ee186b7ee";      
108 }
109
110 div {
111   "prime { 29, 7, 16 }" 9 5 25;
112
113   "prime { catacomb-ll-128-512 }"
114     3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590
115     1926426135381827210395257472845875618319108487720857260583372274154852182951667715700282388176779441854588992736540698662997833538400244234146123792411051
116     24069337702503046127918930405335466791703796668849861281722901639361967869381088162761943434867448224639537469251486209856612215080111132649928233405085;
117
118   "ec { nist-p192 }"
119     "0x76e32a2557599e6edcd283201fb2b9aadfd0d359cbb263da,
120        0x782c37e372ba4520aa62e0fed121d49ef3b543660cfd05fd"
121      "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
122        0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
123     "0xdafebf5828783f2ad35534631588a3f629a70fb16982a888,
124        0xdd6bda0d993da0fa46b27bbc141b868f59331afa5c7e93ab";
125 }
126
127 exp {
128   "prime { 29, 7, 16 }" 3 12 16;
129
130   "prime { 29, 7, 16 }" 3 -12 20;
131
132   "prime { catacomb-ll-128-512 }"
133     3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590
134     147362842169670001895012880214773009850
135     5743039465765061017258257285641279669186626264432710496849307123351095219091264933384359874588390730293795471675184250790999035405886273905917889887366080;
136
137   "prime { catacomb-ll-128-512 }"
138     3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590
139     -147362842169670001895012880214773009850
140     3548613102603269389984811279864031309564549180885835723408511495891024326106890973751615845620404633717662823827170012116865930893524976817060348977482376;
141
142   "ec { nist-p192 }"
143     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
144       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
145     6277101735386680763835789423176059013767194773182842284081
146     inf;
147
148   "ec { nist-p192 }"
149     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
150       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
151     3131675836296406071791252329528905062261497366991742517193
152     "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71,
153       0xc6e91094cb34131e539c3db25f7f32670ef8dfe03a88b6fb";
154
155   "ec { nist-p192 }"
156     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
157       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
158     3131675836296406071791252329528905062261497366991742517193
159     "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71,
160       0xc6e91094cb34131e539c3db25f7f32670ef8dfe03a88b6fb";
161
162   "ec { nist-p192 }"
163     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
164       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
165     -3131675836296406071791252329528905062261497366991742517193
166     "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71,
167       0x3916ef6b34cbece1ac63c24da080cd97f107201fc5774904";
168 }
169
170 mexp-1 {
171   "prime { 29, 7, 16 }" 3 12 16;
172   "prime { 29, 7, 16 }" 3 -12 20;
173
174   "ec { nist-p192 }"
175     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
176       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
177     3131675836296406071791252329528905062261497366991742517193
178     "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71,
179       0xc6e91094cb34131e539c3db25f7f32670ef8dfe03a88b6fb";
180
181   "ec { nist-p192 }"
182     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
183       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
184     -3131675836296406071791252329528905062261497366991742517193
185     "0x7f55059a125dd0d2b40dc3a712248b2848a5e5fa11111f71,
186       0x3916ef6b34cbece1ac63c24da080cd97f107201fc5774904";
187 }
188
189 mexp-2 {
190   "prime { 29, 7, 16 }" 3 12 8 2 9;
191   "prime { 29, 7, 16 }" 3 -12 8 2 4;
192
193   "prime { catacomb-ll-128-512 }"
194    3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590
195    -147362842169670001895012880214773009850
196    130340428707563070626027539288099297037336608388990593367322442443880297841210613523501678207607756678300142264348927299637006055881968995671289567513600
197    91626412351157168611316239052073981423
198    1022777063245982511046303002728993765008184164346724419524981660559588777350492245381260023136750231183070065817596986237402046431653662723677455952067221;
199
200   "ec { nist-p192 }"
201     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
202       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
203     -3131675836296406071791252329528905062261497366991742517193
204     "0xea711858c23d92f9964655910bc90a197a915e90111cf11b, 
205       0x664189a1d8b2bb24f2b2ac64b19e2178118842e6ba9f4ad5"
206     1110875761630725856340142297645383444629395595869672555585
207     "0xaa25bb0bf38b06821e8641c1afb8bc078dbe11c3cf9bc97,
208        0xf1a4c09d621fb52736f6010ae90e9bc9771ac017a62098f9";
209 }
210
211 toint {
212   "prime { 29, 7, 16 }" 15 0 15;
213   "prime { 29, 7, 16 }" 0 0 0;
214
215   "ec { nist-p192 }" inf -1 0;
216
217   "ec { nist-p192 }" 
218     "0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,
219       0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
220     0 602046282375688656758213480587526111916698976636884684818;
221 }
222
223 fromint {
224   "prime { 29, 7, 16 }" 15 0 15;
225   "prime { 29, 7, 16 }" 0 0 0;
226   "prime { 29, 7, 16 }" 39527306161272833161358334459 0 19;
227
228   "ec { nist-p192 }" 1 -1 inf;
229   "ec { nist-p192 }" 0 
230     0 "0, 0x7b685605ee600cb363db5ea912f2bb5e3a0a2e0e60360f12";
231 }
232
233 toec {
234   "prime { 29, 7, 16 }" 0 -1 inf;
235   "ec { nist-p192 }" inf 0 inf;
236   "ec { secp112r1 }" 
237     "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"
238     0
239     "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500";
240 }
241
242 fromec {
243   "prime { 29, 7, 16 }" inf -1 0;
244   "prime { 29, 7, 16 }" "39527306161272833161358334459, 9" 0 19;
245
246   "ec { secp112r1 }" inf 0 inf;
247   "ec { nist-p192 }" "1, 5" -1 inf;
248
249   "ec { secp112r1 }" 
250     "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"
251     0
252     "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500";
253 }
254
255 tobuf {
256   "prime { 29, 7, 16 }" 22 -1 "00";
257   "prime { 29, 7, 16 }" 22 0 "000116";
258   "prime { 29, 7, 16 }" 0 -1 "0000";
259   "prime { 29, 7, 16 }" 0 0 "000100";
260
261   "ec { secp112r1 }" inf 0 "0000";
262   "ec { secp112r1 }"
263     "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"
264     0 "000e09487239995a5ee76b55f9c2f098000ea89ce5af8724c0a23e0e0ff77500";      
265   "ec { nist-p192 }"
266     "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"
267     0 "00010000188497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed";
268 }
269
270 frombuf {
271   "prime { 29, 7, 16 }" "00" -1 0;
272   "prime { 29, 7, 16 }" "000116" 3 22;
273   "prime { 29, 7, 16 }" "00000e" 2 0;
274   "prime { 29, 7, 16 }" "000100ff" 3 0;
275
276   "ec { secp112r1 }" "0000" 2 inf;
277   "ec { secp112r1 }"
278     "000e09487239995a5ee76b55f9c2f098000ea89ce5af8724c0a23e0e0ff77500f00d"
279     32 "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500";
280   "ec { secp112r1 }" "0001000001001ee7" -1 inf;
281   "ec { nist-p192 }"
282     "00010000188497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0eddead"
283     29, "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed";
284 }
285
286 toraw {
287   "prime { 29, 7, 16 }" 22 -1 "";
288   "prime { 29, 7, 16 }" 22 0 "16";
289   "prime { 29, 7, 16 }" 0 -1 "";
290   "prime { 29, 7, 16 }" 0 0 "00";
291   "prime { 4294967311, 364289, 18767 }" 4285559121 0 "00ff707151";
292   "prime { 4294967311, 364289, 18767 }" 4285559121 -1 "ff707151";
293
294   "ec { secp112r1 }" inf 0 "00";
295   "ec { secp112r1 }"
296     "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500"
297     0 "0409487239995a5ee76b55f9c2f098a89ce5af8724c0a23e0e0ff77500";      
298   "ec { nist-p192 }"
299     "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"
300     0 "040000000000000000000000000000000000000000000000008497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed";
301 }
302
303 fromraw {
304   "prime { 29, 7, 16 }" "" -1 0;
305   "prime { 29, 7, 16 }" "160bad" 1 22;
306   "prime { 29, 7, 16 }" "00" 1 0;
307   "prime { 4294967311, 364289, 18767 }" "00ff707151e7c0" 5 4285559121;
308   "prime { 4294967311, 364289, 18767 }" "ff707151" -1 0;
309
310   "ec { secp112r1 }" "" -1 inf;
311   "ec { secp112r1 }" "00" 1 inf;
312   "ec { secp112r1 }"
313     "0409487239995a5ee76b55f9c2f098a89ce5af8724c0a23e0e0ff775" -1 inf;
314   "ec { secp112r1 }"
315     "0409487239995a5ee76b55f9c2f098a89ce5af8724c0a23e0e0ff77500"
316     29 "0x09487239995a5ee76b55f9c2f098, 0xa89ce5af8724c0a23e0e0ff77500";
317   "ec { nist-p192 }"
318     "070000000000000000000000000000000000000000000000008497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed00deadbeef"
319     49 "0, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed";
320 }