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)
149 static void benchmark_poly1305()
151 # ifdef OPENSSL_CPUID_OBJ
153 unsigned char key[32];
154 unsigned char buf[8192];
155 unsigned long long stopwatch;
156 unsigned long long OPENSSL_rdtsc();
159 memset (buf,0x55,sizeof(buf));
160 memset (key,0xAA,sizeof(key));
162 Poly1305_Init(&poly1305, key);
164 for (i=0;i<100000;i++)
165 Poly1305_Update(&poly1305,buf,sizeof(buf));
167 stopwatch = OPENSSL_rdtsc();
168 for (i=0;i<10000;i++)
169 Poly1305_Update(&poly1305,buf,sizeof(buf));
170 stopwatch = OPENSSL_rdtsc() - stopwatch;
172 printf("%g\n",stopwatch/(double)(i*sizeof(buf)));
174 stopwatch = OPENSSL_rdtsc();
175 for (i=0;i<10000;i++) {
176 Poly1305_Init(&poly1305, key);
177 Poly1305_Update(&poly1305,buf,16);
178 Poly1305_Final(&poly1305,buf);
180 stopwatch = OPENSSL_rdtsc() - stopwatch;
182 printf("%g\n",stopwatch/(double)(i));
185 "Benchmarking of poly1305 isn't available on this platform\n");
189 /**********************************************************************
195 static TESTDATA tests[] = {
203 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x67, 0x72,
204 0x61, 0x70, 0x68, 0x69, 0x63, 0x20, 0x46, 0x6f,
205 0x72, 0x75, 0x6d, 0x20, 0x52, 0x65, 0x73, 0x65,
206 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f,
214 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33,
215 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8,
216 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd,
217 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b
223 0xa8, 0x06, 0x1d, 0xc1, 0x30, 0x51, 0x36, 0xc6,
224 0xc2, 0x2b, 0x8b, 0xaf, 0x0c, 0x01, 0x27, 0xa9
229 * test vectors from "The Poly1305-AES message-authentication code"
241 0x85, 0x1f, 0xc4, 0x0c, 0x34, 0x67, 0xac, 0x0b,
242 0xe0, 0x5c, 0xc2, 0x04, 0x04, 0xf3, 0xf7, 0x00,
243 0x58, 0x0b, 0x3b, 0x0f, 0x94, 0x47, 0xbb, 0x1e,
244 0x69, 0xd0, 0x95, 0xb5, 0x92, 0x8b, 0x6d, 0xbc
250 0xf4, 0xc6, 0x33, 0xc3, 0x04, 0x4f, 0xc1, 0x45,
251 0xf8, 0x4f, 0x33, 0x5c, 0xb8, 0x19, 0x53, 0xde
265 0xa0, 0xf3, 0x08, 0x00, 0x00, 0xf4, 0x64, 0x00,
266 0xd0, 0xc7, 0xe9, 0x07, 0x6c, 0x83, 0x44, 0x03,
267 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
268 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7
274 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
275 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7
283 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
284 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
285 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
286 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
292 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
293 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
294 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
295 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef
301 0x0e, 0xe1, 0xc1, 0x6b, 0xb7, 0x3f, 0x0f, 0x4f,
302 0xd1, 0x98, 0x81, 0x75, 0x3c, 0x01, 0xcd, 0xbe
310 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
311 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
312 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
313 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
315 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
316 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
317 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
318 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9
324 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
325 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
326 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
327 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
333 0x51, 0x54, 0xad, 0x0d, 0x2c, 0xb2, 0x6e, 0x01,
334 0x27, 0x4f, 0xc5, 0x11, 0x48, 0x49, 0x1f, 0x1b
339 * self-generated vectors exercise "significant" lengths, such that
340 * are handled by different code paths
346 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
347 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
348 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
349 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
351 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
352 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
353 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
354 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf
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 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
370 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66
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
390 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
391 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
392 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
393 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
400 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
401 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
409 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
410 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
411 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
412 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
414 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
415 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
416 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
417 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
419 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
420 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
421 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
422 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
428 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
429 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
430 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
431 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
437 0xbb, 0xb6, 0x13, 0xb2, 0xb6, 0xd7, 0x53, 0xba,
438 0x07, 0x39, 0x5b, 0x91, 0x6a, 0xae, 0xce, 0x15
446 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
447 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
448 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
449 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
451 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
452 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
453 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
454 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
456 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
457 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
458 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
459 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
461 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
462 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24
468 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
469 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
470 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
471 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
477 0xc7, 0x94, 0xd7, 0x05, 0x7d, 0x17, 0x78, 0xc4,
478 0xbb, 0xee, 0x0a, 0x39, 0xb3, 0xd9, 0x73, 0x42
486 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
487 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
488 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
489 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
491 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
492 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
493 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
494 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
496 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
497 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
498 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
499 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
501 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
502 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
503 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
504 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
510 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
511 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
512 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
513 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
519 0xff, 0xbc, 0xb9, 0xb3, 0x71, 0x42, 0x31, 0x52,
520 0xd7, 0xfc, 0xa5, 0xad, 0x04, 0x2f, 0xba, 0xa9
528 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
529 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
530 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
531 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
533 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
534 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
535 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
536 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
538 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
539 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
540 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
541 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
543 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
544 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
545 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
546 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
548 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
549 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66
555 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
556 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
557 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
558 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
564 0x06, 0x9e, 0xd6, 0xb8, 0xef, 0x0f, 0x20, 0x7b,
565 0x3e, 0x24, 0x3b, 0xb1, 0x01, 0x9f, 0xe6, 0x32
573 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
574 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
575 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
576 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
578 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
579 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
580 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
581 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
583 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
584 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
585 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
586 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
588 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
589 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
590 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
591 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
593 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
594 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
595 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
596 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
602 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
603 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
604 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
605 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
611 0xcc, 0xa3, 0x39, 0xd9, 0xa4, 0x5f, 0xa2, 0x36,
612 0x8c, 0x2c, 0x68, 0xb3, 0xa4, 0x17, 0x91, 0x33
620 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
621 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
622 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
623 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
625 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
626 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
627 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
628 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
630 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
631 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
632 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
633 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
635 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
636 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
637 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
638 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
640 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
641 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
642 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
643 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
645 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
646 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
647 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
648 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
650 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
651 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
652 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
653 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
655 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
656 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
657 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
658 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
660 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
661 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
662 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
663 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36
669 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
670 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
671 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
672 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
678 0x53, 0xf6, 0xe8, 0x28, 0xa2, 0xf0, 0xfe, 0x0e,
679 0xe8, 0x15, 0xbf, 0x0b, 0xd5, 0x84, 0x1a, 0x34
687 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
688 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
689 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
690 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
692 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
693 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
694 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
695 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
697 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
698 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
699 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
700 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
702 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
703 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
704 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
705 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
707 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
708 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
709 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
710 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
712 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
713 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
714 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
715 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
717 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
718 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
719 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
720 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
722 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
723 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
724 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
725 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
727 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
728 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
729 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
730 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
732 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
733 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
734 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
735 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61
741 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
742 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
743 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
744 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
750 0xb8, 0x46, 0xd4, 0x4e, 0x9b, 0xbd, 0x53, 0xce,
751 0xdf, 0xfb, 0xfb, 0xb6, 0xb7, 0xfa, 0x49, 0x33
756 * 4th power of the key spills to 131th bit in SIMD key setup
762 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
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,
767 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,
772 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,
777 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,
782 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,
787 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,
792 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,
797 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
806 0xad, 0x62, 0x81, 0x07, 0xe8, 0x35, 0x1d, 0x0f,
807 0x2c, 0x23, 0x1a, 0x05, 0xdc, 0x4a, 0x41, 0x06,
808 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
809 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
815 0x07, 0x14, 0x5a, 0x4c, 0x02, 0xfe, 0x5f, 0xa3,
816 0x20, 0x36, 0xde, 0x68, 0xfa, 0xbe, 0x90, 0x66
821 * poly1305_ieee754.c failed this in final stage
827 0x84, 0x23, 0x64, 0xe1, 0x56, 0x33, 0x6c, 0x09,
828 0x98, 0xb9, 0x33, 0xa6, 0x23, 0x77, 0x26, 0x18,
829 0x0d, 0x9e, 0x3f, 0xdc, 0xbd, 0xe4, 0xcd, 0x5d,
830 0x17, 0x08, 0x0f, 0xc3, 0xbe, 0xb4, 0x96, 0x14,
832 0xd7, 0x12, 0x2c, 0x03, 0x74, 0x63, 0xff, 0x10,
833 0x4d, 0x73, 0xf1, 0x9c, 0x12, 0x70, 0x46, 0x28,
834 0xd4, 0x17, 0xc4, 0xc5, 0x4a, 0x3f, 0xe3, 0x0d,
835 0x3c, 0x3d, 0x77, 0x14, 0x38, 0x2d, 0x43, 0xb0,
837 0x38, 0x2a, 0x50, 0xa5, 0xde, 0xe5, 0x4b, 0xe8,
838 0x44, 0xb0, 0x76, 0xe8, 0xdf, 0x88, 0x20, 0x1a,
839 0x1c, 0xd4, 0x3b, 0x90, 0xeb, 0x21, 0x64, 0x3f,
840 0xa9, 0x6f, 0x39, 0xb5, 0x18, 0xaa, 0x83, 0x40,
842 0xc9, 0x42, 0xff, 0x3c, 0x31, 0xba, 0xf7, 0xc9,
843 0xbd, 0xbf, 0x0f, 0x31, 0xae, 0x3f, 0xa0, 0x96,
844 0xbf, 0x8c, 0x63, 0x03, 0x06, 0x09, 0x82, 0x9f,
845 0xe7, 0x2e, 0x17, 0x98, 0x24, 0x89, 0x0b, 0xc8,
847 0xe0, 0x8c, 0x31, 0x5c, 0x1c, 0xce, 0x2a, 0x83,
848 0x14, 0x4d, 0xbb, 0xff, 0x09, 0xf7, 0x4e, 0x3e,
849 0xfc, 0x77, 0x0b, 0x54, 0xd0, 0x98, 0x4a, 0x8f,
850 0x19, 0xb1, 0x47, 0x19, 0xe6, 0x36, 0x35, 0x64,
852 0x1d, 0x6b, 0x1e, 0xed, 0xf6, 0x3e, 0xfb, 0xf0,
853 0x80, 0xe1, 0x78, 0x3d, 0x32, 0x44, 0x54, 0x12,
854 0x11, 0x4c, 0x20, 0xde, 0x0b, 0x83, 0x7a, 0x0d,
855 0xfa, 0x33, 0xd6, 0xb8, 0x28, 0x25, 0xff, 0xf4,
857 0x4c, 0x9a, 0x70, 0xea, 0x54, 0xce, 0x47, 0xf0,
858 0x7d, 0xf6, 0x98, 0xe6, 0xb0, 0x33, 0x23, 0xb5,
859 0x30, 0x79, 0x36, 0x4a, 0x5f, 0xc3, 0xe9, 0xdd,
860 0x03, 0x43, 0x92, 0xbd, 0xde, 0x86, 0xdc, 0xcd,
862 0xda, 0x94, 0x32, 0x1c, 0x5e, 0x44, 0x06, 0x04,
863 0x89, 0x33, 0x6c, 0xb6, 0x5b, 0xf3, 0x98, 0x9c,
864 0x36, 0xf7, 0x28, 0x2c, 0x2f, 0x5d, 0x2b, 0x88,
865 0x2c, 0x17, 0x1e, 0x74
871 0x95, 0xd5, 0xc0, 0x05, 0x50, 0x3e, 0x51, 0x0d,
872 0x8c, 0xd0, 0xaa, 0x07, 0x2c, 0x4a, 0x4d, 0x06,
873 0x6e, 0xab, 0xc5, 0x2d, 0x11, 0x65, 0x3d, 0xf4,
874 0x7f, 0xbf, 0x63, 0xab, 0x19, 0x8b, 0xcc, 0x26
880 0xf2, 0x48, 0x31, 0x2e, 0x57, 0x8d, 0x9d, 0x58,
881 0xf8, 0xb7, 0xbb, 0x4d, 0x19, 0x10, 0x54, 0x31
886 * AVX2 in poly1305-x86.pl failed this with 176+32 split
892 0x24, 0x8a, 0xc3, 0x10, 0x85, 0xb6, 0xc2, 0xad,
893 0xaa, 0xa3, 0x82, 0x59, 0xa0, 0xd7, 0x19, 0x2c,
894 0x5c, 0x35, 0xd1, 0xbb, 0x4e, 0xf3, 0x9a, 0xd9,
895 0x4c, 0x38, 0xd1, 0xc8, 0x24, 0x79, 0xe2, 0xdd,
897 0x21, 0x59, 0xa0, 0x77, 0x02, 0x4b, 0x05, 0x89,
898 0xbc, 0x8a, 0x20, 0x10, 0x1b, 0x50, 0x6f, 0x0a,
899 0x1a, 0xd0, 0xbb, 0xab, 0x76, 0xe8, 0x3a, 0x83,
900 0xf1, 0xb9, 0x4b, 0xe6, 0xbe, 0xae, 0x74, 0xe8,
902 0x74, 0xca, 0xb6, 0x92, 0xc5, 0x96, 0x3a, 0x75,
903 0x43, 0x6b, 0x77, 0x61, 0x21, 0xec, 0x9f, 0x62,
904 0x39, 0x9a, 0x3e, 0x66, 0xb2, 0xd2, 0x27, 0x07,
905 0xda, 0xe8, 0x19, 0x33, 0xb6, 0x27, 0x7f, 0x3c,
907 0x85, 0x16, 0xbc, 0xbe, 0x26, 0xdb, 0xbd, 0x86,
908 0xf3, 0x73, 0x10, 0x3d, 0x7c, 0xf4, 0xca, 0xd1,
909 0x88, 0x8c, 0x95, 0x21, 0x18, 0xfb, 0xfb, 0xd0,
910 0xd7, 0xb4, 0xbe, 0xdc, 0x4a, 0xe4, 0x93, 0x6a,
912 0xff, 0x91, 0x15, 0x7e, 0x7a, 0xa4, 0x7c, 0x54,
913 0x44, 0x2e, 0xa7, 0x8d, 0x6a, 0xc2, 0x51, 0xd3,
914 0x24, 0xa0, 0xfb, 0xe4, 0x9d, 0x89, 0xcc, 0x35,
915 0x21, 0xb6, 0x6d, 0x16, 0xe9, 0xc6, 0x6a, 0x37,
917 0x09, 0x89, 0x4e, 0x4e, 0xb0, 0xa4, 0xee, 0xdc,
918 0x4a, 0xe1, 0x94, 0x68, 0xe6, 0x6b, 0x81, 0xf2,
920 0x71, 0x35, 0x1b, 0x1d, 0x92, 0x1e, 0xa5, 0x51,
921 0x04, 0x7a, 0xbc, 0xc6, 0xb8, 0x7a, 0x90, 0x1f,
922 0xde, 0x7d, 0xb7, 0x9f, 0xa1, 0x81, 0x8c, 0x11,
923 0x33, 0x6d, 0xbc, 0x07, 0x24, 0x4a, 0x40, 0xeb
929 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
930 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
931 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
932 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
938 0xbc, 0x93, 0x9b, 0xc5, 0x28, 0x14, 0x80, 0xfa,
939 0x99, 0xc6, 0xd6, 0x8c, 0x25, 0x8e, 0xc4, 0x2f
944 * test vectors from Google
956 0xc8, 0xaf, 0xaa, 0xc3, 0x31, 0xee, 0x37, 0x2c,
957 0xd6, 0x08, 0x2d, 0xe1, 0x34, 0x94, 0x3b, 0x17,
958 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
959 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c
965 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
966 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c
974 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f,
975 0x72, 0x6c, 0x64, 0x21
981 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
982 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
983 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
984 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35
990 0xa6, 0xf7, 0x45, 0x00, 0x8f, 0x81, 0xc9, 0x16,
991 0xa2, 0x0d, 0xcc, 0x74, 0xee, 0xf2, 0xb2, 0xf0
999 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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
1008 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
1009 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
1010 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
1011 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35
1017 0x49, 0xec, 0x78, 0x09, 0x0e, 0x48, 0x1e, 0xc6,
1018 0xc2, 0x6b, 0x33, 0xb9, 0x1c, 0xcc, 0x03, 0x07
1026 0x89, 0xda, 0xb8, 0x0b, 0x77, 0x17, 0xc1, 0xdb,
1027 0x5d, 0xb4, 0x37, 0x86, 0x0a, 0x3f, 0x70, 0x21,
1028 0x8e, 0x93, 0xe1, 0xb8, 0xf4, 0x61, 0xfb, 0x67,
1029 0x7f, 0x16, 0xf3, 0x5f, 0x6f, 0x87, 0xe2, 0xa9,
1031 0x1c, 0x99, 0xbc, 0x3a, 0x47, 0xac, 0xe4, 0x76,
1032 0x40, 0xcc, 0x95, 0xc3, 0x45, 0xbe, 0x5e, 0xcc,
1033 0xa5, 0xa3, 0x52, 0x3c, 0x35, 0xcc, 0x01, 0x89,
1034 0x3a, 0xf0, 0xb6, 0x4a, 0x62, 0x03, 0x34, 0x27,
1036 0x03, 0x72, 0xec, 0x12, 0x48, 0x2d, 0x1b, 0x1e,
1037 0x36, 0x35, 0x61, 0x69, 0x8a, 0x57, 0x8b, 0x35,
1038 0x98, 0x03, 0x49, 0x5b, 0xb4, 0xe2, 0xef, 0x19,
1039 0x30, 0xb1, 0x7a, 0x51, 0x90, 0xb5, 0x80, 0xf1,
1041 0x41, 0x30, 0x0d, 0xf3, 0x0a, 0xdb, 0xec, 0xa2,
1042 0x8f, 0x64, 0x27, 0xa8, 0xbc, 0x1a, 0x99, 0x9f,
1043 0xd5, 0x1c, 0x55, 0x4a, 0x01, 0x7d, 0x09, 0x5d,
1044 0x8c, 0x3e, 0x31, 0x27, 0xda, 0xf9, 0xf5, 0x95
1050 0x2d, 0x77, 0x3b, 0xe3, 0x7a, 0xdb, 0x1e, 0x4d,
1051 0x68, 0x3b, 0xf0, 0x07, 0x5e, 0x79, 0xc4, 0xee,
1052 0x03, 0x79, 0x18, 0x53, 0x5a, 0x7f, 0x99, 0xcc,
1053 0xb7, 0x04, 0x0f, 0xb5, 0xf5, 0xf4, 0x3a, 0xea
1059 0xc8, 0x5d, 0x15, 0xed, 0x44, 0xc3, 0x78, 0xd6,
1060 0xb0, 0x0e, 0x23, 0x06, 0x4c, 0x7b, 0xcd, 0x51
1068 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
1069 0x17, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
1071 0x06, 0xdb, 0x1f, 0x1f, 0x36, 0x8d, 0x69, 0x6a,
1072 0x81, 0x0a, 0x34, 0x9c, 0x0c, 0x71, 0x4c, 0x9a,
1073 0x5e, 0x78, 0x50, 0xc2, 0x40, 0x7d, 0x72, 0x1a,
1074 0xcd, 0xed, 0x95, 0xe0, 0x18, 0xd7, 0xa8, 0x52,
1076 0x66, 0xa6, 0xe1, 0x28, 0x9c, 0xdb, 0x4a, 0xeb,
1077 0x18, 0xda, 0x5a, 0xc8, 0xa2, 0xb0, 0x02, 0x6d,
1078 0x24, 0xa5, 0x9a, 0xd4, 0x85, 0x22, 0x7f, 0x3e,
1079 0xae, 0xdb, 0xb2, 0xe7, 0xe3, 0x5e, 0x1c, 0x66,
1081 0xcd, 0x60, 0xf9, 0xab, 0xf7, 0x16, 0xdc, 0xc9,
1082 0xac, 0x42, 0x68, 0x2d, 0xd7, 0xda, 0xb2, 0x87,
1083 0xa7, 0x02, 0x4c, 0x4e, 0xef, 0xc3, 0x21, 0xcc,
1084 0x05, 0x74, 0xe1, 0x67, 0x93, 0xe3, 0x7c, 0xec,
1086 0x03, 0xc5, 0xbd, 0xa4, 0x2b, 0x54, 0xc1, 0x14,
1087 0xa8, 0x0b, 0x57, 0xaf, 0x26, 0x41, 0x6c, 0x7b,
1088 0xe7, 0x42, 0x00, 0x5e, 0x20, 0x85, 0x5c, 0x73,
1089 0xe2, 0x1d, 0xc8, 0xe2, 0xed, 0xc9, 0xd4, 0x35,
1091 0xcb, 0x6f, 0x60, 0x59, 0x28, 0x00, 0x11, 0xc2,
1092 0x70, 0xb7, 0x15, 0x70, 0x05, 0x1c, 0x1c, 0x9b,
1093 0x30, 0x52, 0x12, 0x66, 0x20, 0xbc, 0x1e, 0x27,
1094 0x30, 0xfa, 0x06, 0x6c, 0x7a, 0x50, 0x9d, 0x53,
1096 0xc6, 0x0e, 0x5a, 0xe1, 0xb4, 0x0a, 0xa6, 0xe3,
1097 0x9e, 0x49, 0x66, 0x92, 0x28, 0xc9, 0x0e, 0xec,
1098 0xb4, 0xa5, 0x0d, 0xb3, 0x2a, 0x50, 0xbc, 0x49,
1099 0xe9, 0x0b, 0x4f, 0x4b, 0x35, 0x9a, 0x1d, 0xfd,
1101 0x11, 0x74, 0x9c, 0xd3, 0x86, 0x7f, 0xcf, 0x2f,
1102 0xb7, 0xbb, 0x6c, 0xd4, 0x73, 0x8f, 0x6a, 0x4a,
1103 0xd6, 0xf7, 0xca, 0x50, 0x58, 0xf7, 0x61, 0x88,
1104 0x45, 0xaf, 0x9f, 0x02, 0x0f, 0x6c, 0x3b, 0x96,
1106 0x7b, 0x8f, 0x4c, 0xd4, 0xa9, 0x1e, 0x28, 0x13,
1107 0xb5, 0x07, 0xae, 0x66, 0xf2, 0xd3, 0x5c, 0x18,
1108 0x28, 0x4f, 0x72, 0x92, 0x18, 0x60, 0x62, 0xe1,
1109 0x0f, 0xd5, 0x51, 0x0d, 0x18, 0x77, 0x53, 0x51,
1111 0xef, 0x33, 0x4e, 0x76, 0x34, 0xab, 0x47, 0x43,
1112 0xf5, 0xb6, 0x8f, 0x49, 0xad, 0xca, 0xb3, 0x84,
1113 0xd3, 0xfd, 0x75, 0xf7, 0x39, 0x0f, 0x40, 0x06,
1114 0xef, 0x2a, 0x29, 0x5c, 0x8c, 0x7a, 0x07, 0x6a,
1116 0xd5, 0x45, 0x46, 0xcd, 0x25, 0xd2, 0x10, 0x7f,
1117 0xbe, 0x14, 0x36, 0xc8, 0x40, 0x92, 0x4a, 0xae,
1118 0xbe, 0x5b, 0x37, 0x08, 0x93, 0xcd, 0x63, 0xd1,
1119 0x32, 0x5b, 0x86, 0x16, 0xfc, 0x48, 0x10, 0x88,
1121 0x6b, 0xc1, 0x52, 0xc5, 0x32, 0x21, 0xb6, 0xdf,
1122 0x37, 0x31, 0x19, 0x39, 0x32, 0x55, 0xee, 0x72,
1123 0xbc, 0xaa, 0x88, 0x01, 0x74, 0xf1, 0x71, 0x7f,
1124 0x91, 0x84, 0xfa, 0x91, 0x64, 0x6f, 0x17, 0xa2,
1126 0x4a, 0xc5, 0x5d, 0x16, 0xbf, 0xdd, 0xca, 0x95,
1127 0x81, 0xa9, 0x2e, 0xda, 0x47, 0x92, 0x01, 0xf0,
1128 0xed, 0xbf, 0x63, 0x36, 0x00, 0xd6, 0x06, 0x6d,
1129 0x1a, 0xb3, 0x6d, 0x5d, 0x24, 0x15, 0xd7, 0x13,
1131 0x51, 0xbb, 0xcd, 0x60, 0x8a, 0x25, 0x10, 0x8d,
1132 0x25, 0x64, 0x19, 0x92, 0xc1, 0xf2, 0x6c, 0x53,
1133 0x1c, 0xf9, 0xf9, 0x02, 0x03, 0xbc, 0x4c, 0xc1,
1134 0x9f, 0x59, 0x27, 0xd8, 0x34, 0xb0, 0xa4, 0x71,
1136 0x16, 0xd3, 0x88, 0x4b, 0xbb, 0x16, 0x4b, 0x8e,
1137 0xc8, 0x83, 0xd1, 0xac, 0x83, 0x2e, 0x56, 0xb3,
1138 0x91, 0x8a, 0x98, 0x60, 0x1a, 0x08, 0xd1, 0x71,
1139 0x88, 0x15, 0x41, 0xd5, 0x94, 0xdb, 0x39, 0x9c,
1141 0x6a, 0xe6, 0x15, 0x12, 0x21, 0x74, 0x5a, 0xec,
1142 0x81, 0x4c, 0x45, 0xb0, 0xb0, 0x5b, 0x56, 0x54,
1143 0x36, 0xfd, 0x6f, 0x13, 0x7a, 0xa1, 0x0a, 0x0c,
1144 0x0b, 0x64, 0x37, 0x61, 0xdb, 0xd6, 0xf9, 0xa9,
1146 0xdc, 0xb9, 0x9b, 0x1a, 0x6e, 0x69, 0x08, 0x54,
1147 0xce, 0x07, 0x69, 0xcd, 0xe3, 0x97, 0x61, 0xd8,
1148 0x2f, 0xcd, 0xec, 0x15, 0xf0, 0xd9, 0x2d, 0x7d,
1149 0x8e, 0x94, 0xad, 0xe8, 0xeb, 0x83, 0xfb, 0xe0
1155 0x99, 0xe5, 0x82, 0x2d, 0xd4, 0x17, 0x3c, 0x99,
1156 0x5e, 0x3d, 0xae, 0x0d, 0xde, 0xfb, 0x97, 0x74,
1157 0x3f, 0xde, 0x3b, 0x08, 0x01, 0x34, 0xb3, 0x9f,
1158 0x76, 0xe9, 0xbf, 0x8d, 0x0e, 0x88, 0xd5, 0x46
1164 0x26, 0x37, 0x40, 0x8f, 0xe1, 0x30, 0x86, 0xea,
1165 0x73, 0xf9, 0x71, 0xe3, 0x42, 0x5e, 0x28, 0x20
1170 * test vectors from Hanno Böck
1176 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1177 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1178 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1179 0xcc, 0x80, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1181 0xcc, 0xcc, 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, 0xce, 0xcc, 0xcc, 0xcc,
1186 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1187 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc5,
1188 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1189 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1191 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe3, 0xcc, 0xcc,
1192 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1193 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1194 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1196 0xcc, 0xcc, 0xcc, 0xcc, 0xac, 0xcc, 0xcc, 0xcc,
1197 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6,
1198 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00,
1199 0xaf, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
1201 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xf5, 0x00, 0x00,
1202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1206 0x00, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00,
1207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1211 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, 0x71, 0x92, 0x05, 0xa8, 0x52, 0x1d,
1222 0x7f, 0x1b, 0x02, 0x64, 0x00, 0x00, 0x00, 0x00,
1223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1225 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc
1231 0x85, 0x59, 0xb8, 0x76, 0xec, 0xee, 0xd6, 0x6e,
1232 0xb3, 0x77, 0x98, 0xc0, 0x45, 0x7b, 0xaf, 0xf9
1240 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1241 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1242 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1243 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
1245 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x64
1251 0xe0, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00,
1252 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1253 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1254 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
1260 0x00, 0xbd, 0x12, 0x58, 0x97, 0x8e, 0x20, 0x54,
1261 0x44, 0xc9, 0xaa, 0xaa, 0x82, 0x00, 0x6f, 0xed
1275 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
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
1284 0x06, 0x12, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
1285 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c
1293 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
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,
1298 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b,
1299 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1300 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1301 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1303 0x7b, 0x7b, 0x5c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1304 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1305 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1306 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1308 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1309 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1310 0x7b, 0x7b, 0x7b, 0x7b, 0x6e, 0x7b, 0x00, 0x7b,
1311 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1313 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1314 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1315 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b,
1316 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1318 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1319 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x5c,
1320 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1321 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
1323 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,
1328 0x7b, 0x6e, 0x7b, 0x00, 0x13, 0x00, 0x00, 0x00,
1329 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1330 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1331 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1333 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1334 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1335 0x00, 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00,
1336 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1338 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
1339 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00,
1340 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1341 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00,
1343 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1344 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2,
1346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1348 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1349 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00, 0x09,
1350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1351 0x00, 0x7a, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
1353 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
1354 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1355 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc
1362 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1363 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1364 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
1365 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7b
1371 0x33, 0x20, 0x5b, 0xbf, 0x9e, 0x9f, 0x8f, 0x72,
1372 0x12, 0xab, 0x9e, 0x2a, 0xb9, 0xb7, 0xe4, 0xa5
1380 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
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,
1385 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,
1390 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1391 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xe9,
1392 0xe9, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
1393 0xac, 0xac, 0xac, 0xac, 0x00, 0x00, 0xac, 0xac,
1395 0xec, 0x01, 0x00, 0xac, 0xac, 0xac, 0x2c, 0xac,
1396 0xa2, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
1397 0xac, 0xac, 0xac, 0xac, 0x64, 0xf2
1403 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
1404 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
1405 0x00, 0x00, 0xcf, 0x77, 0x77, 0x77, 0x77, 0x77,
1406 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77
1412 0x02, 0xee, 0x7c, 0x8c, 0x54, 0x6d, 0xde, 0xb1,
1413 0xa4, 0x67, 0xe4, 0xc3, 0x98, 0x11, 0x58, 0xb9
1418 * test vectors from Andrew Moon
1424 0x8e, 0x99, 0x3b, 0x9f, 0x48, 0x68, 0x12, 0x73,
1425 0xc2, 0x96, 0x50, 0xba, 0x32, 0xfc, 0x76, 0xce,
1426 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4,
1427 0x47, 0x6f, 0xb8, 0xc5, 0x31, 0xa1, 0x18, 0x6a,
1429 0xc0, 0xdf, 0xc1, 0x7c, 0x98, 0xdc, 0xe8, 0x7b,
1430 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72,
1431 0x71, 0xd2, 0xc2, 0x0f, 0x9b, 0x92, 0x8f, 0xe2,
1432 0x27, 0x0d, 0x6f, 0xb8, 0x63, 0xd5, 0x17, 0x38,
1434 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a,
1435 0xb9, 0x32, 0x16, 0x45, 0x48, 0xe5, 0x26, 0xae,
1436 0x90, 0x22, 0x43, 0x68, 0x51, 0x7a, 0xcf, 0xea,
1437 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda,
1439 0x99, 0x83, 0x2b, 0x61, 0xca, 0x01, 0xb6, 0xde,
1440 0x56, 0x24, 0x4a, 0x9e, 0x88, 0xd5, 0xf9, 0xb3,
1441 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6,
1442 0x59, 0x9b, 0x1f, 0x65, 0x4c, 0xb4, 0x5a, 0x74,
1450 0xee, 0xa6, 0xa7, 0x25, 0x1c, 0x1e, 0x72, 0x91,
1451 0x6d, 0x11, 0xc2, 0xcb, 0x21, 0x4d, 0x3c, 0x25,
1452 0x25, 0x39, 0x12, 0x1d, 0x8e, 0x23, 0x4e, 0x65,
1453 0x2d, 0x65, 0x1f, 0xa4, 0xc8, 0xcf, 0xf8, 0x80
1459 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5,
1460 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9
1464 { /* wrap 2^130-5 */
1468 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1469 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1475 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1476 0x00, 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
1484 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1485 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1493 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1494 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1500 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1501 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1502 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1503 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1509 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1510 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1518 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1519 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1520 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1521 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1523 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1524 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1530 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1531 0x00, 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
1539 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1540 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1548 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1549 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1550 0xfb, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
1551 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
1553 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
1554 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
1560 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1561 0x00, 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
1569 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1570 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1579 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1580 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1586 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1587 0x00, 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
1595 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1596 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
1600 { /* 5*H+L reduction intermediate */
1604 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
1605 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1606 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
1607 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1609 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1610 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1611 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1612 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1618 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1619 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1620 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1621 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1627 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1628 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1632 { /* 5*H+L reduction final */
1636 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
1637 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1638 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
1639 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1641 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1642 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1649 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1650 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1651 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1652 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1658 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1659 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1665 static int drive_tests(int idx)
1667 SETUP_TEST_FIXTURE(SIMPLE_FIXTURE, setup_poly1305);
1668 fixture.test_num = idx;
1669 fixture.test_data = &tests[idx];
1670 EXECUTE_TEST(execute_poly1305, teardown_poly1305);
1673 int main(int argc, char **argv)
1679 for (iter_argv = 1; iter_argv < argc; iter_argv++) {
1680 if (strcmp(argv[iter_argv], "-b") == 0)
1682 else if (strcmp(argv[iter_argv], "-h") == 0)
1686 ADD_ALL_TESTS(drive_tests, OSSL_NELEM(tests));
1688 result = run_tests(argv[0]);
1691 benchmark_poly1305();
1696 printf("-h\tThis help\n");
1697 printf("-b\tBenchmark in addition to the tests\n");