nx_rsa_pkcs1_v1_5_sha384_test.nx source
↩ module page · 551 lines · 14228 B
1// nx_rsa_pkcs1_v1_5_sha384_test.nx -- KAT vs openssl RSA-2048/SHA-384.
2// expect_exit: 0
3// license_tier: ORIGINAL
4
5import "nx_syscalls.nx"
6import "nx_u2048.nx"
7import "nx_rsa_pkcs1_v1_5_sha384.nx"
8
9func main() -> i64 {
10 let msg: *u8 = (sys_mmap(26)) as *u8
11 msg[0] = 0x68 as u8
12 msg[1] = 0x65 as u8
13 msg[2] = 0x6c as u8
14 msg[3] = 0x6c as u8
15 msg[4] = 0x6f as u8
16 msg[5] = 0x20 as u8
17 msg[6] = 0x6e as u8
18 msg[7] = 0x69 as u8
19 msg[8] = 0x73 as u8
20 msg[9] = 0x68 as u8
21 msg[10] = 0x69 as u8
22 msg[11] = 0x20 as u8
23 msg[12] = 0x73 as u8
24 msg[13] = 0x68 as u8
25 msg[14] = 0x61 as u8
26 msg[15] = 0x33 as u8
27 msg[16] = 0x38 as u8
28 msg[17] = 0x34 as u8
29 let sig: *u8 = (sys_mmap(264)) as *u8
30 sig[0] = 0x03 as u8
31 sig[1] = 0x2e as u8
32 sig[2] = 0x0d as u8
33 sig[3] = 0xb6 as u8
34 sig[4] = 0x43 as u8
35 sig[5] = 0x03 as u8
36 sig[6] = 0x24 as u8
37 sig[7] = 0xce as u8
38 sig[8] = 0xd6 as u8
39 sig[9] = 0xcd as u8
40 sig[10] = 0xb5 as u8
41 sig[11] = 0x01 as u8
42 sig[12] = 0xb5 as u8
43 sig[13] = 0xbd as u8
44 sig[14] = 0xdf as u8
45 sig[15] = 0xda as u8
46 sig[16] = 0x9a as u8
47 sig[17] = 0x9f as u8
48 sig[18] = 0x13 as u8
49 sig[19] = 0xf1 as u8
50 sig[20] = 0xec as u8
51 sig[21] = 0x43 as u8
52 sig[22] = 0x1f as u8
53 sig[23] = 0xfa as u8
54 sig[24] = 0x19 as u8
55 sig[25] = 0x27 as u8
56 sig[26] = 0xd0 as u8
57 sig[27] = 0x2e as u8
58 sig[28] = 0x6c as u8
59 sig[29] = 0x3b as u8
60 sig[30] = 0x2d as u8
61 sig[31] = 0x22 as u8
62 sig[32] = 0x78 as u8
63 sig[33] = 0x5c as u8
64 sig[34] = 0x0e as u8
65 sig[35] = 0xfe as u8
66 sig[36] = 0x1b as u8
67 sig[37] = 0xda as u8
68 sig[38] = 0xda as u8
69 sig[39] = 0xb6 as u8
70 sig[40] = 0xd6 as u8
71 sig[41] = 0x09 as u8
72 sig[42] = 0x8a as u8
73 sig[43] = 0x06 as u8
74 sig[44] = 0x38 as u8
75 sig[45] = 0x72 as u8
76 sig[46] = 0x72 as u8
77 sig[47] = 0x13 as u8
78 sig[48] = 0x7c as u8
79 sig[49] = 0x3c as u8
80 sig[50] = 0x42 as u8
81 sig[51] = 0x99 as u8
82 sig[52] = 0x45 as u8
83 sig[53] = 0x52 as u8
84 sig[54] = 0x37 as u8
85 sig[55] = 0x4f as u8
86 sig[56] = 0x25 as u8
87 sig[57] = 0x12 as u8
88 sig[58] = 0x14 as u8
89 sig[59] = 0x7a as u8
90 sig[60] = 0xd5 as u8
91 sig[61] = 0x33 as u8
92 sig[62] = 0xc1 as u8
93 sig[63] = 0x83 as u8
94 sig[64] = 0xbd as u8
95 sig[65] = 0x95 as u8
96 sig[66] = 0xc0 as u8
97 sig[67] = 0x7f as u8
98 sig[68] = 0xdc as u8
99 sig[69] = 0x25 as u8
100 sig[70] = 0x1d as u8
101 sig[71] = 0xe4 as u8
102 sig[72] = 0x75 as u8
103 sig[73] = 0x8d as u8
104 sig[74] = 0xda as u8
105 sig[75] = 0x20 as u8
106 sig[76] = 0x94 as u8
107 sig[77] = 0xde as u8
108 sig[78] = 0xd5 as u8
109 sig[79] = 0x6e as u8
110 sig[80] = 0x77 as u8
111 sig[81] = 0xf4 as u8
112 sig[82] = 0x29 as u8
113 sig[83] = 0xaa as u8
114 sig[84] = 0x8d as u8
115 sig[85] = 0x66 as u8
116 sig[86] = 0xa6 as u8
117 sig[87] = 0xf1 as u8
118 sig[88] = 0x93 as u8
119 sig[89] = 0x22 as u8
120 sig[90] = 0xa7 as u8
121 sig[91] = 0x27 as u8
122 sig[92] = 0xc7 as u8
123 sig[93] = 0x8c as u8
124 sig[94] = 0x16 as u8
125 sig[95] = 0x68 as u8
126 sig[96] = 0xf6 as u8
127 sig[97] = 0xdc as u8
128 sig[98] = 0x62 as u8
129 sig[99] = 0x05 as u8
130 sig[100] = 0x57 as u8
131 sig[101] = 0x53 as u8
132 sig[102] = 0xb5 as u8
133 sig[103] = 0x96 as u8
134 sig[104] = 0x16 as u8
135 sig[105] = 0x8a as u8
136 sig[106] = 0xe5 as u8
137 sig[107] = 0xd7 as u8
138 sig[108] = 0xa2 as u8
139 sig[109] = 0x34 as u8
140 sig[110] = 0x40 as u8
141 sig[111] = 0x73 as u8
142 sig[112] = 0x23 as u8
143 sig[113] = 0xd1 as u8
144 sig[114] = 0x79 as u8
145 sig[115] = 0x36 as u8
146 sig[116] = 0x45 as u8
147 sig[117] = 0x3d as u8
148 sig[118] = 0xef as u8
149 sig[119] = 0xf0 as u8
150 sig[120] = 0xf3 as u8
151 sig[121] = 0xa9 as u8
152 sig[122] = 0xa0 as u8
153 sig[123] = 0x04 as u8
154 sig[124] = 0xf2 as u8
155 sig[125] = 0x45 as u8
156 sig[126] = 0x1b as u8
157 sig[127] = 0xb3 as u8
158 sig[128] = 0x67 as u8
159 sig[129] = 0xfb as u8
160 sig[130] = 0xa4 as u8
161 sig[131] = 0xb2 as u8
162 sig[132] = 0x98 as u8
163 sig[133] = 0x28 as u8
164 sig[134] = 0x11 as u8
165 sig[135] = 0xb1 as u8
166 sig[136] = 0xdc as u8
167 sig[137] = 0x79 as u8
168 sig[138] = 0xd6 as u8
169 sig[139] = 0x61 as u8
170 sig[140] = 0xa6 as u8
171 sig[141] = 0xab as u8
172 sig[142] = 0x8f as u8
173 sig[143] = 0x86 as u8
174 sig[144] = 0xac as u8
175 sig[145] = 0x07 as u8
176 sig[146] = 0x9a as u8
177 sig[147] = 0xc0 as u8
178 sig[148] = 0x13 as u8
179 sig[149] = 0x14 as u8
180 sig[150] = 0xdf as u8
181 sig[151] = 0x5d as u8
182 sig[152] = 0x74 as u8
183 sig[153] = 0x3a as u8
184 sig[154] = 0x16 as u8
185 sig[155] = 0x0d as u8
186 sig[156] = 0x9c as u8
187 sig[157] = 0x5d as u8
188 sig[158] = 0x84 as u8
189 sig[159] = 0x62 as u8
190 sig[160] = 0x19 as u8
191 sig[161] = 0x96 as u8
192 sig[162] = 0xca as u8
193 sig[163] = 0x09 as u8
194 sig[164] = 0xac as u8
195 sig[165] = 0xcb as u8
196 sig[166] = 0x90 as u8
197 sig[167] = 0xed as u8
198 sig[168] = 0xc2 as u8
199 sig[169] = 0xab as u8
200 sig[170] = 0xc6 as u8
201 sig[171] = 0xcc as u8
202 sig[172] = 0x57 as u8
203 sig[173] = 0xe9 as u8
204 sig[174] = 0xf2 as u8
205 sig[175] = 0x31 as u8
206 sig[176] = 0x84 as u8
207 sig[177] = 0x76 as u8
208 sig[178] = 0xc4 as u8
209 sig[179] = 0x53 as u8
210 sig[180] = 0xcf as u8
211 sig[181] = 0xe6 as u8
212 sig[182] = 0xba as u8
213 sig[183] = 0x79 as u8
214 sig[184] = 0x85 as u8
215 sig[185] = 0x05 as u8
216 sig[186] = 0x30 as u8
217 sig[187] = 0x28 as u8
218 sig[188] = 0x90 as u8
219 sig[189] = 0x38 as u8
220 sig[190] = 0xb7 as u8
221 sig[191] = 0x84 as u8
222 sig[192] = 0xbc as u8
223 sig[193] = 0x6a as u8
224 sig[194] = 0x1f as u8
225 sig[195] = 0xff as u8
226 sig[196] = 0xb8 as u8
227 sig[197] = 0x6e as u8
228 sig[198] = 0x02 as u8
229 sig[199] = 0x46 as u8
230 sig[200] = 0x0d as u8
231 sig[201] = 0xa4 as u8
232 sig[202] = 0x3a as u8
233 sig[203] = 0x3b as u8
234 sig[204] = 0xc6 as u8
235 sig[205] = 0x4d as u8
236 sig[206] = 0xd1 as u8
237 sig[207] = 0xcd as u8
238 sig[208] = 0x40 as u8
239 sig[209] = 0x17 as u8
240 sig[210] = 0xde as u8
241 sig[211] = 0x0f as u8
242 sig[212] = 0x50 as u8
243 sig[213] = 0xb0 as u8
244 sig[214] = 0x5e as u8
245 sig[215] = 0x4c as u8
246 sig[216] = 0x34 as u8
247 sig[217] = 0x8c as u8
248 sig[218] = 0x02 as u8
249 sig[219] = 0xef as u8
250 sig[220] = 0x99 as u8
251 sig[221] = 0x0c as u8
252 sig[222] = 0xfd as u8
253 sig[223] = 0x22 as u8
254 sig[224] = 0xfe as u8
255 sig[225] = 0x90 as u8
256 sig[226] = 0xff as u8
257 sig[227] = 0x0f as u8
258 sig[228] = 0xcc as u8
259 sig[229] = 0x5e as u8
260 sig[230] = 0xb1 as u8
261 sig[231] = 0x83 as u8
262 sig[232] = 0x02 as u8
263 sig[233] = 0x1c as u8
264 sig[234] = 0x9a as u8
265 sig[235] = 0x5e as u8
266 sig[236] = 0xff as u8
267 sig[237] = 0xfa as u8
268 sig[238] = 0x3e as u8
269 sig[239] = 0x39 as u8
270 sig[240] = 0x5d as u8
271 sig[241] = 0xc7 as u8
272 sig[242] = 0xbe as u8
273 sig[243] = 0x68 as u8
274 sig[244] = 0x19 as u8
275 sig[245] = 0xa7 as u8
276 sig[246] = 0x47 as u8
277 sig[247] = 0xd0 as u8
278 sig[248] = 0x31 as u8
279 sig[249] = 0x24 as u8
280 sig[250] = 0xfb as u8
281 sig[251] = 0x23 as u8
282 sig[252] = 0x8c as u8
283 sig[253] = 0x8a as u8
284 sig[254] = 0x58 as u8
285 sig[255] = 0x58 as u8
286 let nbe: *u8 = (sys_mmap(264)) as *u8
287 nbe[0] = 0xa1 as u8
288 nbe[1] = 0x7b as u8
289 nbe[2] = 0x92 as u8
290 nbe[3] = 0xc0 as u8
291 nbe[4] = 0x47 as u8
292 nbe[5] = 0x44 as u8
293 nbe[6] = 0x75 as u8
294 nbe[7] = 0x9c as u8
295 nbe[8] = 0x9c as u8
296 nbe[9] = 0x69 as u8
297 nbe[10] = 0xa5 as u8
298 nbe[11] = 0x0e as u8
299 nbe[12] = 0xe1 as u8
300 nbe[13] = 0x33 as u8
301 nbe[14] = 0x01 as u8
302 nbe[15] = 0x49 as u8
303 nbe[16] = 0x34 as u8
304 nbe[17] = 0xf2 as u8
305 nbe[18] = 0x3d as u8
306 nbe[19] = 0x59 as u8
307 nbe[20] = 0x7d as u8
308 nbe[21] = 0x57 as u8
309 nbe[22] = 0xdd as u8
310 nbe[23] = 0x38 as u8
311 nbe[24] = 0xf2 as u8
312 nbe[25] = 0xc7 as u8
313 nbe[26] = 0x7f as u8
314 nbe[27] = 0x45 as u8
315 nbe[28] = 0x8b as u8
316 nbe[29] = 0x4e as u8
317 nbe[30] = 0xde as u8
318 nbe[31] = 0x17 as u8
319 nbe[32] = 0x53 as u8
320 nbe[33] = 0x22 as u8
321 nbe[34] = 0x7c as u8
322 nbe[35] = 0xcf as u8
323 nbe[36] = 0xcb as u8
324 nbe[37] = 0x92 as u8
325 nbe[38] = 0xe6 as u8
326 nbe[39] = 0x57 as u8
327 nbe[40] = 0xb8 as u8
328 nbe[41] = 0x7e as u8
329 nbe[42] = 0x9e as u8
330 nbe[43] = 0x97 as u8
331 nbe[44] = 0x9a as u8
332 nbe[45] = 0x1e as u8
333 nbe[46] = 0x14 as u8
334 nbe[47] = 0x99 as u8
335 nbe[48] = 0xaa as u8
336 nbe[49] = 0xac as u8
337 nbe[50] = 0x3b as u8
338 nbe[51] = 0x46 as u8
339 nbe[52] = 0x19 as u8
340 nbe[53] = 0xd3 as u8
341 nbe[54] = 0x99 as u8
342 nbe[55] = 0xb7 as u8
343 nbe[56] = 0x0b as u8
344 nbe[57] = 0xdc as u8
345 nbe[58] = 0x38 as u8
346 nbe[59] = 0x84 as u8
347 nbe[60] = 0x51 as u8
348 nbe[61] = 0x43 as u8
349 nbe[62] = 0xba as u8
350 nbe[63] = 0x5a as u8
351 nbe[64] = 0x87 as u8
352 nbe[65] = 0x98 as u8
353 nbe[66] = 0xc6 as u8
354 nbe[67] = 0x52 as u8
355 nbe[68] = 0x7c as u8
356 nbe[69] = 0x76 as u8
357 nbe[70] = 0xb7 as u8
358 nbe[71] = 0xab as u8
359 nbe[72] = 0xf6 as u8
360 nbe[73] = 0x84 as u8
361 nbe[74] = 0x17 as u8
362 nbe[75] = 0xa6 as u8
363 nbe[76] = 0x24 as u8
364 nbe[77] = 0x07 as u8
365 nbe[78] = 0xfb as u8
366 nbe[79] = 0x38 as u8
367 nbe[80] = 0x2e as u8
368 nbe[81] = 0x72 as u8
369 nbe[82] = 0x31 as u8
370 nbe[83] = 0xad as u8
371 nbe[84] = 0xda as u8
372 nbe[85] = 0x8c as u8
373 nbe[86] = 0x47 as u8
374 nbe[87] = 0x33 as u8
375 nbe[88] = 0x9f as u8
376 nbe[89] = 0x09 as u8
377 nbe[90] = 0x5f as u8
378 nbe[91] = 0x87 as u8
379 nbe[92] = 0x7f as u8
380 nbe[93] = 0xad as u8
381 nbe[94] = 0x95 as u8
382 nbe[95] = 0xb4 as u8
383 nbe[96] = 0xe8 as u8
384 nbe[97] = 0x21 as u8
385 nbe[98] = 0x16 as u8
386 nbe[99] = 0xc8 as u8
387 nbe[100] = 0x3c as u8
388 nbe[101] = 0x50 as u8
389 nbe[102] = 0x25 as u8
390 nbe[103] = 0xbd as u8
391 nbe[104] = 0x6e as u8
392 nbe[105] = 0x58 as u8
393 nbe[106] = 0x41 as u8
394 nbe[107] = 0x95 as u8
395 nbe[108] = 0x46 as u8
396 nbe[109] = 0x48 as u8
397 nbe[110] = 0xd6 as u8
398 nbe[111] = 0xc8 as u8
399 nbe[112] = 0xad as u8
400 nbe[113] = 0xf0 as u8
401 nbe[114] = 0xec as u8
402 nbe[115] = 0x8c as u8
403 nbe[116] = 0x1d as u8
404 nbe[117] = 0xa0 as u8
405 nbe[118] = 0x35 as u8
406 nbe[119] = 0x28 as u8
407 nbe[120] = 0x9d as u8
408 nbe[121] = 0xfa as u8
409 nbe[122] = 0x54 as u8
410 nbe[123] = 0xc1 as u8
411 nbe[124] = 0xf0 as u8
412 nbe[125] = 0x9d as u8
413 nbe[126] = 0xd5 as u8
414 nbe[127] = 0xca as u8
415 nbe[128] = 0xa6 as u8
416 nbe[129] = 0x74 as u8
417 nbe[130] = 0xb4 as u8
418 nbe[131] = 0x84 as u8
419 nbe[132] = 0x67 as u8
420 nbe[133] = 0x88 as u8
421 nbe[134] = 0x4f as u8
422 nbe[135] = 0x6b as u8
423 nbe[136] = 0x9d as u8
424 nbe[137] = 0x5f as u8
425 nbe[138] = 0x30 as u8
426 nbe[139] = 0x85 as u8
427 nbe[140] = 0xf0 as u8
428 nbe[141] = 0x28 as u8
429 nbe[142] = 0xf0 as u8
430 nbe[143] = 0xad as u8
431 nbe[144] = 0x3c as u8
432 nbe[145] = 0x19 as u8
433 nbe[146] = 0xa2 as u8
434 nbe[147] = 0xcd as u8
435 nbe[148] = 0x95 as u8
436 nbe[149] = 0x5f as u8
437 nbe[150] = 0x2c as u8
438 nbe[151] = 0x56 as u8
439 nbe[152] = 0x96 as u8
440 nbe[153] = 0x64 as u8
441 nbe[154] = 0xeb as u8
442 nbe[155] = 0xb9 as u8
443 nbe[156] = 0xbd as u8
444 nbe[157] = 0x79 as u8
445 nbe[158] = 0xdb as u8
446 nbe[159] = 0x0b as u8
447 nbe[160] = 0x06 as u8
448 nbe[161] = 0x3a as u8
449 nbe[162] = 0xf8 as u8
450 nbe[163] = 0xaf as u8
451 nbe[164] = 0x98 as u8
452 nbe[165] = 0x7d as u8
453 nbe[166] = 0xe7 as u8
454 nbe[167] = 0x83 as u8
455 nbe[168] = 0x77 as u8
456 nbe[169] = 0x94 as u8
457 nbe[170] = 0xcf as u8
458 nbe[171] = 0x2b as u8
459 nbe[172] = 0xe3 as u8
460 nbe[173] = 0xd6 as u8
461 nbe[174] = 0x8d as u8
462 nbe[175] = 0x79 as u8
463 nbe[176] = 0x22 as u8
464 nbe[177] = 0xd0 as u8
465 nbe[178] = 0x38 as u8
466 nbe[179] = 0xcd as u8
467 nbe[180] = 0x37 as u8
468 nbe[181] = 0xca as u8
469 nbe[182] = 0xf8 as u8
470 nbe[183] = 0x39 as u8
471 nbe[184] = 0x51 as u8
472 nbe[185] = 0x83 as u8
473 nbe[186] = 0x9c as u8
474 nbe[187] = 0xfa as u8
475 nbe[188] = 0x40 as u8
476 nbe[189] = 0xed as u8
477 nbe[190] = 0x0d as u8
478 nbe[191] = 0x74 as u8
479 nbe[192] = 0xdf as u8
480 nbe[193] = 0xa5 as u8
481 nbe[194] = 0x54 as u8
482 nbe[195] = 0xb8 as u8
483 nbe[196] = 0xfc as u8
484 nbe[197] = 0xc6 as u8
485 nbe[198] = 0x75 as u8
486 nbe[199] = 0xac as u8
487 nbe[200] = 0x51 as u8
488 nbe[201] = 0x71 as u8
489 nbe[202] = 0xd9 as u8
490 nbe[203] = 0x53 as u8
491 nbe[204] = 0x53 as u8
492 nbe[205] = 0x98 as u8
493 nbe[206] = 0xa7 as u8
494 nbe[207] = 0x43 as u8
495 nbe[208] = 0x99 as u8
496 nbe[209] = 0xcd as u8
497 nbe[210] = 0xae as u8
498 nbe[211] = 0xde as u8
499 nbe[212] = 0x3d as u8
500 nbe[213] = 0x86 as u8
501 nbe[214] = 0xd7 as u8
502 nbe[215] = 0xaa as u8
503 nbe[216] = 0xaf as u8
504 nbe[217] = 0xa3 as u8
505 nbe[218] = 0xc8 as u8
506 nbe[219] = 0x6e as u8
507 nbe[220] = 0xed as u8
508 nbe[221] = 0xa1 as u8
509 nbe[222] = 0x11 as u8
510 nbe[223] = 0xb8 as u8
511 nbe[224] = 0xc0 as u8
512 nbe[225] = 0xa3 as u8
513 nbe[226] = 0x85 as u8
514 nbe[227] = 0xe0 as u8
515 nbe[228] = 0x44 as u8
516 nbe[229] = 0x3e as u8
517 nbe[230] = 0xea as u8
518 nbe[231] = 0xf5 as u8
519 nbe[232] = 0x07 as u8
520 nbe[233] = 0xda as u8
521 nbe[234] = 0x8a as u8
522 nbe[235] = 0x59 as u8
523 nbe[236] = 0xc7 as u8
524 nbe[237] = 0xa2 as u8
525 nbe[238] = 0xf3 as u8
526 nbe[239] = 0x53 as u8
527 nbe[240] = 0xe5 as u8
528 nbe[241] = 0x41 as u8
529 nbe[242] = 0x4e as u8
530 nbe[243] = 0xe0 as u8
531 nbe[244] = 0x3e as u8
532 nbe[245] = 0xa2 as u8
533 nbe[246] = 0x21 as u8
534 nbe[247] = 0xe2 as u8
535 nbe[248] = 0xac as u8
536 nbe[249] = 0xeb as u8
537 nbe[250] = 0x4f as u8
538 nbe[251] = 0xb3 as u8
539 nbe[252] = 0x94 as u8
540 nbe[253] = 0x73 as u8
541 nbe[254] = 0x68 as u8
542 nbe[255] = 0xeb as u8
543 let nint: *i64 = u2048_alloc()
544 u2048_load_be(nint, nbe)
545 let v: i64 = rsa_pkcs1_v1_5_sha384_verify(msg, 18, sig, nint, 65537)
546 if v != NX_RSA_PKCS1_V15_384_OK { return v }
547 msg[0] = 0x00 as u8
548 let v2: i64 = rsa_pkcs1_v1_5_sha384_verify(msg, 18, sig, nint, 65537)
549 if v2 == NX_RSA_PKCS1_V15_384_OK { return 90 }
550 return 0
551}