2 * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
10 /* Internal tests for the poly1305 module */
16 #include "test_main_custom.h"
17 #include "internal/poly1305.h"
18 #include "../crypto/poly1305/poly1305_local.h"
23 const unsigned char data[1024];
32 /**********************************************************************
34 * Test of poly1305 internal functions
38 /* TODO : hex decoder / encoder should be implemented in testutil.c */
39 static void hexdump(const unsigned char *a, size_t len)
43 for (i = 0; i < len; i++)
44 fprintf(stderr, "%02x", a[i]);
47 static void benchmark_poly1305()
49 # ifdef OPENSSL_CPUID_OBJ
51 unsigned char key[32];
52 unsigned char buf[8192];
53 unsigned long long stopwatch;
54 unsigned long long OPENSSL_rdtsc();
57 memset (buf,0x55,sizeof(buf));
58 memset (key,0xAA,sizeof(key));
60 Poly1305_Init(&poly1305, key);
62 for (i=0;i<100000;i++)
63 Poly1305_Update(&poly1305,buf,sizeof(buf));
65 stopwatch = OPENSSL_rdtsc();
67 Poly1305_Update(&poly1305,buf,sizeof(buf));
68 stopwatch = OPENSSL_rdtsc() - stopwatch;
70 printf("%g\n",stopwatch/(double)(i*sizeof(buf)));
72 stopwatch = OPENSSL_rdtsc();
73 for (i=0;i<10000;i++) {
74 Poly1305_Init(&poly1305, key);
75 Poly1305_Update(&poly1305,buf,16);
76 Poly1305_Final(&poly1305,buf);
78 stopwatch = OPENSSL_rdtsc() - stopwatch;
80 printf("%g\n",stopwatch/(double)(i));
83 "Benchmarking of poly1305 isn't available on this platform\n");
87 static TESTDATA tests[] = {
95 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x67, 0x72,
96 0x61, 0x70, 0x68, 0x69, 0x63, 0x20, 0x46, 0x6f,
97 0x72, 0x75, 0x6d, 0x20, 0x52, 0x65, 0x73, 0x65,
98 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f,
106 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33,
107 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8,
108 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd,
109 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b
115 0xa8, 0x06, 0x1d, 0xc1, 0x30, 0x51, 0x36, 0xc6,
116 0xc2, 0x2b, 0x8b, 0xaf, 0x0c, 0x01, 0x27, 0xa9
121 * test vectors from "The Poly1305-AES message-authentication code"
133 0x85, 0x1f, 0xc4, 0x0c, 0x34, 0x67, 0xac, 0x0b,
134 0xe0, 0x5c, 0xc2, 0x04, 0x04, 0xf3, 0xf7, 0x00,
135 0x58, 0x0b, 0x3b, 0x0f, 0x94, 0x47, 0xbb, 0x1e,
136 0x69, 0xd0, 0x95, 0xb5, 0x92, 0x8b, 0x6d, 0xbc
142 0xf4, 0xc6, 0x33, 0xc3, 0x04, 0x4f, 0xc1, 0x45,
143 0xf8, 0x4f, 0x33, 0x5c, 0xb8, 0x19, 0x53, 0xde
157 0xa0, 0xf3, 0x08, 0x00, 0x00, 0xf4, 0x64, 0x00,
158 0xd0, 0xc7, 0xe9, 0x07, 0x6c, 0x83, 0x44, 0x03,
159 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
160 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7
166 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
167 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7
175 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
176 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
177 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
178 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
184 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
185 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
186 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
187 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef
193 0x0e, 0xe1, 0xc1, 0x6b, 0xb7, 0x3f, 0x0f, 0x4f,
194 0xd1, 0x98, 0x81, 0x75, 0x3c, 0x01, 0xcd, 0xbe
202 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
203 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
204 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
205 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
207 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
208 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
209 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
210 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9
216 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
217 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
218 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
219 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
225 0x51, 0x54, 0xad, 0x0d, 0x2c, 0xb2, 0x6e, 0x01,
226 0x27, 0x4f, 0xc5, 0x11, 0x48, 0x49, 0x1f, 0x1b
231 * self-generated vectors exercise "significant" lengths, such that
232 * are handled by different code paths
238 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
239 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
240 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
241 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
243 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
244 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
245 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
246 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf
252 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
253 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
254 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
255 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
261 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
262 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66
270 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
271 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
272 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
273 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
275 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
276 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67
282 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
283 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
284 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
285 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
292 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
293 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
301 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
302 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
303 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
304 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
306 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
307 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
308 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
309 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
311 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
312 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
313 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
314 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
320 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
321 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
322 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
323 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
329 0xbb, 0xb6, 0x13, 0xb2, 0xb6, 0xd7, 0x53, 0xba,
330 0x07, 0x39, 0x5b, 0x91, 0x6a, 0xae, 0xce, 0x15
338 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
339 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
340 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
341 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
343 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
344 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
345 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
346 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
348 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
349 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
350 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
351 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
353 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
354 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24
360 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
361 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
362 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
363 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
369 0xc7, 0x94, 0xd7, 0x05, 0x7d, 0x17, 0x78, 0xc4,
370 0xbb, 0xee, 0x0a, 0x39, 0xb3, 0xd9, 0x73, 0x42
378 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
379 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
380 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
381 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
383 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
384 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
385 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
386 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
388 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
389 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
390 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
391 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
393 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
394 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
395 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
396 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
402 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
403 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
404 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
405 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
411 0xff, 0xbc, 0xb9, 0xb3, 0x71, 0x42, 0x31, 0x52,
412 0xd7, 0xfc, 0xa5, 0xad, 0x04, 0x2f, 0xba, 0xa9
420 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
421 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
422 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
423 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
425 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
426 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
427 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
428 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
430 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
431 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
432 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
433 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
435 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
436 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
437 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
438 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
440 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
441 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66
447 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
448 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
449 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
450 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
456 0x06, 0x9e, 0xd6, 0xb8, 0xef, 0x0f, 0x20, 0x7b,
457 0x3e, 0x24, 0x3b, 0xb1, 0x01, 0x9f, 0xe6, 0x32
465 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
466 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
467 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
468 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
470 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
471 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
472 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
473 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
475 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
476 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
477 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
478 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
480 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
481 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
482 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
483 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
485 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
486 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
487 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
488 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
494 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
495 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
496 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
497 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
503 0xcc, 0xa3, 0x39, 0xd9, 0xa4, 0x5f, 0xa2, 0x36,
504 0x8c, 0x2c, 0x68, 0xb3, 0xa4, 0x17, 0x91, 0x33
512 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
513 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
514 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
515 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
517 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
518 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
519 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
520 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
522 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
523 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
524 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
525 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
527 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
528 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
529 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
530 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
532 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
533 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
534 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
535 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
537 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
538 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
539 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
540 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
542 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
543 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
544 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
545 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
547 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
548 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
549 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
550 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
552 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
553 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
554 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
555 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
561 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
562 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
563 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
564 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
570 0x53, 0xf6, 0xe8, 0x28, 0xa2, 0xf0, 0xfe, 0x0e,
571 0xe8, 0x15, 0xbf, 0x0b, 0xd5, 0x84, 0x1a, 0x34
579 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
580 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
581 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
582 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
584 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
585 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
586 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
587 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
589 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
590 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
591 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
592 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
594 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
595 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
596 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
597 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
599 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
600 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
601 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
602 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
604 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
605 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
606 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
607 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
609 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
610 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
611 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
612 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
614 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
615 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
616 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
617 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
619 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
620 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
621 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
622 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
624 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
625 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
626 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
627 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
633 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
634 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
635 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
636 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
642 0xb8, 0x46, 0xd4, 0x4e, 0x9b, 0xbd, 0x53, 0xce,
643 0xdf, 0xfb, 0xfb, 0xb6, 0xb7, 0xfa, 0x49, 0x33
648 * 4th power of the key spills to 131th bit in SIMD key setup
654 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
655 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
656 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
657 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
659 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
660 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
661 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
662 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
664 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
665 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
666 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
667 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
669 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
670 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
671 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
672 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
674 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
675 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
676 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
677 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
679 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
680 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
681 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
682 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
684 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
685 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
686 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
687 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
689 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
690 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
691 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
692 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
698 0xad, 0x62, 0x81, 0x07, 0xe8, 0x35, 0x1d, 0x0f,
699 0x2c, 0x23, 0x1a, 0x05, 0xdc, 0x4a, 0x41, 0x06,
700 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
701 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
707 0x07, 0x14, 0x5a, 0x4c, 0x02, 0xfe, 0x5f, 0xa3,
708 0x20, 0x36, 0xde, 0x68, 0xfa, 0xbe, 0x90, 0x66
713 * poly1305_ieee754.c failed this in final stage
719 0x84, 0x23, 0x64, 0xe1, 0x56, 0x33, 0x6c, 0x09,
720 0x98, 0xb9, 0x33, 0xa6, 0x23, 0x77, 0x26, 0x18,
721 0x0d, 0x9e, 0x3f, 0xdc, 0xbd, 0xe4, 0xcd, 0x5d,
722 0x17, 0x08, 0x0f, 0xc3, 0xbe, 0xb4, 0x96, 0x14,
724 0xd7, 0x12, 0x2c, 0x03, 0x74, 0x63, 0xff, 0x10,
725 0x4d, 0x73, 0xf1, 0x9c, 0x12, 0x70, 0x46, 0x28,
726 0xd4, 0x17, 0xc4, 0xc5, 0x4a, 0x3f, 0xe3, 0x0d,
727 0x3c, 0x3d, 0x77, 0x14, 0x38, 0x2d, 0x43, 0xb0,
729 0x38, 0x2a, 0x50, 0xa5, 0xde, 0xe5, 0x4b, 0xe8,
730 0x44, 0xb0, 0x76, 0xe8, 0xdf, 0x88, 0x20, 0x1a,
731 0x1c, 0xd4, 0x3b, 0x90, 0xeb, 0x21, 0x64, 0x3f,
732 0xa9, 0x6f, 0x39, 0xb5, 0x18, 0xaa, 0x83, 0x40,
734 0xc9, 0x42, 0xff, 0x3c, 0x31, 0xba, 0xf7, 0xc9,
735 0xbd, 0xbf, 0x0f, 0x31, 0xae, 0x3f, 0xa0, 0x96,
736 0xbf, 0x8c, 0x63, 0x03, 0x06, 0x09, 0x82, 0x9f,
737 0xe7, 0x2e, 0x17, 0x98, 0x24, 0x89, 0x0b, 0xc8,
739 0xe0, 0x8c, 0x31, 0x5c, 0x1c, 0xce, 0x2a, 0x83,
740 0x14, 0x4d, 0xbb, 0xff, 0x09, 0xf7, 0x4e, 0x3e,
741 0xfc, 0x77, 0x0b, 0x54, 0xd0, 0x98, 0x4a, 0x8f,
742 0x19, 0xb1, 0x47, 0x19, 0xe6, 0x36, 0x35, 0x64,
744 0x1d, 0x6b, 0x1e, 0xed, 0xf6, 0x3e, 0xfb, 0xf0,
745 0x80, 0xe1, 0x78, 0x3d, 0x32, 0x44, 0x54, 0x12,
746 0x11, 0x4c, 0x20, 0xde, 0x0b, 0x83, 0x7a, 0x0d,
747 0xfa, 0x33, 0xd6, 0xb8, 0x28, 0x25, 0xff, 0xf4,
749 0x4c, 0x9a, 0x70, 0xea, 0x54, 0xce, 0x47, 0xf0,
750 0x7d, 0xf6, 0x98, 0xe6, 0xb0, 0x33, 0x23, 0xb5,
751 0x30, 0x79, 0x36, 0x4a, 0x5f, 0xc3, 0xe9, 0xdd,
752 0x03, 0x43, 0x92, 0xbd, 0xde, 0x86, 0xdc, 0xcd,
754 0xda, 0x94, 0x32, 0x1c, 0x5e, 0x44, 0x06, 0x04,
755 0x89, 0x33, 0x6c, 0xb6, 0x5b, 0xf3, 0x98, 0x9c,
756 0x36, 0xf7, 0x28, 0x2c, 0x2f, 0x5d, 0x2b, 0x88,
757 0x2c, 0x17, 0x1e, 0x74
763 0x95, 0xd5, 0xc0, 0x05, 0x50, 0x3e, 0x51, 0x0d,
764 0x8c, 0xd0, 0xaa, 0x07, 0x2c, 0x4a, 0x4d, 0x06,
765 0x6e, 0xab, 0xc5, 0x2d, 0x11, 0x65, 0x3d, 0xf4,
766 0x7f, 0xbf, 0x63, 0xab, 0x19, 0x8b, 0xcc, 0x26
772 0xf2, 0x48, 0x31, 0x2e, 0x57, 0x8d, 0x9d, 0x58,
773 0xf8, 0xb7, 0xbb, 0x4d, 0x19, 0x10, 0x54, 0x31
778 * AVX2 in poly1305-x86.pl failed this with 176+32 split
784 0x24, 0x8a, 0xc3, 0x10, 0x85, 0xb6, 0xc2, 0xad,
785 0xaa, 0xa3, 0x82, 0x59, 0xa0, 0xd7, 0x19, 0x2c,
786 0x5c, 0x35, 0xd1, 0xbb, 0x4e, 0xf3, 0x9a, 0xd9,
787 0x4c, 0x38, 0xd1, 0xc8, 0x24, 0x79, 0xe2, 0xdd,
789 0x21, 0x59, 0xa0, 0x77, 0x02, 0x4b, 0x05, 0x89,
790 0xbc, 0x8a, 0x20, 0x10, 0x1b, 0x50, 0x6f, 0x0a,
791 0x1a, 0xd0, 0xbb, 0xab, 0x76, 0xe8, 0x3a, 0x83,
792 0xf1, 0xb9, 0x4b, 0xe6, 0xbe, 0xae, 0x74, 0xe8,
794 0x74, 0xca, 0xb6, 0x92, 0xc5, 0x96, 0x3a, 0x75,
795 0x43, 0x6b, 0x77, 0x61, 0x21, 0xec, 0x9f, 0x62,
796 0x39, 0x9a, 0x3e, 0x66, 0xb2, 0xd2, 0x27, 0x07,
797 0xda, 0xe8, 0x19, 0x33, 0xb6, 0x27, 0x7f, 0x3c,
799 0x85, 0x16, 0xbc, 0xbe, 0x26, 0xdb, 0xbd, 0x86,
800 0xf3, 0x73, 0x10, 0x3d, 0x7c, 0xf4, 0xca, 0xd1,
801 0x88, 0x8c, 0x95, 0x21, 0x18, 0xfb, 0xfb, 0xd0,
802 0xd7, 0xb4, 0xbe, 0xdc, 0x4a, 0xe4, 0x93, 0x6a,
804 0xff, 0x91, 0x15, 0x7e, 0x7a, 0xa4, 0x7c, 0x54,
805 0x44, 0x2e, 0xa7, 0x8d, 0x6a, 0xc2, 0x51, 0xd3,
806 0x24, 0xa0, 0xfb, 0xe4, 0x9d, 0x89, 0xcc, 0x35,
807 0x21, 0xb6, 0x6d, 0x16, 0xe9, 0xc6, 0x6a, 0x37,
809 0x09, 0x89, 0x4e, 0x4e, 0xb0, 0xa4, 0xee, 0xdc,
810 0x4a, 0xe1, 0x94, 0x68, 0xe6, 0x6b, 0x81, 0xf2,
812 0x71, 0x35, 0x1b, 0x1d, 0x92, 0x1e, 0xa5, 0x51,
813 0x04, 0x7a, 0xbc, 0xc6, 0xb8, 0x7a, 0x90, 0x1f,
814 0xde, 0x7d, 0xb7, 0x9f, 0xa1, 0x81, 0x8c, 0x11,
815 0x33, 0x6d, 0xbc, 0x07, 0x24, 0x4a, 0x40, 0xeb
821 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
822 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
823 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
824 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
830 0xbc, 0x93, 0x9b, 0xc5, 0x28, 0x14, 0x80, 0xfa,
831 0x99, 0xc6, 0xd6, 0x8c, 0x25, 0x8e, 0xc4, 0x2f
836 * test vectors from Google
848 0xc8, 0xaf, 0xaa, 0xc3, 0x31, 0xee, 0x37, 0x2c,
849 0xd6, 0x08, 0x2d, 0xe1, 0x34, 0x94, 0x3b, 0x17,
850 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
851 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c
857 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
858 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c
866 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f,
867 0x72, 0x6c, 0x64, 0x21
873 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
874 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
875 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
876 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35
882 0xa6, 0xf7, 0x45, 0x00, 0x8f, 0x81, 0xc9, 0x16,
883 0xa2, 0x0d, 0xcc, 0x74, 0xee, 0xf2, 0xb2, 0xf0
891 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
892 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
893 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
894 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
900 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
901 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
902 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
903 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35
909 0x49, 0xec, 0x78, 0x09, 0x0e, 0x48, 0x1e, 0xc6,
910 0xc2, 0x6b, 0x33, 0xb9, 0x1c, 0xcc, 0x03, 0x07
918 0x89, 0xda, 0xb8, 0x0b, 0x77, 0x17, 0xc1, 0xdb,
919 0x5d, 0xb4, 0x37, 0x86, 0x0a, 0x3f, 0x70, 0x21,
920 0x8e, 0x93, 0xe1, 0xb8, 0xf4, 0x61, 0xfb, 0x67,
921 0x7f, 0x16, 0xf3, 0x5f, 0x6f, 0x87, 0xe2, 0xa9,
923 0x1c, 0x99, 0xbc, 0x3a, 0x47, 0xac, 0xe4, 0x76,
924 0x40, 0xcc, 0x95, 0xc3, 0x45, 0xbe, 0x5e, 0xcc,
925 0xa5, 0xa3, 0x52, 0x3c, 0x35, 0xcc, 0x01, 0x89,
926 0x3a, 0xf0, 0xb6, 0x4a, 0x62, 0x03, 0x34, 0x27,
928 0x03, 0x72, 0xec, 0x12, 0x48, 0x2d, 0x1b, 0x1e,
929 0x36, 0x35, 0x61, 0x69, 0x8a, 0x57, 0x8b, 0x35,
930 0x98, 0x03, 0x49, 0x5b, 0xb4, 0xe2, 0xef, 0x19,
931 0x30, 0xb1, 0x7a, 0x51, 0x90, 0xb5, 0x80, 0xf1,
933 0x41, 0x30, 0x0d, 0xf3, 0x0a, 0xdb, 0xec, 0xa2,
934 0x8f, 0x64, 0x27, 0xa8, 0xbc, 0x1a, 0x99, 0x9f,
935 0xd5, 0x1c, 0x55, 0x4a, 0x01, 0x7d, 0x09, 0x5d,
936 0x8c, 0x3e, 0x31, 0x27, 0xda, 0xf9, 0xf5, 0x95
942 0x2d, 0x77, 0x3b, 0xe3, 0x7a, 0xdb, 0x1e, 0x4d,
943 0x68, 0x3b, 0xf0, 0x07, 0x5e, 0x79, 0xc4, 0xee,
944 0x03, 0x79, 0x18, 0x53, 0x5a, 0x7f, 0x99, 0xcc,
945 0xb7, 0x04, 0x0f, 0xb5, 0xf5, 0xf4, 0x3a, 0xea
951 0xc8, 0x5d, 0x15, 0xed, 0x44, 0xc3, 0x78, 0xd6,
952 0xb0, 0x0e, 0x23, 0x06, 0x4c, 0x7b, 0xcd, 0x51
960 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
961 0x17, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
963 0x06, 0xdb, 0x1f, 0x1f, 0x36, 0x8d, 0x69, 0x6a,
964 0x81, 0x0a, 0x34, 0x9c, 0x0c, 0x71, 0x4c, 0x9a,
965 0x5e, 0x78, 0x50, 0xc2, 0x40, 0x7d, 0x72, 0x1a,
966 0xcd, 0xed, 0x95, 0xe0, 0x18, 0xd7, 0xa8, 0x52,
968 0x66, 0xa6, 0xe1, 0x28, 0x9c, 0xdb, 0x4a, 0xeb,
969 0x18, 0xda, 0x5a, 0xc8, 0xa2, 0xb0, 0x02, 0x6d,
970 0x24, 0xa5, 0x9a, 0xd4, 0x85, 0x22, 0x7f, 0x3e,
971 0xae, 0xdb, 0xb2, 0xe7, 0xe3, 0x5e, 0x1c, 0x66,
973 0xcd, 0x60, 0xf9, 0xab, 0xf7, 0x16, 0xdc, 0xc9,
974 0xac, 0x42, 0x68, 0x2d, 0xd7, 0xda, 0xb2, 0x87,
975 0xa7, 0x02, 0x4c, 0x4e, 0xef, 0xc3, 0x21, 0xcc,
976 0x05, 0x74, 0xe1, 0x67, 0x93, 0xe3, 0x7c, 0xec,
978 0x03, 0xc5, 0xbd, 0xa4, 0x2b, 0x54, 0xc1, 0x14,
979 0xa8, 0x0b, 0x57, 0xaf, 0x26, 0x41, 0x6c, 0x7b,
980 0xe7, 0x42, 0x00, 0x5e, 0x20, 0x85, 0x5c, 0x73,
981 0xe2, 0x1d, 0xc8, 0xe2, 0xed, 0xc9, 0xd4, 0x35,
983 0xcb, 0x6f, 0x60, 0x59, 0x28, 0x00, 0x11, 0xc2,
984 0x70, 0xb7, 0x15, 0x70, 0x05, 0x1c, 0x1c, 0x9b,
985 0x30, 0x52, 0x12, 0x66, 0x20, 0xbc, 0x1e, 0x27,
986 0x30, 0xfa, 0x06, 0x6c, 0x7a, 0x50, 0x9d, 0x53,
988 0xc6, 0x0e, 0x5a, 0xe1, 0xb4, 0x0a, 0xa6, 0xe3,
989 0x9e, 0x49, 0x66, 0x92, 0x28, 0xc9, 0x0e, 0xec,
990 0xb4, 0xa5, 0x0d, 0xb3, 0x2a, 0x50, 0xbc, 0x49,
991 0xe9, 0x0b, 0x4f, 0x4b, 0x35, 0x9a, 0x1d, 0xfd,
993 0x11, 0x74, 0x9c, 0xd3, 0x86, 0x7f, 0xcf, 0x2f,
994 0xb7, 0xbb, 0x6c, 0xd4, 0x73, 0x8f, 0x6a, 0x4a,
995 0xd6, 0xf7, 0xca, 0x50, 0x58, 0xf7, 0x61, 0x88,
996 0x45, 0xaf, 0x9f, 0x02, 0x0f, 0x6c, 0x3b, 0x96,
998 0x7b, 0x8f, 0x4c, 0xd4, 0xa9, 0x1e, 0x28, 0x13,
999 0xb5, 0x07, 0xae, 0x66, 0xf2, 0xd3, 0x5c, 0x18,
1000 0x28, 0x4f, 0x72, 0x92, 0x18, 0x60, 0x62, 0xe1,
1001 0x0f, 0xd5, 0x51, 0x0d, 0x18, 0x77, 0x53, 0x51,
1003 0xef, 0x33, 0x4e, 0x76, 0x34, 0xab, 0x47, 0x43,
1004 0xf5, 0xb6, 0x8f, 0x49, 0xad, 0xca, 0xb3, 0x84,
1005 0xd3, 0xfd, 0x75, 0xf7, 0x39, 0x0f, 0x40, 0x06,
1006 0xef, 0x2a, 0x29, 0x5c, 0x8c, 0x7a, 0x07, 0x6a,
1008 0xd5, 0x45, 0x46, 0xcd, 0x25, 0xd2, 0x10, 0x7f,
1009 0xbe, 0x14, 0x36, 0xc8, 0x40, 0x92, 0x4a, 0xae,
1010 0xbe, 0x5b, 0x37, 0x08, 0x93, 0xcd, 0x63, 0xd1,
1011 0x32, 0x5b, 0x86, 0x16, 0xfc, 0x48, 0x10, 0x88,
1013 0x6b, 0xc1, 0x52, 0xc5, 0x32, 0x21, 0xb6, 0xdf,
1014 0x37, 0x31, 0x19, 0x39, 0x32, 0x55, 0xee, 0x72,
1015 0xbc, 0xaa, 0x88, 0x01, 0x74, 0xf1, 0x71, 0x7f,
1016 0x91, 0x84, 0xfa, 0x91, 0x64, 0x6f, 0x17, 0xa2,
1018 0x4a, 0xc5, 0x5d, 0x16, 0xbf, 0xdd, 0xca, 0x95,
1019 0x81, 0xa9, 0x2e, 0xda, 0x47, 0x92, 0x01, 0xf0,
1020 0xed, 0xbf, 0x63, 0x36, 0x00, 0xd6, 0x06, 0x6d,
1021 0x1a, 0xb3, 0x6d, 0x5d, 0x24, 0x15, 0xd7, 0x13,
1023 0x51, 0xbb, 0xcd, 0x60, 0x8a, 0x25, 0x10, 0x8d,
1024 0x25, 0x64, 0x19, 0x92, 0xc1, 0xf2, 0x6c, 0x53,
1025 0x1c, 0xf9, 0xf9, 0x02, 0x03, 0xbc, 0x4c, 0xc1,
1026 0x9f, 0x59, 0x27, 0xd8, 0x34, 0xb0, 0xa4, 0x71,
1028 0x16, 0xd3, 0x88, 0x4b, 0xbb, 0x16, 0x4b, 0x8e,
1029 0xc8, 0x83, 0xd1, 0xac, 0x83, 0x2e, 0x56, 0xb3,
1030 0x91, 0x8a, 0x98, 0x60, 0x1a, 0x08, 0xd1, 0x71,
1031 0x88, 0x15, 0x41, 0xd5, 0x94, 0xdb, 0x39, 0x9c,
1033 0x6a, 0xe6, 0x15, 0x12, 0x21, 0x74, 0x5a, 0xec,
1034 0x81, 0x4c, 0x45, 0xb0, 0xb0, 0x5b, 0x56, 0x54,
1035 0x36, 0xfd, 0x6f, 0x13, 0x7a, 0xa1, 0x0a, 0x0c,
1036 0x0b, 0x64, 0x37, 0x61, 0xdb, 0xd6, 0xf9, 0xa9,
1038 0xdc, 0xb9, 0x9b, 0x1a, 0x6e, 0x69, 0x08, 0x54,
1039 0xce, 0x07, 0x69, 0xcd, 0xe3, 0x97, 0x61, 0xd8,
1040 0x2f, 0xcd, 0xec, 0x15, 0xf0, 0xd9, 0x2d, 0x7d,
1041 0x8e, 0x94, 0xad, 0xe8, 0xeb, 0x83, 0xfb, 0xe0
1047 0x99, 0xe5, 0x82, 0x2d, 0xd4, 0x17, 0x3c, 0x99,
1048 0x5e, 0x3d, 0xae, 0x0d, 0xde, 0xfb, 0x97, 0x74,
1049 0x3f, 0xde, 0x3b, 0x08, 0x01, 0x34, 0xb3, 0x9f,
1050 0x76, 0xe9, 0xbf, 0x8d, 0x0e, 0x88, 0xd5, 0x46
1056 0x26, 0x37, 0x40, 0x8f, 0xe1, 0x30, 0x86, 0xea,
1057 0x73, 0xf9, 0x71, 0xe3, 0x42, 0x5e, 0x28, 0x20
1062 * test vectors from Hanno Böck
1068 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1069 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1070 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1071 0xcc, 0x80, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1073 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1074 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1075 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1076 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0xcc, 0xcc, 0xcc,
1078 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1079 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc5,
1080 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1081 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1083 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe3, 0xcc, 0xcc,
1084 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1085 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1086 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1088 0xcc, 0xcc, 0xcc, 0xcc, 0xac, 0xcc, 0xcc, 0xcc,
1089 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6,
1090 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00,
1091 0xaf, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1093 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xf5, 0x00, 0x00,
1094 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1095 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1096 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1098 0x00, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00,
1099 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1106 0x00, 0x00, 0x71, 0x92, 0x05, 0xa8, 0x52, 0x1d,
1114 0x7f, 0x1b, 0x02, 0x64, 0x00, 0x00, 0x00, 0x00,
1115 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1116 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1117 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc
1123 0x85, 0x59, 0xb8, 0x76, 0xec, 0xee, 0xd6, 0x6e,
1124 0xb3, 0x77, 0x98, 0xc0, 0x45, 0x7b, 0xaf, 0xf9
1132 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1133 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1134 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1135 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
1137 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x64
1143 0xe0, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00,
1144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1145 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1146 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
1152 0x00, 0xbd, 0x12, 0x58, 0x97, 0x8e, 0x20, 0x54,
1153 0x44, 0xc9, 0xaa, 0xaa, 0x82, 0x00, 0x6f, 0xed
1167 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1168 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1169 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1170 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c
1176 0x06, 0x12, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1177 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c
1185 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1186 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1187 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1188 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1190 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b,
1191 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1192 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1193 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1195 0x7b, 0x7b, 0x5c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1196 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1197 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1198 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1200 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1201 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1202 0x7b, 0x7b, 0x7b, 0x7b, 0x6e, 0x7b, 0x00, 0x7b,
1203 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1205 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1206 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1207 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b,
1208 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1210 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1211 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x5c,
1212 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1213 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1215 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1216 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1217 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1218 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1220 0x7b, 0x6e, 0x7b, 0x00, 0x13, 0x00, 0x00, 0x00,
1221 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1225 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1227 0x00, 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00,
1228 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1230 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
1231 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00,
1232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1233 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00,
1235 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2,
1238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1241 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00, 0x09,
1242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1243 0x00, 0x7a, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
1245 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
1246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc
1254 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1256 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
1257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7b
1263 0x33, 0x20, 0x5b, 0xbf, 0x9e, 0x9f, 0x8f, 0x72,
1264 0x12, 0xab, 0x9e, 0x2a, 0xb9, 0xb7, 0xe4, 0xa5
1272 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1273 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1274 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1275 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1277 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1278 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1279 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1280 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1282 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1283 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xe9,
1284 0xe9, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
1285 0xac, 0xac, 0xac, 0xac, 0x00, 0x00, 0xac, 0xac,
1287 0xec, 0x01, 0x00, 0xac, 0xac, 0xac, 0x2c, 0xac,
1288 0xa2, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
1289 0xac, 0xac, 0xac, 0xac, 0x64, 0xf2
1295 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
1296 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
1297 0x00, 0x00, 0xcf, 0x77, 0x77, 0x77, 0x77, 0x77,
1298 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77
1304 0x02, 0xee, 0x7c, 0x8c, 0x54, 0x6d, 0xde, 0xb1,
1305 0xa4, 0x67, 0xe4, 0xc3, 0x98, 0x11, 0x58, 0xb9
1310 * test vectors from Andrew Moon
1316 0x8e, 0x99, 0x3b, 0x9f, 0x48, 0x68, 0x12, 0x73,
1317 0xc2, 0x96, 0x50, 0xba, 0x32, 0xfc, 0x76, 0xce,
1318 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4,
1319 0x47, 0x6f, 0xb8, 0xc5, 0x31, 0xa1, 0x18, 0x6a,
1321 0xc0, 0xdf, 0xc1, 0x7c, 0x98, 0xdc, 0xe8, 0x7b,
1322 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72,
1323 0x71, 0xd2, 0xc2, 0x0f, 0x9b, 0x92, 0x8f, 0xe2,
1324 0x27, 0x0d, 0x6f, 0xb8, 0x63, 0xd5, 0x17, 0x38,
1326 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a,
1327 0xb9, 0x32, 0x16, 0x45, 0x48, 0xe5, 0x26, 0xae,
1328 0x90, 0x22, 0x43, 0x68, 0x51, 0x7a, 0xcf, 0xea,
1329 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda,
1331 0x99, 0x83, 0x2b, 0x61, 0xca, 0x01, 0xb6, 0xde,
1332 0x56, 0x24, 0x4a, 0x9e, 0x88, 0xd5, 0xf9, 0xb3,
1333 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6,
1334 0x59, 0x9b, 0x1f, 0x65, 0x4c, 0xb4, 0x5a, 0x74,
1342 0xee, 0xa6, 0xa7, 0x25, 0x1c, 0x1e, 0x72, 0x91,
1343 0x6d, 0x11, 0xc2, 0xcb, 0x21, 0x4d, 0x3c, 0x25,
1344 0x25, 0x39, 0x12, 0x1d, 0x8e, 0x23, 0x4e, 0x65,
1345 0x2d, 0x65, 0x1f, 0xa4, 0xc8, 0xcf, 0xf8, 0x80
1351 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5,
1352 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9
1356 { /* wrap 2^130-5 */
1360 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1361 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1367 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1368 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1369 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1376 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1377 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1385 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1386 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1392 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1394 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1395 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1401 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1402 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1410 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1411 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1412 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1413 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1415 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1416 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1422 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1424 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1425 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1431 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1432 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1440 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1441 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1442 0xfb, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
1443 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
1445 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
1446 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
1452 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1453 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1454 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1455 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1461 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1471 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1472 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1478 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1480 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1481 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1487 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1488 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1492 { /* 5*H+L reduction intermediate */
1496 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
1497 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1498 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
1499 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1501 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1502 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1503 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1504 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1510 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1511 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1512 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1513 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1519 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1520 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1524 { /* 5*H+L reduction final */
1528 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
1529 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1530 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
1531 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1533 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1534 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1541 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1542 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1543 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1544 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1550 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1551 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1557 static int test_poly1305(int idx)
1560 const TESTDATA test = tests[idx];
1561 const unsigned char *in = test.input.data;
1562 size_t inlen = test.input.size;
1563 const unsigned char *key = test.key.data;
1564 const unsigned char *expected = test.expected.data;
1565 size_t expectedlen = test.expected.size;
1566 unsigned char out[16];
1568 if (expectedlen != sizeof(out))
1571 Poly1305_Init(&poly1305, key);
1572 Poly1305_Update(&poly1305, in, inlen);
1573 Poly1305_Final(&poly1305, out);
1575 if (memcmp(out, expected, expectedlen) != 0) {
1576 fprintf(stderr, "Poly1305 test #%d failed.\n", idx);
1577 fprintf(stderr, "got: ");
1578 hexdump(out, sizeof(out));
1579 fprintf(stderr, "\nexpected: ");
1580 hexdump(expected, expectedlen);
1581 fprintf(stderr, "\n");
1586 Poly1305_Init(&poly1305, key);
1587 Poly1305_Update(&poly1305, in, 1);
1588 Poly1305_Update(&poly1305, in+1, inlen-1);
1589 Poly1305_Final(&poly1305, out);
1591 if (memcmp(out, expected, expectedlen) != 0) {
1592 fprintf(stderr, "Poly1305 test #%d/1+(N-1) failed.\n", idx);
1593 fprintf(stderr, "got: ");
1594 hexdump(out, sizeof(out));
1595 fprintf(stderr, "\nexpected: ");
1596 hexdump(expected, expectedlen);
1597 fprintf(stderr, "\n");
1603 size_t half = inlen / 2;
1605 Poly1305_Init(&poly1305, key);
1606 Poly1305_Update(&poly1305, in, half);
1607 Poly1305_Update(&poly1305, in+half, inlen-half);
1608 Poly1305_Final(&poly1305, out);
1610 if (memcmp(out, expected, expectedlen) != 0) {
1611 fprintf(stderr, "Poly1305 test #%d/2 failed.\n", idx);
1612 fprintf(stderr, "got: ");
1613 hexdump(out, sizeof(out));
1614 fprintf(stderr, "\nexpected: ");
1615 hexdump(expected, expectedlen);
1616 fprintf(stderr, "\n");
1620 for (half = 16; half < inlen; half += 16) {
1621 Poly1305_Init(&poly1305, key);
1622 Poly1305_Update(&poly1305, in, half);
1623 Poly1305_Update(&poly1305, in+half, inlen-half);
1624 Poly1305_Final(&poly1305, out);
1626 if (memcmp(out, expected, expectedlen) != 0) {
1627 fprintf(stderr, "Poly1305 test #%d/%" OSSLzu "+%" OSSLzu " failed.\n",
1628 idx, half, inlen-half);
1629 fprintf(stderr, "got: ");
1630 hexdump(out, sizeof(out));
1631 fprintf(stderr, "\nexpected: ");
1632 hexdump(expected, expectedlen);
1633 fprintf(stderr, "\n");
1642 int test_main(int argc, char **argv)
1648 for (iter_argv = 1; iter_argv < argc; iter_argv++) {
1649 if (strcmp(argv[iter_argv], "-b") == 0)
1651 else if (strcmp(argv[iter_argv], "-h") == 0)
1655 ADD_ALL_TESTS(test_poly1305, OSSL_NELEM(tests));
1657 result = run_tests(argv[0]);
1660 benchmark_poly1305();
1665 printf("-h\tThis help\n");
1666 printf("-b\tBenchmark in addition to the tests\n");