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 "internal/poly1305.h"
17 #include "../crypto/poly1305/poly1305_local.h"
22 const unsigned char data[1024];
32 const char *test_case_name;
34 const TESTDATA *test_data;
37 /**********************************************************************
39 * Test of poly1305 internal functions
43 static SIMPLE_FIXTURE setup_poly1305(const char *const test_case_name)
45 SIMPLE_FIXTURE fixture;
46 fixture.test_case_name = test_case_name;
50 /* TODO : hex decoder / encoder should be implemented in testutil.c */
51 static void hexdump(const unsigned char *a, size_t len)
55 for (i = 0; i < len; i++)
56 fprintf(stderr, "%02x", a[i]);
59 static int execute_poly1305(SIMPLE_FIXTURE fixture)
62 unsigned int i = fixture.test_num;
63 const TESTDATA *test = fixture.test_data;
64 const unsigned char *in = test->input.data;
65 size_t inlen = test->input.size;
66 const unsigned char *key = test->key.data;
67 const unsigned char *expected = test->expected.data;
68 size_t expectedlen = test->expected.size;
69 unsigned char out[16];
71 if (expectedlen != sizeof(out))
74 Poly1305_Init(&poly1305, key);
75 Poly1305_Update(&poly1305, in, inlen);
76 Poly1305_Final(&poly1305, out);
78 if (memcmp(out, expected, expectedlen) != 0) {
79 fprintf(stderr, "Poly1305 test #%d failed.\n", i);
80 fprintf(stderr, "got: ");
81 hexdump(out, sizeof(out));
82 fprintf(stderr, "\nexpected: ");
83 hexdump(expected, expectedlen);
84 fprintf(stderr, "\n");
89 Poly1305_Init(&poly1305, key);
90 Poly1305_Update(&poly1305, in, 1);
91 Poly1305_Update(&poly1305, in+1, inlen-1);
92 Poly1305_Final(&poly1305, out);
94 if (memcmp(out, expected, expectedlen) != 0) {
95 fprintf(stderr, "Poly1305 test #%d/1+(N-1) failed.\n", i);
96 fprintf(stderr, "got: ");
97 hexdump(out, sizeof(out));
98 fprintf(stderr, "\nexpected: ");
99 hexdump(expected, expectedlen);
100 fprintf(stderr, "\n");
106 size_t half = inlen / 2;
108 Poly1305_Init(&poly1305, key);
109 Poly1305_Update(&poly1305, in, half);
110 Poly1305_Update(&poly1305, in+half, inlen-half);
111 Poly1305_Final(&poly1305, out);
113 if (memcmp(out, expected, expectedlen) != 0) {
114 fprintf(stderr, "Poly1305 test #%d/2 failed.\n", i);
115 fprintf(stderr, "got: ");
116 hexdump(out, sizeof(out));
117 fprintf(stderr, "\nexpected: ");
118 hexdump(expected, expectedlen);
119 fprintf(stderr, "\n");
123 for (half = 16; half < inlen; half += 16) {
124 Poly1305_Init(&poly1305, key);
125 Poly1305_Update(&poly1305, in, half);
126 Poly1305_Update(&poly1305, in+half, inlen-half);
127 Poly1305_Final(&poly1305, out);
129 if (memcmp(out, expected, expectedlen) != 0) {
130 fprintf(stderr, "Poly1305 test #%d/%" OSSLzu "+%" OSSLzu " failed.\n",
131 i, half, inlen-half);
132 fprintf(stderr, "got: ");
133 hexdump(out, sizeof(out));
134 fprintf(stderr, "\nexpected: ");
135 hexdump(expected, expectedlen);
136 fprintf(stderr, "\n");
145 static void teardown_poly1305(SIMPLE_FIXTURE fixture)
147 ERR_print_errors_fp(stderr);
150 static void benchmark_poly1305()
152 # ifdef OPENSSL_CPUID_OBJ
154 unsigned char key[32];
155 unsigned char buf[8192];
156 unsigned long long stopwatch;
157 unsigned long long OPENSSL_rdtsc();
160 memset (buf,0x55,sizeof(buf));
161 memset (key,0xAA,sizeof(key));
163 Poly1305_Init(&poly1305, key);
165 for (i=0;i<100000;i++)
166 Poly1305_Update(&poly1305,buf,sizeof(buf));
168 stopwatch = OPENSSL_rdtsc();
169 for (i=0;i<10000;i++)
170 Poly1305_Update(&poly1305,buf,sizeof(buf));
171 stopwatch = OPENSSL_rdtsc() - stopwatch;
173 printf("%g\n",stopwatch/(double)(i*sizeof(buf)));
175 stopwatch = OPENSSL_rdtsc();
176 for (i=0;i<10000;i++) {
177 Poly1305_Init(&poly1305, key);
178 Poly1305_Update(&poly1305,buf,16);
179 Poly1305_Final(&poly1305,buf);
181 stopwatch = OPENSSL_rdtsc() - stopwatch;
183 printf("%g\n",stopwatch/(double)(i));
186 "Benchmarking of poly1305 isn't available on this platform\n");
190 /**********************************************************************
196 static TESTDATA tests[] = {
204 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x67, 0x72,
205 0x61, 0x70, 0x68, 0x69, 0x63, 0x20, 0x46, 0x6f,
206 0x72, 0x75, 0x6d, 0x20, 0x52, 0x65, 0x73, 0x65,
207 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f,
215 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33,
216 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8,
217 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd,
218 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b
224 0xa8, 0x06, 0x1d, 0xc1, 0x30, 0x51, 0x36, 0xc6,
225 0xc2, 0x2b, 0x8b, 0xaf, 0x0c, 0x01, 0x27, 0xa9
230 * test vectors from "The Poly1305-AES message-authentication code"
242 0x85, 0x1f, 0xc4, 0x0c, 0x34, 0x67, 0xac, 0x0b,
243 0xe0, 0x5c, 0xc2, 0x04, 0x04, 0xf3, 0xf7, 0x00,
244 0x58, 0x0b, 0x3b, 0x0f, 0x94, 0x47, 0xbb, 0x1e,
245 0x69, 0xd0, 0x95, 0xb5, 0x92, 0x8b, 0x6d, 0xbc
251 0xf4, 0xc6, 0x33, 0xc3, 0x04, 0x4f, 0xc1, 0x45,
252 0xf8, 0x4f, 0x33, 0x5c, 0xb8, 0x19, 0x53, 0xde
266 0xa0, 0xf3, 0x08, 0x00, 0x00, 0xf4, 0x64, 0x00,
267 0xd0, 0xc7, 0xe9, 0x07, 0x6c, 0x83, 0x44, 0x03,
268 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
269 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7
275 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
276 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7
284 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
285 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
286 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
287 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
293 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
294 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
295 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
296 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef
302 0x0e, 0xe1, 0xc1, 0x6b, 0xb7, 0x3f, 0x0f, 0x4f,
303 0xd1, 0x98, 0x81, 0x75, 0x3c, 0x01, 0xcd, 0xbe
311 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
312 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
313 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
314 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
316 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
317 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
318 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
319 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9
325 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
326 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
327 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
328 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
334 0x51, 0x54, 0xad, 0x0d, 0x2c, 0xb2, 0x6e, 0x01,
335 0x27, 0x4f, 0xc5, 0x11, 0x48, 0x49, 0x1f, 0x1b
340 * self-generated vectors exercise "significant" lengths, such that
341 * are handled by different code paths
347 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
348 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
349 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
350 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
352 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
353 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
354 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
355 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf
361 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
362 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
363 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
364 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
370 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
371 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66
379 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
380 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
381 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
382 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
384 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
385 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67
391 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
392 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
393 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
394 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
401 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
402 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
410 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
411 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
412 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
413 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
415 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
416 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
417 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
418 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
420 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
421 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
422 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
423 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
429 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
430 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
431 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
432 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
438 0xbb, 0xb6, 0x13, 0xb2, 0xb6, 0xd7, 0x53, 0xba,
439 0x07, 0x39, 0x5b, 0x91, 0x6a, 0xae, 0xce, 0x15
447 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
448 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
449 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
450 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
452 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
453 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
454 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
455 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
457 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
458 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
459 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
460 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
462 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
463 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24
469 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
470 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
471 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
472 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
478 0xc7, 0x94, 0xd7, 0x05, 0x7d, 0x17, 0x78, 0xc4,
479 0xbb, 0xee, 0x0a, 0x39, 0xb3, 0xd9, 0x73, 0x42
487 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
488 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
489 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
490 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
492 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
493 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
494 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
495 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
497 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
498 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
499 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
500 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
502 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
503 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
504 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
505 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
511 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
512 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
513 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
514 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
520 0xff, 0xbc, 0xb9, 0xb3, 0x71, 0x42, 0x31, 0x52,
521 0xd7, 0xfc, 0xa5, 0xad, 0x04, 0x2f, 0xba, 0xa9
529 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
530 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
531 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
532 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
534 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
535 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
536 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
537 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
539 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
540 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
541 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
542 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
544 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
545 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
546 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
547 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
549 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
550 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66
556 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
557 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
558 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
559 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
565 0x06, 0x9e, 0xd6, 0xb8, 0xef, 0x0f, 0x20, 0x7b,
566 0x3e, 0x24, 0x3b, 0xb1, 0x01, 0x9f, 0xe6, 0x32
574 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
575 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
576 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
577 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
579 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
580 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
581 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
582 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
584 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
585 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
586 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
587 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
589 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
590 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
591 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
592 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
594 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
595 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
596 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
597 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
603 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
604 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
605 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
606 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
612 0xcc, 0xa3, 0x39, 0xd9, 0xa4, 0x5f, 0xa2, 0x36,
613 0x8c, 0x2c, 0x68, 0xb3, 0xa4, 0x17, 0x91, 0x33
621 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
622 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
623 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
624 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
626 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
627 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
628 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
629 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
631 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
632 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
633 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
634 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
636 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
637 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
638 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
639 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
641 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
642 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
643 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
644 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
646 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
647 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
648 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
649 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
651 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
652 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
653 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
654 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
656 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
657 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
658 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
659 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
661 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
662 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
663 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
664 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
670 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
671 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
672 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
673 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
679 0x53, 0xf6, 0xe8, 0x28, 0xa2, 0xf0, 0xfe, 0x0e,
680 0xe8, 0x15, 0xbf, 0x0b, 0xd5, 0x84, 0x1a, 0x34
688 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
689 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
690 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
691 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
693 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
694 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
695 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
696 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
698 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
699 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
700 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
701 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
703 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
704 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
705 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
706 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
708 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
709 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
710 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
711 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
713 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
714 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
715 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
716 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
718 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
719 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
720 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
721 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
723 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
724 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
725 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
726 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
728 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
729 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
730 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
731 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
733 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
734 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
735 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
736 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
742 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
743 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
744 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
745 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
751 0xb8, 0x46, 0xd4, 0x4e, 0x9b, 0xbd, 0x53, 0xce,
752 0xdf, 0xfb, 0xfb, 0xb6, 0xb7, 0xfa, 0x49, 0x33
757 * 4th power of the key spills to 131th bit in SIMD key setup
763 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
764 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
765 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
766 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
768 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
769 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
770 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
771 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
773 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
774 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
775 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
776 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
778 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
779 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
780 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
781 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
783 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
784 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
785 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
786 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
788 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
789 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
790 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
791 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
793 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
794 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
795 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
796 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
798 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
799 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
800 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
801 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
807 0xad, 0x62, 0x81, 0x07, 0xe8, 0x35, 0x1d, 0x0f,
808 0x2c, 0x23, 0x1a, 0x05, 0xdc, 0x4a, 0x41, 0x06,
809 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
810 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
816 0x07, 0x14, 0x5a, 0x4c, 0x02, 0xfe, 0x5f, 0xa3,
817 0x20, 0x36, 0xde, 0x68, 0xfa, 0xbe, 0x90, 0x66
822 * poly1305_ieee754.c failed this in final stage
828 0x84, 0x23, 0x64, 0xe1, 0x56, 0x33, 0x6c, 0x09,
829 0x98, 0xb9, 0x33, 0xa6, 0x23, 0x77, 0x26, 0x18,
830 0x0d, 0x9e, 0x3f, 0xdc, 0xbd, 0xe4, 0xcd, 0x5d,
831 0x17, 0x08, 0x0f, 0xc3, 0xbe, 0xb4, 0x96, 0x14,
833 0xd7, 0x12, 0x2c, 0x03, 0x74, 0x63, 0xff, 0x10,
834 0x4d, 0x73, 0xf1, 0x9c, 0x12, 0x70, 0x46, 0x28,
835 0xd4, 0x17, 0xc4, 0xc5, 0x4a, 0x3f, 0xe3, 0x0d,
836 0x3c, 0x3d, 0x77, 0x14, 0x38, 0x2d, 0x43, 0xb0,
838 0x38, 0x2a, 0x50, 0xa5, 0xde, 0xe5, 0x4b, 0xe8,
839 0x44, 0xb0, 0x76, 0xe8, 0xdf, 0x88, 0x20, 0x1a,
840 0x1c, 0xd4, 0x3b, 0x90, 0xeb, 0x21, 0x64, 0x3f,
841 0xa9, 0x6f, 0x39, 0xb5, 0x18, 0xaa, 0x83, 0x40,
843 0xc9, 0x42, 0xff, 0x3c, 0x31, 0xba, 0xf7, 0xc9,
844 0xbd, 0xbf, 0x0f, 0x31, 0xae, 0x3f, 0xa0, 0x96,
845 0xbf, 0x8c, 0x63, 0x03, 0x06, 0x09, 0x82, 0x9f,
846 0xe7, 0x2e, 0x17, 0x98, 0x24, 0x89, 0x0b, 0xc8,
848 0xe0, 0x8c, 0x31, 0x5c, 0x1c, 0xce, 0x2a, 0x83,
849 0x14, 0x4d, 0xbb, 0xff, 0x09, 0xf7, 0x4e, 0x3e,
850 0xfc, 0x77, 0x0b, 0x54, 0xd0, 0x98, 0x4a, 0x8f,
851 0x19, 0xb1, 0x47, 0x19, 0xe6, 0x36, 0x35, 0x64,
853 0x1d, 0x6b, 0x1e, 0xed, 0xf6, 0x3e, 0xfb, 0xf0,
854 0x80, 0xe1, 0x78, 0x3d, 0x32, 0x44, 0x54, 0x12,
855 0x11, 0x4c, 0x20, 0xde, 0x0b, 0x83, 0x7a, 0x0d,
856 0xfa, 0x33, 0xd6, 0xb8, 0x28, 0x25, 0xff, 0xf4,
858 0x4c, 0x9a, 0x70, 0xea, 0x54, 0xce, 0x47, 0xf0,
859 0x7d, 0xf6, 0x98, 0xe6, 0xb0, 0x33, 0x23, 0xb5,
860 0x30, 0x79, 0x36, 0x4a, 0x5f, 0xc3, 0xe9, 0xdd,
861 0x03, 0x43, 0x92, 0xbd, 0xde, 0x86, 0xdc, 0xcd,
863 0xda, 0x94, 0x32, 0x1c, 0x5e, 0x44, 0x06, 0x04,
864 0x89, 0x33, 0x6c, 0xb6, 0x5b, 0xf3, 0x98, 0x9c,
865 0x36, 0xf7, 0x28, 0x2c, 0x2f, 0x5d, 0x2b, 0x88,
866 0x2c, 0x17, 0x1e, 0x74
872 0x95, 0xd5, 0xc0, 0x05, 0x50, 0x3e, 0x51, 0x0d,
873 0x8c, 0xd0, 0xaa, 0x07, 0x2c, 0x4a, 0x4d, 0x06,
874 0x6e, 0xab, 0xc5, 0x2d, 0x11, 0x65, 0x3d, 0xf4,
875 0x7f, 0xbf, 0x63, 0xab, 0x19, 0x8b, 0xcc, 0x26
881 0xf2, 0x48, 0x31, 0x2e, 0x57, 0x8d, 0x9d, 0x58,
882 0xf8, 0xb7, 0xbb, 0x4d, 0x19, 0x10, 0x54, 0x31
887 * AVX2 in poly1305-x86.pl failed this with 176+32 split
893 0x24, 0x8a, 0xc3, 0x10, 0x85, 0xb6, 0xc2, 0xad,
894 0xaa, 0xa3, 0x82, 0x59, 0xa0, 0xd7, 0x19, 0x2c,
895 0x5c, 0x35, 0xd1, 0xbb, 0x4e, 0xf3, 0x9a, 0xd9,
896 0x4c, 0x38, 0xd1, 0xc8, 0x24, 0x79, 0xe2, 0xdd,
898 0x21, 0x59, 0xa0, 0x77, 0x02, 0x4b, 0x05, 0x89,
899 0xbc, 0x8a, 0x20, 0x10, 0x1b, 0x50, 0x6f, 0x0a,
900 0x1a, 0xd0, 0xbb, 0xab, 0x76, 0xe8, 0x3a, 0x83,
901 0xf1, 0xb9, 0x4b, 0xe6, 0xbe, 0xae, 0x74, 0xe8,
903 0x74, 0xca, 0xb6, 0x92, 0xc5, 0x96, 0x3a, 0x75,
904 0x43, 0x6b, 0x77, 0x61, 0x21, 0xec, 0x9f, 0x62,
905 0x39, 0x9a, 0x3e, 0x66, 0xb2, 0xd2, 0x27, 0x07,
906 0xda, 0xe8, 0x19, 0x33, 0xb6, 0x27, 0x7f, 0x3c,
908 0x85, 0x16, 0xbc, 0xbe, 0x26, 0xdb, 0xbd, 0x86,
909 0xf3, 0x73, 0x10, 0x3d, 0x7c, 0xf4, 0xca, 0xd1,
910 0x88, 0x8c, 0x95, 0x21, 0x18, 0xfb, 0xfb, 0xd0,
911 0xd7, 0xb4, 0xbe, 0xdc, 0x4a, 0xe4, 0x93, 0x6a,
913 0xff, 0x91, 0x15, 0x7e, 0x7a, 0xa4, 0x7c, 0x54,
914 0x44, 0x2e, 0xa7, 0x8d, 0x6a, 0xc2, 0x51, 0xd3,
915 0x24, 0xa0, 0xfb, 0xe4, 0x9d, 0x89, 0xcc, 0x35,
916 0x21, 0xb6, 0x6d, 0x16, 0xe9, 0xc6, 0x6a, 0x37,
918 0x09, 0x89, 0x4e, 0x4e, 0xb0, 0xa4, 0xee, 0xdc,
919 0x4a, 0xe1, 0x94, 0x68, 0xe6, 0x6b, 0x81, 0xf2,
921 0x71, 0x35, 0x1b, 0x1d, 0x92, 0x1e, 0xa5, 0x51,
922 0x04, 0x7a, 0xbc, 0xc6, 0xb8, 0x7a, 0x90, 0x1f,
923 0xde, 0x7d, 0xb7, 0x9f, 0xa1, 0x81, 0x8c, 0x11,
924 0x33, 0x6d, 0xbc, 0x07, 0x24, 0x4a, 0x40, 0xeb
930 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
931 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
932 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
933 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
939 0xbc, 0x93, 0x9b, 0xc5, 0x28, 0x14, 0x80, 0xfa,
940 0x99, 0xc6, 0xd6, 0x8c, 0x25, 0x8e, 0xc4, 0x2f
945 * test vectors from Google
957 0xc8, 0xaf, 0xaa, 0xc3, 0x31, 0xee, 0x37, 0x2c,
958 0xd6, 0x08, 0x2d, 0xe1, 0x34, 0x94, 0x3b, 0x17,
959 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
960 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c
966 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
967 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c
975 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f,
976 0x72, 0x6c, 0x64, 0x21
982 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
983 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
984 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
985 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35
991 0xa6, 0xf7, 0x45, 0x00, 0x8f, 0x81, 0xc9, 0x16,
992 0xa2, 0x0d, 0xcc, 0x74, 0xee, 0xf2, 0xb2, 0xf0
1000 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1001 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1002 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1003 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1009 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
1010 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
1011 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
1012 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35
1018 0x49, 0xec, 0x78, 0x09, 0x0e, 0x48, 0x1e, 0xc6,
1019 0xc2, 0x6b, 0x33, 0xb9, 0x1c, 0xcc, 0x03, 0x07
1027 0x89, 0xda, 0xb8, 0x0b, 0x77, 0x17, 0xc1, 0xdb,
1028 0x5d, 0xb4, 0x37, 0x86, 0x0a, 0x3f, 0x70, 0x21,
1029 0x8e, 0x93, 0xe1, 0xb8, 0xf4, 0x61, 0xfb, 0x67,
1030 0x7f, 0x16, 0xf3, 0x5f, 0x6f, 0x87, 0xe2, 0xa9,
1032 0x1c, 0x99, 0xbc, 0x3a, 0x47, 0xac, 0xe4, 0x76,
1033 0x40, 0xcc, 0x95, 0xc3, 0x45, 0xbe, 0x5e, 0xcc,
1034 0xa5, 0xa3, 0x52, 0x3c, 0x35, 0xcc, 0x01, 0x89,
1035 0x3a, 0xf0, 0xb6, 0x4a, 0x62, 0x03, 0x34, 0x27,
1037 0x03, 0x72, 0xec, 0x12, 0x48, 0x2d, 0x1b, 0x1e,
1038 0x36, 0x35, 0x61, 0x69, 0x8a, 0x57, 0x8b, 0x35,
1039 0x98, 0x03, 0x49, 0x5b, 0xb4, 0xe2, 0xef, 0x19,
1040 0x30, 0xb1, 0x7a, 0x51, 0x90, 0xb5, 0x80, 0xf1,
1042 0x41, 0x30, 0x0d, 0xf3, 0x0a, 0xdb, 0xec, 0xa2,
1043 0x8f, 0x64, 0x27, 0xa8, 0xbc, 0x1a, 0x99, 0x9f,
1044 0xd5, 0x1c, 0x55, 0x4a, 0x01, 0x7d, 0x09, 0x5d,
1045 0x8c, 0x3e, 0x31, 0x27, 0xda, 0xf9, 0xf5, 0x95
1051 0x2d, 0x77, 0x3b, 0xe3, 0x7a, 0xdb, 0x1e, 0x4d,
1052 0x68, 0x3b, 0xf0, 0x07, 0x5e, 0x79, 0xc4, 0xee,
1053 0x03, 0x79, 0x18, 0x53, 0x5a, 0x7f, 0x99, 0xcc,
1054 0xb7, 0x04, 0x0f, 0xb5, 0xf5, 0xf4, 0x3a, 0xea
1060 0xc8, 0x5d, 0x15, 0xed, 0x44, 0xc3, 0x78, 0xd6,
1061 0xb0, 0x0e, 0x23, 0x06, 0x4c, 0x7b, 0xcd, 0x51
1069 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
1070 0x17, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
1072 0x06, 0xdb, 0x1f, 0x1f, 0x36, 0x8d, 0x69, 0x6a,
1073 0x81, 0x0a, 0x34, 0x9c, 0x0c, 0x71, 0x4c, 0x9a,
1074 0x5e, 0x78, 0x50, 0xc2, 0x40, 0x7d, 0x72, 0x1a,
1075 0xcd, 0xed, 0x95, 0xe0, 0x18, 0xd7, 0xa8, 0x52,
1077 0x66, 0xa6, 0xe1, 0x28, 0x9c, 0xdb, 0x4a, 0xeb,
1078 0x18, 0xda, 0x5a, 0xc8, 0xa2, 0xb0, 0x02, 0x6d,
1079 0x24, 0xa5, 0x9a, 0xd4, 0x85, 0x22, 0x7f, 0x3e,
1080 0xae, 0xdb, 0xb2, 0xe7, 0xe3, 0x5e, 0x1c, 0x66,
1082 0xcd, 0x60, 0xf9, 0xab, 0xf7, 0x16, 0xdc, 0xc9,
1083 0xac, 0x42, 0x68, 0x2d, 0xd7, 0xda, 0xb2, 0x87,
1084 0xa7, 0x02, 0x4c, 0x4e, 0xef, 0xc3, 0x21, 0xcc,
1085 0x05, 0x74, 0xe1, 0x67, 0x93, 0xe3, 0x7c, 0xec,
1087 0x03, 0xc5, 0xbd, 0xa4, 0x2b, 0x54, 0xc1, 0x14,
1088 0xa8, 0x0b, 0x57, 0xaf, 0x26, 0x41, 0x6c, 0x7b,
1089 0xe7, 0x42, 0x00, 0x5e, 0x20, 0x85, 0x5c, 0x73,
1090 0xe2, 0x1d, 0xc8, 0xe2, 0xed, 0xc9, 0xd4, 0x35,
1092 0xcb, 0x6f, 0x60, 0x59, 0x28, 0x00, 0x11, 0xc2,
1093 0x70, 0xb7, 0x15, 0x70, 0x05, 0x1c, 0x1c, 0x9b,
1094 0x30, 0x52, 0x12, 0x66, 0x20, 0xbc, 0x1e, 0x27,
1095 0x30, 0xfa, 0x06, 0x6c, 0x7a, 0x50, 0x9d, 0x53,
1097 0xc6, 0x0e, 0x5a, 0xe1, 0xb4, 0x0a, 0xa6, 0xe3,
1098 0x9e, 0x49, 0x66, 0x92, 0x28, 0xc9, 0x0e, 0xec,
1099 0xb4, 0xa5, 0x0d, 0xb3, 0x2a, 0x50, 0xbc, 0x49,
1100 0xe9, 0x0b, 0x4f, 0x4b, 0x35, 0x9a, 0x1d, 0xfd,
1102 0x11, 0x74, 0x9c, 0xd3, 0x86, 0x7f, 0xcf, 0x2f,
1103 0xb7, 0xbb, 0x6c, 0xd4, 0x73, 0x8f, 0x6a, 0x4a,
1104 0xd6, 0xf7, 0xca, 0x50, 0x58, 0xf7, 0x61, 0x88,
1105 0x45, 0xaf, 0x9f, 0x02, 0x0f, 0x6c, 0x3b, 0x96,
1107 0x7b, 0x8f, 0x4c, 0xd4, 0xa9, 0x1e, 0x28, 0x13,
1108 0xb5, 0x07, 0xae, 0x66, 0xf2, 0xd3, 0x5c, 0x18,
1109 0x28, 0x4f, 0x72, 0x92, 0x18, 0x60, 0x62, 0xe1,
1110 0x0f, 0xd5, 0x51, 0x0d, 0x18, 0x77, 0x53, 0x51,
1112 0xef, 0x33, 0x4e, 0x76, 0x34, 0xab, 0x47, 0x43,
1113 0xf5, 0xb6, 0x8f, 0x49, 0xad, 0xca, 0xb3, 0x84,
1114 0xd3, 0xfd, 0x75, 0xf7, 0x39, 0x0f, 0x40, 0x06,
1115 0xef, 0x2a, 0x29, 0x5c, 0x8c, 0x7a, 0x07, 0x6a,
1117 0xd5, 0x45, 0x46, 0xcd, 0x25, 0xd2, 0x10, 0x7f,
1118 0xbe, 0x14, 0x36, 0xc8, 0x40, 0x92, 0x4a, 0xae,
1119 0xbe, 0x5b, 0x37, 0x08, 0x93, 0xcd, 0x63, 0xd1,
1120 0x32, 0x5b, 0x86, 0x16, 0xfc, 0x48, 0x10, 0x88,
1122 0x6b, 0xc1, 0x52, 0xc5, 0x32, 0x21, 0xb6, 0xdf,
1123 0x37, 0x31, 0x19, 0x39, 0x32, 0x55, 0xee, 0x72,
1124 0xbc, 0xaa, 0x88, 0x01, 0x74, 0xf1, 0x71, 0x7f,
1125 0x91, 0x84, 0xfa, 0x91, 0x64, 0x6f, 0x17, 0xa2,
1127 0x4a, 0xc5, 0x5d, 0x16, 0xbf, 0xdd, 0xca, 0x95,
1128 0x81, 0xa9, 0x2e, 0xda, 0x47, 0x92, 0x01, 0xf0,
1129 0xed, 0xbf, 0x63, 0x36, 0x00, 0xd6, 0x06, 0x6d,
1130 0x1a, 0xb3, 0x6d, 0x5d, 0x24, 0x15, 0xd7, 0x13,
1132 0x51, 0xbb, 0xcd, 0x60, 0x8a, 0x25, 0x10, 0x8d,
1133 0x25, 0x64, 0x19, 0x92, 0xc1, 0xf2, 0x6c, 0x53,
1134 0x1c, 0xf9, 0xf9, 0x02, 0x03, 0xbc, 0x4c, 0xc1,
1135 0x9f, 0x59, 0x27, 0xd8, 0x34, 0xb0, 0xa4, 0x71,
1137 0x16, 0xd3, 0x88, 0x4b, 0xbb, 0x16, 0x4b, 0x8e,
1138 0xc8, 0x83, 0xd1, 0xac, 0x83, 0x2e, 0x56, 0xb3,
1139 0x91, 0x8a, 0x98, 0x60, 0x1a, 0x08, 0xd1, 0x71,
1140 0x88, 0x15, 0x41, 0xd5, 0x94, 0xdb, 0x39, 0x9c,
1142 0x6a, 0xe6, 0x15, 0x12, 0x21, 0x74, 0x5a, 0xec,
1143 0x81, 0x4c, 0x45, 0xb0, 0xb0, 0x5b, 0x56, 0x54,
1144 0x36, 0xfd, 0x6f, 0x13, 0x7a, 0xa1, 0x0a, 0x0c,
1145 0x0b, 0x64, 0x37, 0x61, 0xdb, 0xd6, 0xf9, 0xa9,
1147 0xdc, 0xb9, 0x9b, 0x1a, 0x6e, 0x69, 0x08, 0x54,
1148 0xce, 0x07, 0x69, 0xcd, 0xe3, 0x97, 0x61, 0xd8,
1149 0x2f, 0xcd, 0xec, 0x15, 0xf0, 0xd9, 0x2d, 0x7d,
1150 0x8e, 0x94, 0xad, 0xe8, 0xeb, 0x83, 0xfb, 0xe0
1156 0x99, 0xe5, 0x82, 0x2d, 0xd4, 0x17, 0x3c, 0x99,
1157 0x5e, 0x3d, 0xae, 0x0d, 0xde, 0xfb, 0x97, 0x74,
1158 0x3f, 0xde, 0x3b, 0x08, 0x01, 0x34, 0xb3, 0x9f,
1159 0x76, 0xe9, 0xbf, 0x8d, 0x0e, 0x88, 0xd5, 0x46
1165 0x26, 0x37, 0x40, 0x8f, 0xe1, 0x30, 0x86, 0xea,
1166 0x73, 0xf9, 0x71, 0xe3, 0x42, 0x5e, 0x28, 0x20
1171 * test vectors from Hanno Böck
1177 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1178 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1179 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1180 0xcc, 0x80, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1182 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1183 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1184 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1185 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0xcc, 0xcc, 0xcc,
1187 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1188 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc5,
1189 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1190 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1192 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe3, 0xcc, 0xcc,
1193 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1194 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1195 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1197 0xcc, 0xcc, 0xcc, 0xcc, 0xac, 0xcc, 0xcc, 0xcc,
1198 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6,
1199 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00,
1200 0xaf, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1202 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xf5, 0x00, 0x00,
1203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1207 0x00, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00,
1208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1215 0x00, 0x00, 0x71, 0x92, 0x05, 0xa8, 0x52, 0x1d,
1223 0x7f, 0x1b, 0x02, 0x64, 0x00, 0x00, 0x00, 0x00,
1224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1226 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc
1232 0x85, 0x59, 0xb8, 0x76, 0xec, 0xee, 0xd6, 0x6e,
1233 0xb3, 0x77, 0x98, 0xc0, 0x45, 0x7b, 0xaf, 0xf9
1241 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1242 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1243 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1244 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
1246 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x64
1252 0xe0, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00,
1253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1254 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1255 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
1261 0x00, 0xbd, 0x12, 0x58, 0x97, 0x8e, 0x20, 0x54,
1262 0x44, 0xc9, 0xaa, 0xaa, 0x82, 0x00, 0x6f, 0xed
1276 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1277 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1278 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1279 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c
1285 0x06, 0x12, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1286 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c
1294 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1295 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1296 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1297 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1299 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b,
1300 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1301 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1302 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1304 0x7b, 0x7b, 0x5c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1305 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1306 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1307 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1309 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1310 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1311 0x7b, 0x7b, 0x7b, 0x7b, 0x6e, 0x7b, 0x00, 0x7b,
1312 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1314 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1315 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1316 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b,
1317 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1319 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1320 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x5c,
1321 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1322 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1324 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1325 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1326 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1327 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1329 0x7b, 0x6e, 0x7b, 0x00, 0x13, 0x00, 0x00, 0x00,
1330 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1331 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1332 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1334 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1335 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1336 0x00, 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00,
1337 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1339 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
1340 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00,
1341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1342 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00,
1344 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2,
1347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1349 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1350 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00, 0x09,
1351 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1352 0x00, 0x7a, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
1354 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
1355 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc
1363 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1364 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1365 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
1366 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7b
1372 0x33, 0x20, 0x5b, 0xbf, 0x9e, 0x9f, 0x8f, 0x72,
1373 0x12, 0xab, 0x9e, 0x2a, 0xb9, 0xb7, 0xe4, 0xa5
1381 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1382 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1383 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1384 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1386 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1387 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1388 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1389 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1391 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1392 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xe9,
1393 0xe9, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
1394 0xac, 0xac, 0xac, 0xac, 0x00, 0x00, 0xac, 0xac,
1396 0xec, 0x01, 0x00, 0xac, 0xac, 0xac, 0x2c, 0xac,
1397 0xa2, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
1398 0xac, 0xac, 0xac, 0xac, 0x64, 0xf2
1404 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
1405 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
1406 0x00, 0x00, 0xcf, 0x77, 0x77, 0x77, 0x77, 0x77,
1407 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77
1413 0x02, 0xee, 0x7c, 0x8c, 0x54, 0x6d, 0xde, 0xb1,
1414 0xa4, 0x67, 0xe4, 0xc3, 0x98, 0x11, 0x58, 0xb9
1419 * test vectors from Andrew Moon
1425 0x8e, 0x99, 0x3b, 0x9f, 0x48, 0x68, 0x12, 0x73,
1426 0xc2, 0x96, 0x50, 0xba, 0x32, 0xfc, 0x76, 0xce,
1427 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4,
1428 0x47, 0x6f, 0xb8, 0xc5, 0x31, 0xa1, 0x18, 0x6a,
1430 0xc0, 0xdf, 0xc1, 0x7c, 0x98, 0xdc, 0xe8, 0x7b,
1431 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72,
1432 0x71, 0xd2, 0xc2, 0x0f, 0x9b, 0x92, 0x8f, 0xe2,
1433 0x27, 0x0d, 0x6f, 0xb8, 0x63, 0xd5, 0x17, 0x38,
1435 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a,
1436 0xb9, 0x32, 0x16, 0x45, 0x48, 0xe5, 0x26, 0xae,
1437 0x90, 0x22, 0x43, 0x68, 0x51, 0x7a, 0xcf, 0xea,
1438 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda,
1440 0x99, 0x83, 0x2b, 0x61, 0xca, 0x01, 0xb6, 0xde,
1441 0x56, 0x24, 0x4a, 0x9e, 0x88, 0xd5, 0xf9, 0xb3,
1442 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6,
1443 0x59, 0x9b, 0x1f, 0x65, 0x4c, 0xb4, 0x5a, 0x74,
1451 0xee, 0xa6, 0xa7, 0x25, 0x1c, 0x1e, 0x72, 0x91,
1452 0x6d, 0x11, 0xc2, 0xcb, 0x21, 0x4d, 0x3c, 0x25,
1453 0x25, 0x39, 0x12, 0x1d, 0x8e, 0x23, 0x4e, 0x65,
1454 0x2d, 0x65, 0x1f, 0xa4, 0xc8, 0xcf, 0xf8, 0x80
1460 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5,
1461 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9
1465 { /* wrap 2^130-5 */
1469 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1470 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1476 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1477 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1478 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1485 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1486 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1494 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1495 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1501 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1502 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1503 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1504 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1510 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1511 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1519 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1520 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1521 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1522 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1524 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1525 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1531 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1532 0x00, 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
1540 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1541 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1549 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1550 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1551 0xfb, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
1552 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
1554 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
1555 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
1561 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1562 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1563 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1564 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1570 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1571 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1580 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1581 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1587 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1588 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1589 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1590 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1596 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1597 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1601 { /* 5*H+L reduction intermediate */
1605 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
1606 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1607 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
1608 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1610 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1611 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1612 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1613 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1619 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1620 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1621 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1622 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1628 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1629 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1633 { /* 5*H+L reduction final */
1637 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
1638 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1639 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
1640 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1642 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1643 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1650 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1651 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1652 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1653 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1659 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1660 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1666 static int drive_tests(int idx)
1668 SETUP_TEST_FIXTURE(SIMPLE_FIXTURE, setup_poly1305);
1669 fixture.test_num = idx;
1670 fixture.test_data = &tests[idx];
1671 EXECUTE_TEST(execute_poly1305, teardown_poly1305);
1674 int main(int argc, char **argv)
1680 for (iter_argv = 1; iter_argv < argc; iter_argv++) {
1681 if (strcmp(argv[iter_argv], "-b") == 0)
1683 else if (strcmp(argv[iter_argv], "-h") == 0)
1687 ADD_ALL_TESTS(drive_tests, OSSL_NELEM(tests));
1689 result = run_tests(argv[0]);
1692 benchmark_poly1305();
1697 printf("-h\tThis help\n");
1698 printf("-b\tBenchmark in addition to the tests\n");