fb8db84d |
1 | # $Id$ |
21bebf11 |
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-g1024 }" "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 |
fb8db84d |
41 | }" "degree not prime"; |
21bebf11 |
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-g512 }" |
69 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
70 | 32459289443738057373904596685867555624839649360339363831766212033645755638497600605981483758068704145575847399920657057013890131443911836862688141735006 |
71 | 1926426135381827210395257472845875618319108487720857260583372274154852182951667715700282388176779441854588992736540698662997833538400244234146123792411051; |
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-g512 }" |
86 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
87 | 4005285938812802884869056091732317348251189092239718246050415417461526884090403819686629744110427371766834314349639104763417430078158218519967583957470490; |
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-g512 }" |
100 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
101 | 4681416433015777166273237967077695060929667390767517698895765893629657943327105422863170288075976922965513789634412273770969873436435698540384711636714478; |
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-g512 }" |
114 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
115 | 1926426135381827210395257472845875618319108487720857260583372274154852182951667715700282388176779441854588992736540698662997833538400244234146123792411051 |
116 | 4352638698811548340197747445538844858722300429607827242718336069934302793791666196485760252202755936738278388907467170248315316920551773058188278017435713; |
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-g512 }" |
133 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
134 | 147362842169670001895012880214773009850 |
135 | 2724858367444359999445242030177839616322236716074995568862882751673310120217819866527178352161554441906932468828696070184371718373894212895486594604883052; |
136 | |
137 | "prime { catacomb-g512 }" |
138 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
139 | -147362842169670001895012880214773009850 |
140 | 1787060841912191849220487080420238350817474901097656088582267726968757275201342587344406900935515285588366012828182975089444331616359162696826008378664956; |
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-g512 }" |
194 | 3344609493517948819439808013094817124423784439045485500527919676470975342917009634212031124646834193243018749323077268170586751415510015906107400678608590 |
195 | -147362842169670001895012880214773009850 |
196 | 130340428707563070626027539288099297037336608388990593367322442443880297841210613523501678207607756678300142264348927299637006055881968995671289567513600 |
197 | 91626412351157168611316239052073981423 |
198 | 1964042259347008051177500376636104488225042199152152977412099367647894431543835858678217073603604876847502133350210611462670145543437496436961938287223663; |
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, 0x8497a9fa119ff34c9c24a156ed0d44a0c5f5d1f19fc9f0ed"; |
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 { |
fb8db84d |
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"; |
21bebf11 |
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 { |
fb8db84d |
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; |
21bebf11 |
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 | } |
0f3faccd |
285 | |
286 | toraw { |
fb8db84d |
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"; |
0f3faccd |
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 { |
fb8db84d |
304 | "prime { 29, 7, 16 }" "" -1 0; |
305 | "prime { 29, 7, 16 }" "160bad" 1 22; |
306 | "prime { 29, 7, 16 }" "00" 1 0; |
0f3faccd |
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 | } |