Home | History | Annotate | Line # | Download | only in test
      1      1.1  christos /*
      2      1.1  christos  * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
      3      1.1  christos  *
      4      1.1  christos  * Licensed under the Apache License 2.0 (the "License").  You may not use
      5      1.1  christos  * this file except in compliance with the License.  You can obtain a copy
      6      1.1  christos  * in the file LICENSE in the source distribution or at
      7      1.1  christos  * https://www.openssl.org/source/license.html
      8      1.1  christos  */
      9      1.1  christos 
     10      1.1  christos /* Internal tests for the poly1305 module */
     11      1.1  christos 
     12      1.1  christos #include <stdio.h>
     13      1.1  christos #include <string.h>
     14      1.1  christos 
     15      1.1  christos #include "testutil.h"
     16      1.1  christos #include "crypto/poly1305.h"
     17      1.1  christos #include "internal/nelem.h"
     18      1.1  christos 
     19      1.1  christos typedef struct {
     20      1.1  christos     size_t size;
     21      1.1  christos     const unsigned char data[1024];
     22      1.1  christos } SIZED_DATA;
     23      1.1  christos 
     24      1.1  christos typedef struct {
     25      1.1  christos     SIZED_DATA input;
     26      1.1  christos     SIZED_DATA key;
     27      1.1  christos     SIZED_DATA expected;
     28      1.1  christos } TESTDATA;
     29      1.1  christos 
     30      1.1  christos /**********************************************************************
     31      1.1  christos  *
     32      1.1  christos  * Test of poly1305 internal functions
     33      1.1  christos  *
     34      1.1  christos  ***/
     35      1.1  christos 
     36      1.1  christos static TESTDATA tests[] = {
     37      1.1  christos     /*
     38      1.1  christos      * RFC7539
     39      1.1  christos      */
     40      1.1  christos     {
     41  1.1.1.2  christos         { 34,
     42  1.1.1.2  christos             { 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x67, 0x72,
     43      1.1  christos                 0x61, 0x70, 0x68, 0x69, 0x63, 0x20, 0x46, 0x6f,
     44      1.1  christos                 0x72, 0x75, 0x6d, 0x20, 0x52, 0x65, 0x73, 0x65,
     45      1.1  christos                 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f,
     46      1.1  christos 
     47  1.1.1.2  christos                 0x75, 0x70 } },
     48  1.1.1.2  christos         { 32,
     49  1.1.1.2  christos             { 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33,
     50      1.1  christos                 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8,
     51      1.1  christos                 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd,
     52  1.1.1.2  christos                 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b } },
     53  1.1.1.2  christos         { 16,
     54  1.1.1.2  christos             { 0xa8, 0x06, 0x1d, 0xc1, 0x30, 0x51, 0x36, 0xc6,
     55  1.1.1.2  christos                 0xc2, 0x2b, 0x8b, 0xaf, 0x0c, 0x01, 0x27, 0xa9 } } },
     56      1.1  christos     /*
     57      1.1  christos      * test vectors from "The Poly1305-AES message-authentication code"
     58      1.1  christos      */
     59      1.1  christos     {
     60  1.1.1.2  christos         { 2,
     61  1.1.1.2  christos             { 0xf3, 0xf6 } },
     62  1.1.1.2  christos         { 32,
     63  1.1.1.2  christos             { 0x85, 0x1f, 0xc4, 0x0c, 0x34, 0x67, 0xac, 0x0b,
     64      1.1  christos                 0xe0, 0x5c, 0xc2, 0x04, 0x04, 0xf3, 0xf7, 0x00,
     65      1.1  christos                 0x58, 0x0b, 0x3b, 0x0f, 0x94, 0x47, 0xbb, 0x1e,
     66  1.1.1.2  christos                 0x69, 0xd0, 0x95, 0xb5, 0x92, 0x8b, 0x6d, 0xbc } },
     67  1.1.1.2  christos         { 16,
     68  1.1.1.2  christos             { 0xf4, 0xc6, 0x33, 0xc3, 0x04, 0x4f, 0xc1, 0x45,
     69  1.1.1.2  christos                 0xf8, 0x4f, 0x33, 0x5c, 0xb8, 0x19, 0x53, 0xde } } },
     70  1.1.1.2  christos     { { 0,
     71  1.1.1.2  christos           { 0 } },
     72  1.1.1.2  christos         { 32,
     73  1.1.1.2  christos             { 0xa0, 0xf3, 0x08, 0x00, 0x00, 0xf4, 0x64, 0x00,
     74      1.1  christos                 0xd0, 0xc7, 0xe9, 0x07, 0x6c, 0x83, 0x44, 0x03,
     75      1.1  christos                 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
     76  1.1.1.2  christos                 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7 } },
     77  1.1.1.2  christos         { 16,
     78  1.1.1.2  christos             { 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7,
     79  1.1.1.2  christos                 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7 } } },
     80  1.1.1.2  christos     { { 32,
     81  1.1.1.2  christos           { 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
     82  1.1.1.2  christos               0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
     83  1.1.1.2  christos               0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
     84  1.1.1.2  christos               0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 } },
     85  1.1.1.2  christos         { 32,
     86  1.1.1.2  christos             { 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
     87      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
     88      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
     89  1.1.1.2  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef } },
     90  1.1.1.2  christos         { 16,
     91  1.1.1.2  christos             { 0x0e, 0xe1, 0xc1, 0x6b, 0xb7, 0x3f, 0x0f, 0x4f,
     92  1.1.1.2  christos                 0xd1, 0x98, 0x81, 0x75, 0x3c, 0x01, 0xcd, 0xbe } } },
     93      1.1  christos     {
     94  1.1.1.2  christos         { 63,
     95  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
     96      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
     97      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
     98      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
     99      1.1  christos 
    100      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    101      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    102      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    103  1.1.1.2  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9 } },
    104  1.1.1.2  christos         { 32,
    105  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    106      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    107      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    108  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    109  1.1.1.2  christos         { 16,
    110  1.1.1.2  christos             { 0x51, 0x54, 0xad, 0x0d, 0x2c, 0xb2, 0x6e, 0x01,
    111  1.1.1.2  christos                 0x27, 0x4f, 0xc5, 0x11, 0x48, 0x49, 0x1f, 0x1b } },
    112      1.1  christos     },
    113      1.1  christos     /*
    114      1.1  christos      * self-generated vectors exercise "significant" lengths, such that
    115      1.1  christos      * are handled by different code paths
    116      1.1  christos      */
    117      1.1  christos     {
    118  1.1.1.2  christos         { 64,
    119  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    120      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    121      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    122      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    123      1.1  christos 
    124      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    125      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    126      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    127  1.1.1.2  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf } },
    128  1.1.1.2  christos         { 32,
    129  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    130      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    131      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    132  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    133  1.1.1.2  christos         { 16,
    134  1.1.1.2  christos             { 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
    135  1.1.1.2  christos                 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66 } },
    136      1.1  christos     },
    137      1.1  christos     {
    138  1.1.1.2  christos         { 48,
    139  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    140      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    141      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    142      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    143      1.1  christos 
    144      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    145  1.1.1.2  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67 } },
    146  1.1.1.2  christos         { 32,
    147  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    148      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    149      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    150      1.1  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57
    151      1.1  christos 
    152  1.1.1.2  christos             } },
    153  1.1.1.2  christos         { 16,
    154  1.1.1.2  christos             { 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
    155  1.1.1.2  christos                 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61 } },
    156      1.1  christos     },
    157      1.1  christos     {
    158  1.1.1.2  christos         { 96,
    159  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    160      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    161      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    162      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    163      1.1  christos 
    164      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    165      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    166      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    167      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    168      1.1  christos 
    169      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    170      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    171      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    172  1.1.1.2  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 } },
    173  1.1.1.2  christos         { 32,
    174  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    175      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    176      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    177  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    178  1.1.1.2  christos         { 16,
    179  1.1.1.2  christos             { 0xbb, 0xb6, 0x13, 0xb2, 0xb6, 0xd7, 0x53, 0xba,
    180  1.1.1.2  christos                 0x07, 0x39, 0x5b, 0x91, 0x6a, 0xae, 0xce, 0x15 } },
    181      1.1  christos     },
    182      1.1  christos     {
    183  1.1.1.2  christos         { 112,
    184  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    185      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    186      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    187      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    188      1.1  christos 
    189      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    190      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    191      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    192      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    193      1.1  christos 
    194      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    195      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    196      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    197      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    198      1.1  christos 
    199      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    200  1.1.1.2  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24 } },
    201  1.1.1.2  christos         { 32,
    202  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    203      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    204      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    205  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    206  1.1.1.2  christos         { 16,
    207  1.1.1.2  christos             { 0xc7, 0x94, 0xd7, 0x05, 0x7d, 0x17, 0x78, 0xc4,
    208  1.1.1.2  christos                 0xbb, 0xee, 0x0a, 0x39, 0xb3, 0xd9, 0x73, 0x42 } },
    209      1.1  christos     },
    210      1.1  christos     {
    211  1.1.1.2  christos         { 128,
    212  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    213      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    214      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    215      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    216      1.1  christos 
    217      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    218      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    219      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    220      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    221      1.1  christos 
    222      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    223      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    224      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    225      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    226      1.1  christos 
    227      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    228      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    229      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    230  1.1.1.2  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 } },
    231  1.1.1.2  christos         { 32,
    232  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    233      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    234      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    235  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    236  1.1.1.2  christos         { 16,
    237  1.1.1.2  christos             { 0xff, 0xbc, 0xb9, 0xb3, 0x71, 0x42, 0x31, 0x52,
    238  1.1.1.2  christos                 0xd7, 0xfc, 0xa5, 0xad, 0x04, 0x2f, 0xba, 0xa9 } },
    239      1.1  christos     },
    240      1.1  christos     {
    241  1.1.1.2  christos         { 144,
    242  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    243      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    244      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    245      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    246      1.1  christos 
    247      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    248      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    249      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    250      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    251      1.1  christos 
    252      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    253      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    254      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    255      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    256      1.1  christos 
    257      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    258      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    259      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    260      1.1  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
    261      1.1  christos 
    262      1.1  christos                 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
    263  1.1.1.2  christos                 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66 } },
    264  1.1.1.2  christos         { 32,
    265  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    266      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    267      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    268  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    269  1.1.1.2  christos         { 16,
    270  1.1.1.2  christos             { 0x06, 0x9e, 0xd6, 0xb8, 0xef, 0x0f, 0x20, 0x7b,
    271  1.1.1.2  christos                 0x3e, 0x24, 0x3b, 0xb1, 0x01, 0x9f, 0xe6, 0x32 } },
    272      1.1  christos     },
    273      1.1  christos     {
    274  1.1.1.2  christos         { 160,
    275  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    276      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    277      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    278      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    279      1.1  christos 
    280      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    281      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    282      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    283      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    284      1.1  christos 
    285      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    286      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    287      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    288      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    289      1.1  christos 
    290      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    291      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    292      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    293      1.1  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
    294      1.1  christos 
    295      1.1  christos                 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
    296      1.1  christos                 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
    297      1.1  christos                 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
    298  1.1.1.2  christos                 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61 } },
    299  1.1.1.2  christos         { 32,
    300  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    301      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    302      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    303  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    304  1.1.1.2  christos         { 16,
    305  1.1.1.2  christos             { 0xcc, 0xa3, 0x39, 0xd9, 0xa4, 0x5f, 0xa2, 0x36,
    306  1.1.1.2  christos                 0x8c, 0x2c, 0x68, 0xb3, 0xa4, 0x17, 0x91, 0x33 } },
    307      1.1  christos     },
    308      1.1  christos     {
    309  1.1.1.2  christos         { 288,
    310  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    311      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    312      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    313      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    314      1.1  christos 
    315      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    316      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    317      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    318      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    319      1.1  christos 
    320      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    321      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    322      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    323      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    324      1.1  christos 
    325      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    326      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    327      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    328      1.1  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
    329      1.1  christos 
    330      1.1  christos                 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
    331      1.1  christos                 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
    332      1.1  christos                 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
    333      1.1  christos                 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
    334      1.1  christos 
    335      1.1  christos                 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    336      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    337      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    338      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    339      1.1  christos 
    340      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    341      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    342      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    343      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    344      1.1  christos 
    345      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    346      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    347      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    348      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    349      1.1  christos 
    350      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    351      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    352      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    353  1.1.1.2  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 } },
    354  1.1.1.2  christos         { 32,
    355  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    356      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    357      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    358  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    359  1.1.1.2  christos         { 16,
    360  1.1.1.2  christos             { 0x53, 0xf6, 0xe8, 0x28, 0xa2, 0xf0, 0xfe, 0x0e,
    361  1.1.1.2  christos                 0xe8, 0x15, 0xbf, 0x0b, 0xd5, 0x84, 0x1a, 0x34 } },
    362      1.1  christos     },
    363      1.1  christos     {
    364  1.1.1.2  christos         { 320,
    365  1.1.1.2  christos             { 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    366      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    367      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    368      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    369      1.1  christos 
    370      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    371      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    372      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    373      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    374      1.1  christos 
    375      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    376      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    377      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    378      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    379      1.1  christos 
    380      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    381      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    382      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    383      1.1  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
    384      1.1  christos 
    385      1.1  christos                 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
    386      1.1  christos                 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
    387      1.1  christos                 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
    388      1.1  christos                 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61,
    389      1.1  christos 
    390      1.1  christos                 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34,
    391      1.1  christos                 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1,
    392      1.1  christos                 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81,
    393      1.1  christos                 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0,
    394      1.1  christos 
    395      1.1  christos                 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2,
    396      1.1  christos                 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67,
    397      1.1  christos                 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61,
    398      1.1  christos                 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf,
    399      1.1  christos 
    400      1.1  christos                 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09,
    401      1.1  christos                 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08,
    402      1.1  christos                 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88,
    403      1.1  christos                 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef,
    404      1.1  christos 
    405      1.1  christos                 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8,
    406      1.1  christos                 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24,
    407      1.1  christos                 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb,
    408      1.1  christos                 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36,
    409      1.1  christos 
    410      1.1  christos                 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37,
    411      1.1  christos                 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66,
    412      1.1  christos                 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2,
    413  1.1.1.2  christos                 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61 } },
    414  1.1.1.2  christos         { 32,
    415  1.1.1.2  christos             { 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c,
    416      1.1  christos                 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07,
    417      1.1  christos                 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1,
    418  1.1.1.2  christos                 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 } },
    419  1.1.1.2  christos         { 16,
    420  1.1.1.2  christos             { 0xb8, 0x46, 0xd4, 0x4e, 0x9b, 0xbd, 0x53, 0xce,
    421  1.1.1.2  christos                 0xdf, 0xfb, 0xfb, 0xb6, 0xb7, 0xfa, 0x49, 0x33 } },
    422      1.1  christos     },
    423      1.1  christos     /*
    424      1.1  christos      * 4th power of the key spills to 131th bit in SIMD key setup
    425      1.1  christos      */
    426      1.1  christos     {
    427  1.1.1.2  christos         { 256,
    428  1.1.1.2  christos             { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    429      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    430      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    431      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    432      1.1  christos 
    433      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    434      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    435      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    436      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    437      1.1  christos 
    438      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    439      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    440      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    441      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    442      1.1  christos 
    443      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    444      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    445      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    446      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    447      1.1  christos 
    448      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    449      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    450      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    451      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    452      1.1  christos 
    453      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    454      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    455      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    456      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    457      1.1  christos 
    458      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    459      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    460      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    461      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    462      1.1  christos 
    463      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    464      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    465      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    466  1.1.1.2  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
    467  1.1.1.2  christos         { 32,
    468  1.1.1.2  christos             { 0xad, 0x62, 0x81, 0x07, 0xe8, 0x35, 0x1d, 0x0f,
    469      1.1  christos                 0x2c, 0x23, 0x1a, 0x05, 0xdc, 0x4a, 0x41, 0x06,
    470      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    471  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
    472  1.1.1.2  christos         { 16,
    473  1.1.1.2  christos             { 0x07, 0x14, 0x5a, 0x4c, 0x02, 0xfe, 0x5f, 0xa3,
    474  1.1.1.2  christos                 0x20, 0x36, 0xde, 0x68, 0xfa, 0xbe, 0x90, 0x66 } },
    475      1.1  christos     },
    476      1.1  christos     /*
    477      1.1  christos      * poly1305_ieee754.c failed this in final stage
    478      1.1  christos      */
    479      1.1  christos     {
    480  1.1.1.2  christos         { 252,
    481  1.1.1.2  christos             { 0x84, 0x23, 0x64, 0xe1, 0x56, 0x33, 0x6c, 0x09,
    482      1.1  christos                 0x98, 0xb9, 0x33, 0xa6, 0x23, 0x77, 0x26, 0x18,
    483      1.1  christos                 0x0d, 0x9e, 0x3f, 0xdc, 0xbd, 0xe4, 0xcd, 0x5d,
    484      1.1  christos                 0x17, 0x08, 0x0f, 0xc3, 0xbe, 0xb4, 0x96, 0x14,
    485      1.1  christos 
    486      1.1  christos                 0xd7, 0x12, 0x2c, 0x03, 0x74, 0x63, 0xff, 0x10,
    487      1.1  christos                 0x4d, 0x73, 0xf1, 0x9c, 0x12, 0x70, 0x46, 0x28,
    488      1.1  christos                 0xd4, 0x17, 0xc4, 0xc5, 0x4a, 0x3f, 0xe3, 0x0d,
    489      1.1  christos                 0x3c, 0x3d, 0x77, 0x14, 0x38, 0x2d, 0x43, 0xb0,
    490      1.1  christos 
    491      1.1  christos                 0x38, 0x2a, 0x50, 0xa5, 0xde, 0xe5, 0x4b, 0xe8,
    492      1.1  christos                 0x44, 0xb0, 0x76, 0xe8, 0xdf, 0x88, 0x20, 0x1a,
    493      1.1  christos                 0x1c, 0xd4, 0x3b, 0x90, 0xeb, 0x21, 0x64, 0x3f,
    494      1.1  christos                 0xa9, 0x6f, 0x39, 0xb5, 0x18, 0xaa, 0x83, 0x40,
    495      1.1  christos 
    496      1.1  christos                 0xc9, 0x42, 0xff, 0x3c, 0x31, 0xba, 0xf7, 0xc9,
    497      1.1  christos                 0xbd, 0xbf, 0x0f, 0x31, 0xae, 0x3f, 0xa0, 0x96,
    498      1.1  christos                 0xbf, 0x8c, 0x63, 0x03, 0x06, 0x09, 0x82, 0x9f,
    499      1.1  christos                 0xe7, 0x2e, 0x17, 0x98, 0x24, 0x89, 0x0b, 0xc8,
    500      1.1  christos 
    501      1.1  christos                 0xe0, 0x8c, 0x31, 0x5c, 0x1c, 0xce, 0x2a, 0x83,
    502      1.1  christos                 0x14, 0x4d, 0xbb, 0xff, 0x09, 0xf7, 0x4e, 0x3e,
    503      1.1  christos                 0xfc, 0x77, 0x0b, 0x54, 0xd0, 0x98, 0x4a, 0x8f,
    504      1.1  christos                 0x19, 0xb1, 0x47, 0x19, 0xe6, 0x36, 0x35, 0x64,
    505      1.1  christos 
    506      1.1  christos                 0x1d, 0x6b, 0x1e, 0xed, 0xf6, 0x3e, 0xfb, 0xf0,
    507      1.1  christos                 0x80, 0xe1, 0x78, 0x3d, 0x32, 0x44, 0x54, 0x12,
    508      1.1  christos                 0x11, 0x4c, 0x20, 0xde, 0x0b, 0x83, 0x7a, 0x0d,
    509      1.1  christos                 0xfa, 0x33, 0xd6, 0xb8, 0x28, 0x25, 0xff, 0xf4,
    510      1.1  christos 
    511      1.1  christos                 0x4c, 0x9a, 0x70, 0xea, 0x54, 0xce, 0x47, 0xf0,
    512      1.1  christos                 0x7d, 0xf6, 0x98, 0xe6, 0xb0, 0x33, 0x23, 0xb5,
    513      1.1  christos                 0x30, 0x79, 0x36, 0x4a, 0x5f, 0xc3, 0xe9, 0xdd,
    514      1.1  christos                 0x03, 0x43, 0x92, 0xbd, 0xde, 0x86, 0xdc, 0xcd,
    515      1.1  christos 
    516      1.1  christos                 0xda, 0x94, 0x32, 0x1c, 0x5e, 0x44, 0x06, 0x04,
    517      1.1  christos                 0x89, 0x33, 0x6c, 0xb6, 0x5b, 0xf3, 0x98, 0x9c,
    518      1.1  christos                 0x36, 0xf7, 0x28, 0x2c, 0x2f, 0x5d, 0x2b, 0x88,
    519  1.1.1.2  christos                 0x2c, 0x17, 0x1e, 0x74 } },
    520  1.1.1.2  christos         { 32,
    521  1.1.1.2  christos             { 0x95, 0xd5, 0xc0, 0x05, 0x50, 0x3e, 0x51, 0x0d,
    522      1.1  christos                 0x8c, 0xd0, 0xaa, 0x07, 0x2c, 0x4a, 0x4d, 0x06,
    523      1.1  christos                 0x6e, 0xab, 0xc5, 0x2d, 0x11, 0x65, 0x3d, 0xf4,
    524  1.1.1.2  christos                 0x7f, 0xbf, 0x63, 0xab, 0x19, 0x8b, 0xcc, 0x26 } },
    525  1.1.1.2  christos         { 16,
    526  1.1.1.2  christos             { 0xf2, 0x48, 0x31, 0x2e, 0x57, 0x8d, 0x9d, 0x58,
    527  1.1.1.2  christos                 0xf8, 0xb7, 0xbb, 0x4d, 0x19, 0x10, 0x54, 0x31 } },
    528      1.1  christos     },
    529      1.1  christos     /*
    530      1.1  christos      * AVX2 in poly1305-x86.pl failed this with 176+32 split
    531      1.1  christos      */
    532      1.1  christos     {
    533  1.1.1.2  christos         { 208,
    534  1.1.1.2  christos             { 0x24, 0x8a, 0xc3, 0x10, 0x85, 0xb6, 0xc2, 0xad,
    535      1.1  christos                 0xaa, 0xa3, 0x82, 0x59, 0xa0, 0xd7, 0x19, 0x2c,
    536      1.1  christos                 0x5c, 0x35, 0xd1, 0xbb, 0x4e, 0xf3, 0x9a, 0xd9,
    537      1.1  christos                 0x4c, 0x38, 0xd1, 0xc8, 0x24, 0x79, 0xe2, 0xdd,
    538      1.1  christos 
    539      1.1  christos                 0x21, 0x59, 0xa0, 0x77, 0x02, 0x4b, 0x05, 0x89,
    540      1.1  christos                 0xbc, 0x8a, 0x20, 0x10, 0x1b, 0x50, 0x6f, 0x0a,
    541      1.1  christos                 0x1a, 0xd0, 0xbb, 0xab, 0x76, 0xe8, 0x3a, 0x83,
    542      1.1  christos                 0xf1, 0xb9, 0x4b, 0xe6, 0xbe, 0xae, 0x74, 0xe8,
    543      1.1  christos 
    544      1.1  christos                 0x74, 0xca, 0xb6, 0x92, 0xc5, 0x96, 0x3a, 0x75,
    545      1.1  christos                 0x43, 0x6b, 0x77, 0x61, 0x21, 0xec, 0x9f, 0x62,
    546      1.1  christos                 0x39, 0x9a, 0x3e, 0x66, 0xb2, 0xd2, 0x27, 0x07,
    547      1.1  christos                 0xda, 0xe8, 0x19, 0x33, 0xb6, 0x27, 0x7f, 0x3c,
    548      1.1  christos 
    549      1.1  christos                 0x85, 0x16, 0xbc, 0xbe, 0x26, 0xdb, 0xbd, 0x86,
    550      1.1  christos                 0xf3, 0x73, 0x10, 0x3d, 0x7c, 0xf4, 0xca, 0xd1,
    551      1.1  christos                 0x88, 0x8c, 0x95, 0x21, 0x18, 0xfb, 0xfb, 0xd0,
    552      1.1  christos                 0xd7, 0xb4, 0xbe, 0xdc, 0x4a, 0xe4, 0x93, 0x6a,
    553      1.1  christos 
    554      1.1  christos                 0xff, 0x91, 0x15, 0x7e, 0x7a, 0xa4, 0x7c, 0x54,
    555      1.1  christos                 0x44, 0x2e, 0xa7, 0x8d, 0x6a, 0xc2, 0x51, 0xd3,
    556      1.1  christos                 0x24, 0xa0, 0xfb, 0xe4, 0x9d, 0x89, 0xcc, 0x35,
    557      1.1  christos                 0x21, 0xb6, 0x6d, 0x16, 0xe9, 0xc6, 0x6a, 0x37,
    558      1.1  christos 
    559      1.1  christos                 0x09, 0x89, 0x4e, 0x4e, 0xb0, 0xa4, 0xee, 0xdc,
    560      1.1  christos                 0x4a, 0xe1, 0x94, 0x68, 0xe6, 0x6b, 0x81, 0xf2,
    561      1.1  christos 
    562      1.1  christos                 0x71, 0x35, 0x1b, 0x1d, 0x92, 0x1e, 0xa5, 0x51,
    563      1.1  christos                 0x04, 0x7a, 0xbc, 0xc6, 0xb8, 0x7a, 0x90, 0x1f,
    564      1.1  christos                 0xde, 0x7d, 0xb7, 0x9f, 0xa1, 0x81, 0x8c, 0x11,
    565  1.1.1.2  christos                 0x33, 0x6d, 0xbc, 0x07, 0x24, 0x4a, 0x40, 0xeb } },
    566  1.1.1.2  christos         { 32,
    567  1.1.1.2  christos             { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
    568      1.1  christos                 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    569      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    570  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
    571  1.1.1.2  christos         { 16,
    572  1.1.1.2  christos             { 0xbc, 0x93, 0x9b, 0xc5, 0x28, 0x14, 0x80, 0xfa,
    573  1.1.1.2  christos                 0x99, 0xc6, 0xd6, 0x8c, 0x25, 0x8e, 0xc4, 0x2f } },
    574      1.1  christos     },
    575      1.1  christos     /*
    576      1.1  christos      * test vectors from Google
    577      1.1  christos      */
    578      1.1  christos     {
    579  1.1.1.2  christos         { 0,
    580      1.1  christos             {
    581      1.1  christos                 0x00,
    582  1.1.1.2  christos             } },
    583  1.1.1.2  christos         { 32,
    584  1.1.1.2  christos             { 0xc8, 0xaf, 0xaa, 0xc3, 0x31, 0xee, 0x37, 0x2c,
    585      1.1  christos                 0xd6, 0x08, 0x2d, 0xe1, 0x34, 0x94, 0x3b, 0x17,
    586      1.1  christos                 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
    587  1.1.1.2  christos                 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c } },
    588  1.1.1.2  christos         { 16,
    589  1.1.1.2  christos             { 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d,
    590  1.1.1.2  christos                 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c } },
    591      1.1  christos     },
    592      1.1  christos     {
    593  1.1.1.2  christos         { 12,
    594  1.1.1.2  christos             { 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f,
    595  1.1.1.2  christos                 0x72, 0x6c, 0x64, 0x21 } },
    596  1.1.1.2  christos         { 32,
    597  1.1.1.2  christos             { 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    598      1.1  christos                 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
    599      1.1  christos                 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
    600  1.1.1.2  christos                 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35 } },
    601  1.1.1.2  christos         { 16,
    602  1.1.1.2  christos             { 0xa6, 0xf7, 0x45, 0x00, 0x8f, 0x81, 0xc9, 0x16,
    603  1.1.1.2  christos                 0xa2, 0x0d, 0xcc, 0x74, 0xee, 0xf2, 0xb2, 0xf0 } },
    604      1.1  christos     },
    605      1.1  christos     {
    606  1.1.1.2  christos         { 32,
    607  1.1.1.2  christos             { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    608      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    609      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    610  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
    611  1.1.1.2  christos         { 32,
    612  1.1.1.2  christos             { 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    613      1.1  christos                 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20,
    614      1.1  christos                 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20,
    615  1.1.1.2  christos                 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35 } },
    616  1.1.1.2  christos         { 16,
    617  1.1.1.2  christos             { 0x49, 0xec, 0x78, 0x09, 0x0e, 0x48, 0x1e, 0xc6,
    618  1.1.1.2  christos                 0xc2, 0x6b, 0x33, 0xb9, 0x1c, 0xcc, 0x03, 0x07 } },
    619      1.1  christos     },
    620      1.1  christos     {
    621  1.1.1.2  christos         { 128,
    622  1.1.1.2  christos             { 0x89, 0xda, 0xb8, 0x0b, 0x77, 0x17, 0xc1, 0xdb,
    623      1.1  christos                 0x5d, 0xb4, 0x37, 0x86, 0x0a, 0x3f, 0x70, 0x21,
    624      1.1  christos                 0x8e, 0x93, 0xe1, 0xb8, 0xf4, 0x61, 0xfb, 0x67,
    625      1.1  christos                 0x7f, 0x16, 0xf3, 0x5f, 0x6f, 0x87, 0xe2, 0xa9,
    626      1.1  christos 
    627      1.1  christos                 0x1c, 0x99, 0xbc, 0x3a, 0x47, 0xac, 0xe4, 0x76,
    628      1.1  christos                 0x40, 0xcc, 0x95, 0xc3, 0x45, 0xbe, 0x5e, 0xcc,
    629      1.1  christos                 0xa5, 0xa3, 0x52, 0x3c, 0x35, 0xcc, 0x01, 0x89,
    630      1.1  christos                 0x3a, 0xf0, 0xb6, 0x4a, 0x62, 0x03, 0x34, 0x27,
    631      1.1  christos 
    632      1.1  christos                 0x03, 0x72, 0xec, 0x12, 0x48, 0x2d, 0x1b, 0x1e,
    633      1.1  christos                 0x36, 0x35, 0x61, 0x69, 0x8a, 0x57, 0x8b, 0x35,
    634      1.1  christos                 0x98, 0x03, 0x49, 0x5b, 0xb4, 0xe2, 0xef, 0x19,
    635      1.1  christos                 0x30, 0xb1, 0x7a, 0x51, 0x90, 0xb5, 0x80, 0xf1,
    636      1.1  christos 
    637      1.1  christos                 0x41, 0x30, 0x0d, 0xf3, 0x0a, 0xdb, 0xec, 0xa2,
    638      1.1  christos                 0x8f, 0x64, 0x27, 0xa8, 0xbc, 0x1a, 0x99, 0x9f,
    639      1.1  christos                 0xd5, 0x1c, 0x55, 0x4a, 0x01, 0x7d, 0x09, 0x5d,
    640  1.1.1.2  christos                 0x8c, 0x3e, 0x31, 0x27, 0xda, 0xf9, 0xf5, 0x95 } },
    641  1.1.1.2  christos         { 32,
    642  1.1.1.2  christos             { 0x2d, 0x77, 0x3b, 0xe3, 0x7a, 0xdb, 0x1e, 0x4d,
    643      1.1  christos                 0x68, 0x3b, 0xf0, 0x07, 0x5e, 0x79, 0xc4, 0xee,
    644      1.1  christos                 0x03, 0x79, 0x18, 0x53, 0x5a, 0x7f, 0x99, 0xcc,
    645  1.1.1.2  christos                 0xb7, 0x04, 0x0f, 0xb5, 0xf5, 0xf4, 0x3a, 0xea } },
    646  1.1.1.2  christos         { 16,
    647  1.1.1.2  christos             { 0xc8, 0x5d, 0x15, 0xed, 0x44, 0xc3, 0x78, 0xd6,
    648  1.1.1.2  christos                 0xb0, 0x0e, 0x23, 0x06, 0x4c, 0x7b, 0xcd, 0x51 } },
    649      1.1  christos     },
    650      1.1  christos     {
    651  1.1.1.2  christos         { 528,
    652  1.1.1.2  christos             { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
    653      1.1  christos                 0x17, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
    654      1.1  christos 
    655      1.1  christos                 0x06, 0xdb, 0x1f, 0x1f, 0x36, 0x8d, 0x69, 0x6a,
    656      1.1  christos                 0x81, 0x0a, 0x34, 0x9c, 0x0c, 0x71, 0x4c, 0x9a,
    657      1.1  christos                 0x5e, 0x78, 0x50, 0xc2, 0x40, 0x7d, 0x72, 0x1a,
    658      1.1  christos                 0xcd, 0xed, 0x95, 0xe0, 0x18, 0xd7, 0xa8, 0x52,
    659      1.1  christos 
    660      1.1  christos                 0x66, 0xa6, 0xe1, 0x28, 0x9c, 0xdb, 0x4a, 0xeb,
    661      1.1  christos                 0x18, 0xda, 0x5a, 0xc8, 0xa2, 0xb0, 0x02, 0x6d,
    662      1.1  christos                 0x24, 0xa5, 0x9a, 0xd4, 0x85, 0x22, 0x7f, 0x3e,
    663      1.1  christos                 0xae, 0xdb, 0xb2, 0xe7, 0xe3, 0x5e, 0x1c, 0x66,
    664      1.1  christos 
    665      1.1  christos                 0xcd, 0x60, 0xf9, 0xab, 0xf7, 0x16, 0xdc, 0xc9,
    666      1.1  christos                 0xac, 0x42, 0x68, 0x2d, 0xd7, 0xda, 0xb2, 0x87,
    667      1.1  christos                 0xa7, 0x02, 0x4c, 0x4e, 0xef, 0xc3, 0x21, 0xcc,
    668      1.1  christos                 0x05, 0x74, 0xe1, 0x67, 0x93, 0xe3, 0x7c, 0xec,
    669      1.1  christos 
    670      1.1  christos                 0x03, 0xc5, 0xbd, 0xa4, 0x2b, 0x54, 0xc1, 0x14,
    671      1.1  christos                 0xa8, 0x0b, 0x57, 0xaf, 0x26, 0x41, 0x6c, 0x7b,
    672      1.1  christos                 0xe7, 0x42, 0x00, 0x5e, 0x20, 0x85, 0x5c, 0x73,
    673      1.1  christos                 0xe2, 0x1d, 0xc8, 0xe2, 0xed, 0xc9, 0xd4, 0x35,
    674      1.1  christos 
    675      1.1  christos                 0xcb, 0x6f, 0x60, 0x59, 0x28, 0x00, 0x11, 0xc2,
    676      1.1  christos                 0x70, 0xb7, 0x15, 0x70, 0x05, 0x1c, 0x1c, 0x9b,
    677      1.1  christos                 0x30, 0x52, 0x12, 0x66, 0x20, 0xbc, 0x1e, 0x27,
    678      1.1  christos                 0x30, 0xfa, 0x06, 0x6c, 0x7a, 0x50, 0x9d, 0x53,
    679      1.1  christos 
    680      1.1  christos                 0xc6, 0x0e, 0x5a, 0xe1, 0xb4, 0x0a, 0xa6, 0xe3,
    681      1.1  christos                 0x9e, 0x49, 0x66, 0x92, 0x28, 0xc9, 0x0e, 0xec,
    682      1.1  christos                 0xb4, 0xa5, 0x0d, 0xb3, 0x2a, 0x50, 0xbc, 0x49,
    683      1.1  christos                 0xe9, 0x0b, 0x4f, 0x4b, 0x35, 0x9a, 0x1d, 0xfd,
    684      1.1  christos 
    685      1.1  christos                 0x11, 0x74, 0x9c, 0xd3, 0x86, 0x7f, 0xcf, 0x2f,
    686      1.1  christos                 0xb7, 0xbb, 0x6c, 0xd4, 0x73, 0x8f, 0x6a, 0x4a,
    687      1.1  christos                 0xd6, 0xf7, 0xca, 0x50, 0x58, 0xf7, 0x61, 0x88,
    688      1.1  christos                 0x45, 0xaf, 0x9f, 0x02, 0x0f, 0x6c, 0x3b, 0x96,
    689      1.1  christos 
    690      1.1  christos                 0x7b, 0x8f, 0x4c, 0xd4, 0xa9, 0x1e, 0x28, 0x13,
    691      1.1  christos                 0xb5, 0x07, 0xae, 0x66, 0xf2, 0xd3, 0x5c, 0x18,
    692      1.1  christos                 0x28, 0x4f, 0x72, 0x92, 0x18, 0x60, 0x62, 0xe1,
    693      1.1  christos                 0x0f, 0xd5, 0x51, 0x0d, 0x18, 0x77, 0x53, 0x51,
    694      1.1  christos 
    695      1.1  christos                 0xef, 0x33, 0x4e, 0x76, 0x34, 0xab, 0x47, 0x43,
    696      1.1  christos                 0xf5, 0xb6, 0x8f, 0x49, 0xad, 0xca, 0xb3, 0x84,
    697      1.1  christos                 0xd3, 0xfd, 0x75, 0xf7, 0x39, 0x0f, 0x40, 0x06,
    698      1.1  christos                 0xef, 0x2a, 0x29, 0x5c, 0x8c, 0x7a, 0x07, 0x6a,
    699      1.1  christos 
    700      1.1  christos                 0xd5, 0x45, 0x46, 0xcd, 0x25, 0xd2, 0x10, 0x7f,
    701      1.1  christos                 0xbe, 0x14, 0x36, 0xc8, 0x40, 0x92, 0x4a, 0xae,
    702      1.1  christos                 0xbe, 0x5b, 0x37, 0x08, 0x93, 0xcd, 0x63, 0xd1,
    703      1.1  christos                 0x32, 0x5b, 0x86, 0x16, 0xfc, 0x48, 0x10, 0x88,
    704      1.1  christos 
    705      1.1  christos                 0x6b, 0xc1, 0x52, 0xc5, 0x32, 0x21, 0xb6, 0xdf,
    706      1.1  christos                 0x37, 0x31, 0x19, 0x39, 0x32, 0x55, 0xee, 0x72,
    707      1.1  christos                 0xbc, 0xaa, 0x88, 0x01, 0x74, 0xf1, 0x71, 0x7f,
    708      1.1  christos                 0x91, 0x84, 0xfa, 0x91, 0x64, 0x6f, 0x17, 0xa2,
    709      1.1  christos 
    710      1.1  christos                 0x4a, 0xc5, 0x5d, 0x16, 0xbf, 0xdd, 0xca, 0x95,
    711      1.1  christos                 0x81, 0xa9, 0x2e, 0xda, 0x47, 0x92, 0x01, 0xf0,
    712      1.1  christos                 0xed, 0xbf, 0x63, 0x36, 0x00, 0xd6, 0x06, 0x6d,
    713      1.1  christos                 0x1a, 0xb3, 0x6d, 0x5d, 0x24, 0x15, 0xd7, 0x13,
    714      1.1  christos 
    715      1.1  christos                 0x51, 0xbb, 0xcd, 0x60, 0x8a, 0x25, 0x10, 0x8d,
    716      1.1  christos                 0x25, 0x64, 0x19, 0x92, 0xc1, 0xf2, 0x6c, 0x53,
    717      1.1  christos                 0x1c, 0xf9, 0xf9, 0x02, 0x03, 0xbc, 0x4c, 0xc1,
    718      1.1  christos                 0x9f, 0x59, 0x27, 0xd8, 0x34, 0xb0, 0xa4, 0x71,
    719      1.1  christos 
    720      1.1  christos                 0x16, 0xd3, 0x88, 0x4b, 0xbb, 0x16, 0x4b, 0x8e,
    721      1.1  christos                 0xc8, 0x83, 0xd1, 0xac, 0x83, 0x2e, 0x56, 0xb3,
    722      1.1  christos                 0x91, 0x8a, 0x98, 0x60, 0x1a, 0x08, 0xd1, 0x71,
    723      1.1  christos                 0x88, 0x15, 0x41, 0xd5, 0x94, 0xdb, 0x39, 0x9c,
    724      1.1  christos 
    725      1.1  christos                 0x6a, 0xe6, 0x15, 0x12, 0x21, 0x74, 0x5a, 0xec,
    726      1.1  christos                 0x81, 0x4c, 0x45, 0xb0, 0xb0, 0x5b, 0x56, 0x54,
    727      1.1  christos                 0x36, 0xfd, 0x6f, 0x13, 0x7a, 0xa1, 0x0a, 0x0c,
    728      1.1  christos                 0x0b, 0x64, 0x37, 0x61, 0xdb, 0xd6, 0xf9, 0xa9,
    729      1.1  christos 
    730      1.1  christos                 0xdc, 0xb9, 0x9b, 0x1a, 0x6e, 0x69, 0x08, 0x54,
    731      1.1  christos                 0xce, 0x07, 0x69, 0xcd, 0xe3, 0x97, 0x61, 0xd8,
    732      1.1  christos                 0x2f, 0xcd, 0xec, 0x15, 0xf0, 0xd9, 0x2d, 0x7d,
    733  1.1.1.2  christos                 0x8e, 0x94, 0xad, 0xe8, 0xeb, 0x83, 0xfb, 0xe0 } },
    734  1.1.1.2  christos         { 32,
    735  1.1.1.2  christos             { 0x99, 0xe5, 0x82, 0x2d, 0xd4, 0x17, 0x3c, 0x99,
    736      1.1  christos                 0x5e, 0x3d, 0xae, 0x0d, 0xde, 0xfb, 0x97, 0x74,
    737      1.1  christos                 0x3f, 0xde, 0x3b, 0x08, 0x01, 0x34, 0xb3, 0x9f,
    738  1.1.1.2  christos                 0x76, 0xe9, 0xbf, 0x8d, 0x0e, 0x88, 0xd5, 0x46 } },
    739  1.1.1.2  christos         { 16,
    740  1.1.1.2  christos             { 0x26, 0x37, 0x40, 0x8f, 0xe1, 0x30, 0x86, 0xea,
    741  1.1.1.2  christos                 0x73, 0xf9, 0x71, 0xe3, 0x42, 0x5e, 0x28, 0x20 } },
    742      1.1  christos     },
    743      1.1  christos     /*
    744      1.1  christos      * test vectors from Hanno Bck
    745      1.1  christos      */
    746      1.1  christos     {
    747  1.1.1.2  christos         { 257,
    748  1.1.1.2  christos             { 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    749      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    750      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    751      1.1  christos                 0xcc, 0x80, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    752      1.1  christos 
    753      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    754      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    755      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    756      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0xcc, 0xcc, 0xcc,
    757      1.1  christos 
    758      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    759      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc5,
    760      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    761      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    762      1.1  christos 
    763      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe3, 0xcc, 0xcc,
    764      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    765      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    766      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    767      1.1  christos 
    768      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xac, 0xcc, 0xcc, 0xcc,
    769      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6,
    770      1.1  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00,
    771      1.1  christos                 0xaf, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
    772      1.1  christos 
    773      1.1  christos                 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xf5, 0x00, 0x00,
    774      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    775      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    776      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    777      1.1  christos 
    778      1.1  christos                 0x00, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00,
    779      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    780      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    781      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    782      1.1  christos 
    783      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    784      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    785      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    786      1.1  christos                 0x00, 0x00, 0x71, 0x92, 0x05, 0xa8, 0x52, 0x1d,
    787      1.1  christos 
    788  1.1.1.2  christos                 0xfc } },
    789  1.1.1.2  christos         { 32,
    790  1.1.1.2  christos             { 0x7f, 0x1b, 0x02, 0x64, 0x00, 0x00, 0x00, 0x00,
    791      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    792      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    793  1.1.1.2  christos                 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc } },
    794  1.1.1.2  christos         { 16,
    795  1.1.1.2  christos             { 0x85, 0x59, 0xb8, 0x76, 0xec, 0xee, 0xd6, 0x6e,
    796  1.1.1.2  christos                 0xb3, 0x77, 0x98, 0xc0, 0x45, 0x7b, 0xaf, 0xf9 } },
    797      1.1  christos     },
    798      1.1  christos     {
    799  1.1.1.2  christos         { 39,
    800  1.1.1.2  christos             { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
    801      1.1  christos                 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
    802      1.1  christos                 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
    803      1.1  christos                 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
    804      1.1  christos 
    805  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x64 } },
    806  1.1.1.2  christos         { 32,
    807  1.1.1.2  christos             { 0xe0, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00,
    808      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    809      1.1  christos                 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
    810  1.1.1.2  christos                 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa } },
    811  1.1.1.2  christos         { 16,
    812  1.1.1.2  christos             { 0x00, 0xbd, 0x12, 0x58, 0x97, 0x8e, 0x20, 0x54,
    813  1.1.1.2  christos                 0x44, 0xc9, 0xaa, 0xaa, 0x82, 0x00, 0x6f, 0xed } },
    814      1.1  christos     },
    815      1.1  christos     {
    816  1.1.1.2  christos         { 2,
    817  1.1.1.2  christos             { 0x02, 0xfc } },
    818  1.1.1.2  christos         { 32,
    819  1.1.1.2  christos             { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
    820      1.1  christos                 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
    821      1.1  christos                 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
    822  1.1.1.2  christos                 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c } },
    823  1.1.1.2  christos         { 16,
    824  1.1.1.2  christos             { 0x06, 0x12, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
    825  1.1.1.2  christos                 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c } },
    826      1.1  christos     },
    827      1.1  christos     {
    828  1.1.1.2  christos         { 415,
    829  1.1.1.2  christos             { 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    830      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    831      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    832      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    833      1.1  christos 
    834      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b,
    835      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    836      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    837      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    838      1.1  christos 
    839      1.1  christos                 0x7b, 0x7b, 0x5c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    840      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    841      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    842      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    843      1.1  christos 
    844      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    845      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    846      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x6e, 0x7b, 0x00, 0x7b,
    847      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    848      1.1  christos 
    849      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    850      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    851      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b,
    852      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    853      1.1  christos 
    854      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    855      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x5c,
    856      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    857      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    858      1.1  christos 
    859      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    860      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    861      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    862      1.1  christos                 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
    863      1.1  christos 
    864      1.1  christos                 0x7b, 0x6e, 0x7b, 0x00, 0x13, 0x00, 0x00, 0x00,
    865      1.1  christos                 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    866      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    867      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    868      1.1  christos 
    869      1.1  christos                 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    870      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    871      1.1  christos                 0x00, 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00,
    872      1.1  christos                 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    873      1.1  christos 
    874      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
    875      1.1  christos                 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00,
    876      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    877      1.1  christos                 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00,
    878      1.1  christos 
    879      1.1  christos                 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    880      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    881      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2,
    882      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    883      1.1  christos 
    884      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    885      1.1  christos                 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00, 0x09,
    886      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    887      1.1  christos                 0x00, 0x7a, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
    888      1.1  christos 
    889      1.1  christos                 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
    890      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    891      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    892  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc } },
    893  1.1.1.2  christos         { 32,
    894  1.1.1.2  christos             { 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    895      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    896      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
    897  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7b } },
    898  1.1.1.2  christos         { 16,
    899  1.1.1.2  christos             { 0x33, 0x20, 0x5b, 0xbf, 0x9e, 0x9f, 0x8f, 0x72,
    900  1.1.1.2  christos                 0x12, 0xab, 0x9e, 0x2a, 0xb9, 0xb7, 0xe4, 0xa5 } },
    901      1.1  christos     },
    902      1.1  christos     {
    903  1.1.1.2  christos         { 118,
    904  1.1.1.2  christos             { 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    905      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    906      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    907      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    908      1.1  christos 
    909      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    910      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    911      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    912      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    913      1.1  christos 
    914      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
    915      1.1  christos                 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xe9,
    916      1.1  christos                 0xe9, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
    917      1.1  christos                 0xac, 0xac, 0xac, 0xac, 0x00, 0x00, 0xac, 0xac,
    918      1.1  christos 
    919      1.1  christos                 0xec, 0x01, 0x00, 0xac, 0xac, 0xac, 0x2c, 0xac,
    920      1.1  christos                 0xa2, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,
    921  1.1.1.2  christos                 0xac, 0xac, 0xac, 0xac, 0x64, 0xf2 } },
    922  1.1.1.2  christos         { 32,
    923  1.1.1.2  christos             { 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
    924      1.1  christos                 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
    925      1.1  christos                 0x00, 0x00, 0xcf, 0x77, 0x77, 0x77, 0x77, 0x77,
    926  1.1.1.2  christos                 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77 } },
    927  1.1.1.2  christos         { 16,
    928  1.1.1.2  christos             { 0x02, 0xee, 0x7c, 0x8c, 0x54, 0x6d, 0xde, 0xb1,
    929  1.1.1.2  christos                 0xa4, 0x67, 0xe4, 0xc3, 0x98, 0x11, 0x58, 0xb9 } },
    930      1.1  christos     },
    931      1.1  christos     /*
    932      1.1  christos      * test vectors from Andrew Moon
    933      1.1  christos      */
    934  1.1.1.2  christos     {
    935  1.1.1.2  christos         /* nacl */
    936      1.1  christos         {
    937      1.1  christos             131,
    938  1.1.1.2  christos             { 0x8e, 0x99, 0x3b, 0x9f, 0x48, 0x68, 0x12, 0x73,
    939      1.1  christos                 0xc2, 0x96, 0x50, 0xba, 0x32, 0xfc, 0x76, 0xce,
    940      1.1  christos                 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4,
    941      1.1  christos                 0x47, 0x6f, 0xb8, 0xc5, 0x31, 0xa1, 0x18, 0x6a,
    942      1.1  christos 
    943      1.1  christos                 0xc0, 0xdf, 0xc1, 0x7c, 0x98, 0xdc, 0xe8, 0x7b,
    944      1.1  christos                 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72,
    945      1.1  christos                 0x71, 0xd2, 0xc2, 0x0f, 0x9b, 0x92, 0x8f, 0xe2,
    946      1.1  christos                 0x27, 0x0d, 0x6f, 0xb8, 0x63, 0xd5, 0x17, 0x38,
    947      1.1  christos 
    948      1.1  christos                 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a,
    949      1.1  christos                 0xb9, 0x32, 0x16, 0x45, 0x48, 0xe5, 0x26, 0xae,
    950      1.1  christos                 0x90, 0x22, 0x43, 0x68, 0x51, 0x7a, 0xcf, 0xea,
    951      1.1  christos                 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda,
    952      1.1  christos 
    953      1.1  christos                 0x99, 0x83, 0x2b, 0x61, 0xca, 0x01, 0xb6, 0xde,
    954      1.1  christos                 0x56, 0x24, 0x4a, 0x9e, 0x88, 0xd5, 0xf9, 0xb3,
    955      1.1  christos                 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6,
    956      1.1  christos                 0x59, 0x9b, 0x1f, 0x65, 0x4c, 0xb4, 0x5a, 0x74,
    957      1.1  christos 
    958  1.1.1.2  christos                 0xe3, 0x55, 0xa5 } },
    959  1.1.1.2  christos         { 32,
    960  1.1.1.2  christos             { 0xee, 0xa6, 0xa7, 0x25, 0x1c, 0x1e, 0x72, 0x91,
    961      1.1  christos                 0x6d, 0x11, 0xc2, 0xcb, 0x21, 0x4d, 0x3c, 0x25,
    962      1.1  christos                 0x25, 0x39, 0x12, 0x1d, 0x8e, 0x23, 0x4e, 0x65,
    963  1.1.1.2  christos                 0x2d, 0x65, 0x1f, 0xa4, 0xc8, 0xcf, 0xf8, 0x80 } },
    964  1.1.1.2  christos         { 16,
    965  1.1.1.2  christos             { 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5,
    966  1.1.1.2  christos                 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9 } },
    967      1.1  christos     },
    968  1.1.1.2  christos     {
    969  1.1.1.2  christos         /* wrap 2^130-5 */
    970      1.1  christos         {
    971      1.1  christos             16,
    972  1.1.1.2  christos             { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    973  1.1.1.2  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
    974  1.1.1.2  christos         { 32,
    975  1.1.1.2  christos             { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    976      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    977      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    978  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
    979  1.1.1.2  christos         { 16,
    980  1.1.1.2  christos             { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    981  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
    982      1.1  christos     },
    983  1.1.1.2  christos     {
    984  1.1.1.2  christos         /* wrap 2^128 */
    985      1.1  christos         {
    986      1.1  christos             16,
    987  1.1.1.2  christos             { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    988  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
    989  1.1.1.2  christos         { 32,
    990  1.1.1.2  christos             { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    991      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    992      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    993  1.1.1.2  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
    994  1.1.1.2  christos         { 16,
    995  1.1.1.2  christos             { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    996  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
    997      1.1  christos     },
    998  1.1.1.2  christos     {
    999  1.1.1.2  christos         /* limb carry */
   1000      1.1  christos         {
   1001      1.1  christos             48,
   1002  1.1.1.2  christos             { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1003      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1004      1.1  christos                 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1005      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1006      1.1  christos 
   1007      1.1  christos                 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1008  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1009  1.1.1.2  christos         { 32,
   1010  1.1.1.2  christos             { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1011      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1012      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1013  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1014  1.1.1.2  christos         { 16,
   1015  1.1.1.2  christos             { 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1016  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1017      1.1  christos     },
   1018  1.1.1.2  christos     {
   1019  1.1.1.2  christos         /* 2^130-5 */
   1020      1.1  christos         {
   1021      1.1  christos             48,
   1022  1.1.1.2  christos             { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1023      1.1  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1024      1.1  christos                 0xfb, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
   1025      1.1  christos                 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
   1026      1.1  christos 
   1027      1.1  christos                 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
   1028  1.1.1.2  christos                 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 } },
   1029  1.1.1.2  christos         { 32,
   1030  1.1.1.2  christos             { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1031      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1032      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1033  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1034  1.1.1.2  christos         { 16,
   1035  1.1.1.2  christos             { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1036      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   1037      1.1  christos 
   1038  1.1.1.2  christos             } },
   1039      1.1  christos     },
   1040  1.1.1.2  christos     {
   1041  1.1.1.2  christos         /* 2^130-6 */
   1042      1.1  christos         {
   1043      1.1  christos             16,
   1044  1.1.1.2  christos             { 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1045  1.1.1.2  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
   1046  1.1.1.2  christos         { 32,
   1047  1.1.1.2  christos             { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1048      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1049      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1050  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1051  1.1.1.2  christos         { 16,
   1052  1.1.1.2  christos             { 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   1053  1.1.1.2  christos                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
   1054      1.1  christos     },
   1055  1.1.1.2  christos     {
   1056  1.1.1.2  christos         /* 5*H+L reduction intermediate */
   1057      1.1  christos         {
   1058      1.1  christos             64,
   1059  1.1.1.2  christos             { 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
   1060      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1061      1.1  christos                 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
   1062      1.1  christos                 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1063      1.1  christos 
   1064      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1065      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1066      1.1  christos                 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1067  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1068  1.1.1.2  christos         { 32,
   1069  1.1.1.2  christos             { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1070      1.1  christos                 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1071      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1072  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1073  1.1.1.2  christos         { 16,
   1074  1.1.1.2  christos             { 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1075  1.1.1.2  christos                 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1076      1.1  christos     },
   1077      1.1  christos     { /* 5*H+L reduction final */
   1078      1.1  christos         {
   1079      1.1  christos             48,
   1080  1.1.1.2  christos             { 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
   1081      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1082      1.1  christos                 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
   1083      1.1  christos                 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1084      1.1  christos 
   1085      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1086      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   1087      1.1  christos 
   1088  1.1.1.2  christos             } },
   1089  1.1.1.2  christos         { 32,
   1090  1.1.1.2  christos             { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1091      1.1  christos                 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1092      1.1  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1093  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
   1094  1.1.1.2  christos         { 16,
   1095  1.1.1.2  christos             { 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   1096  1.1.1.2  christos                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }
   1097      1.1  christos };
   1098      1.1  christos 
   1099      1.1  christos static int test_poly1305(int idx)
   1100      1.1  christos {
   1101      1.1  christos     POLY1305 poly1305;
   1102      1.1  christos     const TESTDATA test = tests[idx];
   1103      1.1  christos     const unsigned char *in = test.input.data;
   1104      1.1  christos     size_t inlen = test.input.size;
   1105      1.1  christos     const unsigned char *key = test.key.data;
   1106      1.1  christos     const unsigned char *expected = test.expected.data;
   1107      1.1  christos     size_t expectedlen = test.expected.size;
   1108      1.1  christos     unsigned char out[16];
   1109      1.1  christos 
   1110      1.1  christos     if (!TEST_size_t_eq(expectedlen, sizeof(out)))
   1111      1.1  christos         return 0;
   1112      1.1  christos 
   1113      1.1  christos     Poly1305_Init(&poly1305, key);
   1114      1.1  christos     Poly1305_Update(&poly1305, in, inlen);
   1115      1.1  christos     Poly1305_Final(&poly1305, out);
   1116      1.1  christos 
   1117      1.1  christos     if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) {
   1118      1.1  christos         TEST_info("Poly1305 test #%d failed.", idx);
   1119      1.1  christos         return 0;
   1120      1.1  christos     }
   1121      1.1  christos 
   1122      1.1  christos     if (inlen > 16) {
   1123      1.1  christos         Poly1305_Init(&poly1305, key);
   1124      1.1  christos         Poly1305_Update(&poly1305, in, 1);
   1125  1.1.1.2  christos         Poly1305_Update(&poly1305, in + 1, inlen - 1);
   1126      1.1  christos         Poly1305_Final(&poly1305, out);
   1127      1.1  christos 
   1128      1.1  christos         if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) {
   1129      1.1  christos             TEST_info("Poly1305 test #%d/1+(N-1) failed.", idx);
   1130      1.1  christos             return 0;
   1131      1.1  christos         }
   1132      1.1  christos     }
   1133      1.1  christos 
   1134      1.1  christos     if (inlen > 32) {
   1135      1.1  christos         size_t half = inlen / 2;
   1136      1.1  christos 
   1137      1.1  christos         Poly1305_Init(&poly1305, key);
   1138      1.1  christos         Poly1305_Update(&poly1305, in, half);
   1139  1.1.1.2  christos         Poly1305_Update(&poly1305, in + half, inlen - half);
   1140      1.1  christos         Poly1305_Final(&poly1305, out);
   1141      1.1  christos 
   1142      1.1  christos         if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) {
   1143      1.1  christos             TEST_info("Poly1305 test #%d/2 failed.", idx);
   1144      1.1  christos             return 0;
   1145      1.1  christos         }
   1146      1.1  christos 
   1147      1.1  christos         for (half = 16; half < inlen; half += 16) {
   1148      1.1  christos             Poly1305_Init(&poly1305, key);
   1149      1.1  christos             Poly1305_Update(&poly1305, in, half);
   1150  1.1.1.2  christos             Poly1305_Update(&poly1305, in + half, inlen - half);
   1151      1.1  christos             Poly1305_Final(&poly1305, out);
   1152      1.1  christos 
   1153      1.1  christos             if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) {
   1154      1.1  christos                 TEST_info("Poly1305 test #%d/%zu+%zu failed.",
   1155  1.1.1.2  christos                     idx, half, inlen - half);
   1156      1.1  christos                 return 0;
   1157      1.1  christos             }
   1158      1.1  christos         }
   1159      1.1  christos     }
   1160      1.1  christos 
   1161      1.1  christos     return 1;
   1162      1.1  christos }
   1163      1.1  christos 
   1164      1.1  christos int setup_tests(void)
   1165      1.1  christos {
   1166      1.1  christos     ADD_ALL_TESTS(test_poly1305, OSSL_NELEM(tests));
   1167      1.1  christos     return 1;
   1168      1.1  christos }
   1169