1 /* 2 * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. 3 * 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 8 */ 9 10 /* Internal tests for the poly1305 module */ 11 12 #include <stdio.h> 13 #include <string.h> 14 15 #include "testutil.h" 16 #include "crypto/poly1305.h" 17 #include "../crypto/poly1305/poly1305_local.h" 18 #include "internal/nelem.h" 19 20 typedef struct { 21 size_t size; 22 const unsigned char data[1024]; 23 } SIZED_DATA; 24 25 typedef struct { 26 SIZED_DATA input; 27 SIZED_DATA key; 28 SIZED_DATA expected; 29 } TESTDATA; 30 31 /********************************************************************** 32 * 33 * Test of poly1305 internal functions 34 * 35 ***/ 36 37 static TESTDATA tests[] = { 38 /* 39 * RFC7539 40 */ 41 { 42 { 43 34, 44 { 45 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x67, 0x72, 46 0x61, 0x70, 0x68, 0x69, 0x63, 0x20, 0x46, 0x6f, 47 0x72, 0x75, 0x6d, 0x20, 0x52, 0x65, 0x73, 0x65, 48 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f, 49 50 0x75, 0x70 51 } 52 }, 53 { 54 32, 55 { 56 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33, 57 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8, 58 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd, 59 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b 60 } 61 }, 62 { 63 16, 64 { 65 0xa8, 0x06, 0x1d, 0xc1, 0x30, 0x51, 0x36, 0xc6, 66 0xc2, 0x2b, 0x8b, 0xaf, 0x0c, 0x01, 0x27, 0xa9 67 } 68 } 69 }, 70 /* 71 * test vectors from "The Poly1305-AES message-authentication code" 72 */ 73 { 74 { 75 2, 76 { 77 0xf3, 0xf6 78 } 79 }, 80 { 81 32, 82 { 83 0x85, 0x1f, 0xc4, 0x0c, 0x34, 0x67, 0xac, 0x0b, 84 0xe0, 0x5c, 0xc2, 0x04, 0x04, 0xf3, 0xf7, 0x00, 85 0x58, 0x0b, 0x3b, 0x0f, 0x94, 0x47, 0xbb, 0x1e, 86 0x69, 0xd0, 0x95, 0xb5, 0x92, 0x8b, 0x6d, 0xbc 87 } 88 }, 89 { 90 16, 91 { 92 0xf4, 0xc6, 0x33, 0xc3, 0x04, 0x4f, 0xc1, 0x45, 93 0xf8, 0x4f, 0x33, 0x5c, 0xb8, 0x19, 0x53, 0xde 94 } 95 } 96 }, 97 { 98 { 99 0, 100 { 101 0 102 } 103 }, 104 { 105 32, 106 { 107 0xa0, 0xf3, 0x08, 0x00, 0x00, 0xf4, 0x64, 0x00, 108 0xd0, 0xc7, 0xe9, 0x07, 0x6c, 0x83, 0x44, 0x03, 109 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7, 110 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7 111 } 112 }, 113 { 114 16, 115 { 116 0xdd, 0x3f, 0xab, 0x22, 0x51, 0xf1, 0x1a, 0xc7, 117 0x59, 0xf0, 0x88, 0x71, 0x29, 0xcc, 0x2e, 0xe7 118 } 119 } 120 }, 121 { 122 { 123 32, 124 { 125 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 126 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 127 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 128 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 129 } 130 }, 131 { 132 32, 133 { 134 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 135 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 136 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 137 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef 138 } 139 }, 140 { 141 16, 142 { 143 0x0e, 0xe1, 0xc1, 0x6b, 0xb7, 0x3f, 0x0f, 0x4f, 144 0xd1, 0x98, 0x81, 0x75, 0x3c, 0x01, 0xcd, 0xbe 145 } 146 } 147 }, 148 { 149 { 150 63, 151 { 152 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 153 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 154 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 155 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 156 157 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 158 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 159 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 160 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9 161 } 162 }, 163 { 164 32, 165 { 166 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 167 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 168 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 169 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 170 } 171 }, 172 { 173 16, 174 { 175 0x51, 0x54, 0xad, 0x0d, 0x2c, 0xb2, 0x6e, 0x01, 176 0x27, 0x4f, 0xc5, 0x11, 0x48, 0x49, 0x1f, 0x1b 177 } 178 }, 179 }, 180 /* 181 * self-generated vectors exercise "significant" lengths, such that 182 * are handled by different code paths 183 */ 184 { 185 { 186 64, 187 { 188 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 189 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 190 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 191 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 192 193 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 194 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 195 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 196 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf 197 } 198 }, 199 { 200 32, 201 { 202 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 203 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 204 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 205 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 206 } 207 }, 208 { 209 16, 210 { 211 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37, 212 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66 213 } 214 }, 215 }, 216 { 217 { 218 48, 219 { 220 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 221 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 222 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 223 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 224 225 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 226 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67 227 } 228 }, 229 { 230 32, 231 { 232 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 233 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 234 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 235 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 236 237 } 238 }, 239 { 240 16, 241 { 242 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2, 243 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61 244 } 245 }, 246 }, 247 { 248 { 249 96, 250 { 251 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 252 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 253 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 254 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 255 256 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 257 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 258 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 259 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 260 261 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 262 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 263 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 264 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 265 } 266 }, 267 { 268 32, 269 { 270 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 271 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 272 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 273 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 274 } 275 }, 276 { 277 16, 278 { 279 0xbb, 0xb6, 0x13, 0xb2, 0xb6, 0xd7, 0x53, 0xba, 280 0x07, 0x39, 0x5b, 0x91, 0x6a, 0xae, 0xce, 0x15 281 } 282 }, 283 }, 284 { 285 { 286 112, 287 { 288 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 289 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 290 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 291 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 292 293 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 294 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 295 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 296 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 297 298 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 299 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 300 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 301 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 302 303 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 304 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24 305 } 306 }, 307 { 308 32, 309 { 310 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 311 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 312 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 313 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 314 } 315 }, 316 { 317 16, 318 { 319 0xc7, 0x94, 0xd7, 0x05, 0x7d, 0x17, 0x78, 0xc4, 320 0xbb, 0xee, 0x0a, 0x39, 0xb3, 0xd9, 0x73, 0x42 321 } 322 }, 323 }, 324 { 325 { 326 128, 327 { 328 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 329 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 330 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 331 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 332 333 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 334 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 335 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 336 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 337 338 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 339 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 340 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 341 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 342 343 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 344 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 345 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 346 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 347 } 348 }, 349 { 350 32, 351 { 352 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 353 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 354 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 355 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 356 } 357 }, 358 { 359 16, 360 { 361 0xff, 0xbc, 0xb9, 0xb3, 0x71, 0x42, 0x31, 0x52, 362 0xd7, 0xfc, 0xa5, 0xad, 0x04, 0x2f, 0xba, 0xa9 363 } 364 }, 365 }, 366 { 367 { 368 144, 369 { 370 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 371 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 372 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 373 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 374 375 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 376 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 377 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 378 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 379 380 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 381 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 382 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 383 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 384 385 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 386 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 387 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 388 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36, 389 390 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37, 391 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66 392 } 393 }, 394 { 395 32, 396 { 397 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 398 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 399 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 400 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 401 } 402 }, 403 { 404 16, 405 { 406 0x06, 0x9e, 0xd6, 0xb8, 0xef, 0x0f, 0x20, 0x7b, 407 0x3e, 0x24, 0x3b, 0xb1, 0x01, 0x9f, 0xe6, 0x32 408 } 409 }, 410 }, 411 { 412 { 413 160, 414 { 415 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 416 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 417 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 418 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 419 420 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 421 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 422 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 423 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 424 425 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 426 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 427 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 428 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 429 430 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 431 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 432 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 433 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36, 434 435 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37, 436 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66, 437 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2, 438 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61 439 } 440 }, 441 { 442 32, 443 { 444 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 445 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 446 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 447 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 448 } 449 }, 450 { 451 16, 452 { 453 0xcc, 0xa3, 0x39, 0xd9, 0xa4, 0x5f, 0xa2, 0x36, 454 0x8c, 0x2c, 0x68, 0xb3, 0xa4, 0x17, 0x91, 0x33 455 } 456 }, 457 }, 458 { 459 { 460 288, 461 { 462 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 463 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 464 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 465 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 466 467 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 468 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 469 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 470 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 471 472 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 473 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 474 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 475 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 476 477 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 478 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 479 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 480 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36, 481 482 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37, 483 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66, 484 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2, 485 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61, 486 487 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 488 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 489 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 490 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 491 492 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 493 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 494 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 495 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 496 497 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 498 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 499 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 500 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 501 502 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 503 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 504 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 505 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36 506 } 507 }, 508 { 509 32, 510 { 511 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 512 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 513 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 514 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 515 } 516 }, 517 { 518 16, 519 { 520 0x53, 0xf6, 0xe8, 0x28, 0xa2, 0xf0, 0xfe, 0x0e, 521 0xe8, 0x15, 0xbf, 0x0b, 0xd5, 0x84, 0x1a, 0x34 522 } 523 }, 524 }, 525 { 526 { 527 320, 528 { 529 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 530 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 531 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 532 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 533 534 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 535 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 536 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 537 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 538 539 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 540 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 541 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 542 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 543 544 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 545 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 546 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 547 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36, 548 549 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37, 550 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66, 551 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2, 552 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61, 553 554 0xab, 0x08, 0x12, 0x72, 0x4a, 0x7f, 0x1e, 0x34, 555 0x27, 0x42, 0xcb, 0xed, 0x37, 0x4d, 0x94, 0xd1, 556 0x36, 0xc6, 0xb8, 0x79, 0x5d, 0x45, 0xb3, 0x81, 557 0x98, 0x30, 0xf2, 0xc0, 0x44, 0x91, 0xfa, 0xf0, 558 559 0x99, 0x0c, 0x62, 0xe4, 0x8b, 0x80, 0x18, 0xb2, 560 0xc3, 0xe4, 0xa0, 0xfa, 0x31, 0x34, 0xcb, 0x67, 561 0xfa, 0x83, 0xe1, 0x58, 0xc9, 0x94, 0xd9, 0x61, 562 0xc4, 0xcb, 0x21, 0x09, 0x5c, 0x1b, 0xf9, 0xaf, 563 564 0x48, 0x44, 0x3d, 0x0b, 0xb0, 0xd2, 0x11, 0x09, 565 0xc8, 0x9a, 0x10, 0x0b, 0x5c, 0xe2, 0xc2, 0x08, 566 0x83, 0x14, 0x9c, 0x69, 0xb5, 0x61, 0xdd, 0x88, 567 0x29, 0x8a, 0x17, 0x98, 0xb1, 0x07, 0x16, 0xef, 568 569 0x66, 0x3c, 0xea, 0x19, 0x0f, 0xfb, 0x83, 0xd8, 570 0x95, 0x93, 0xf3, 0xf4, 0x76, 0xb6, 0xbc, 0x24, 571 0xd7, 0xe6, 0x79, 0x10, 0x7e, 0xa2, 0x6a, 0xdb, 572 0x8c, 0xaf, 0x66, 0x52, 0xd0, 0x65, 0x61, 0x36, 573 574 0x81, 0x20, 0x59, 0xa5, 0xda, 0x19, 0x86, 0x37, 575 0xca, 0xc7, 0xc4, 0xa6, 0x31, 0xbe, 0xe4, 0x66, 576 0x5b, 0x88, 0xd7, 0xf6, 0x22, 0x8b, 0x11, 0xe2, 577 0xe2, 0x85, 0x79, 0xa5, 0xc0, 0xc1, 0xf7, 0x61 578 } 579 }, 580 { 581 32, 582 { 583 0x12, 0x97, 0x6a, 0x08, 0xc4, 0x42, 0x6d, 0x0c, 584 0xe8, 0xa8, 0x24, 0x07, 0xc4, 0xf4, 0x82, 0x07, 585 0x80, 0xf8, 0xc2, 0x0a, 0xa7, 0x12, 0x02, 0xd1, 586 0xe2, 0x91, 0x79, 0xcb, 0xcb, 0x55, 0x5a, 0x57 587 } 588 }, 589 { 590 16, 591 { 592 0xb8, 0x46, 0xd4, 0x4e, 0x9b, 0xbd, 0x53, 0xce, 593 0xdf, 0xfb, 0xfb, 0xb6, 0xb7, 0xfa, 0x49, 0x33 594 } 595 }, 596 }, 597 /* 598 * 4th power of the key spills to 131th bit in SIMD key setup 599 */ 600 { 601 { 602 256, 603 { 604 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 605 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 606 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 607 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 608 609 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 610 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 611 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 612 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 613 614 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 615 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 616 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 617 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 618 619 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 620 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 621 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 622 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 623 624 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 625 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 626 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 627 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 628 629 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 630 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 631 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 632 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 633 634 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 635 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 636 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 637 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 638 639 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 640 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 641 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 642 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 643 } 644 }, 645 { 646 32, 647 { 648 0xad, 0x62, 0x81, 0x07, 0xe8, 0x35, 0x1d, 0x0f, 649 0x2c, 0x23, 0x1a, 0x05, 0xdc, 0x4a, 0x41, 0x06, 650 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 651 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 652 } 653 }, 654 { 655 16, 656 { 657 0x07, 0x14, 0x5a, 0x4c, 0x02, 0xfe, 0x5f, 0xa3, 658 0x20, 0x36, 0xde, 0x68, 0xfa, 0xbe, 0x90, 0x66 659 } 660 }, 661 }, 662 /* 663 * poly1305_ieee754.c failed this in final stage 664 */ 665 { 666 { 667 252, 668 { 669 0x84, 0x23, 0x64, 0xe1, 0x56, 0x33, 0x6c, 0x09, 670 0x98, 0xb9, 0x33, 0xa6, 0x23, 0x77, 0x26, 0x18, 671 0x0d, 0x9e, 0x3f, 0xdc, 0xbd, 0xe4, 0xcd, 0x5d, 672 0x17, 0x08, 0x0f, 0xc3, 0xbe, 0xb4, 0x96, 0x14, 673 674 0xd7, 0x12, 0x2c, 0x03, 0x74, 0x63, 0xff, 0x10, 675 0x4d, 0x73, 0xf1, 0x9c, 0x12, 0x70, 0x46, 0x28, 676 0xd4, 0x17, 0xc4, 0xc5, 0x4a, 0x3f, 0xe3, 0x0d, 677 0x3c, 0x3d, 0x77, 0x14, 0x38, 0x2d, 0x43, 0xb0, 678 679 0x38, 0x2a, 0x50, 0xa5, 0xde, 0xe5, 0x4b, 0xe8, 680 0x44, 0xb0, 0x76, 0xe8, 0xdf, 0x88, 0x20, 0x1a, 681 0x1c, 0xd4, 0x3b, 0x90, 0xeb, 0x21, 0x64, 0x3f, 682 0xa9, 0x6f, 0x39, 0xb5, 0x18, 0xaa, 0x83, 0x40, 683 684 0xc9, 0x42, 0xff, 0x3c, 0x31, 0xba, 0xf7, 0xc9, 685 0xbd, 0xbf, 0x0f, 0x31, 0xae, 0x3f, 0xa0, 0x96, 686 0xbf, 0x8c, 0x63, 0x03, 0x06, 0x09, 0x82, 0x9f, 687 0xe7, 0x2e, 0x17, 0x98, 0x24, 0x89, 0x0b, 0xc8, 688 689 0xe0, 0x8c, 0x31, 0x5c, 0x1c, 0xce, 0x2a, 0x83, 690 0x14, 0x4d, 0xbb, 0xff, 0x09, 0xf7, 0x4e, 0x3e, 691 0xfc, 0x77, 0x0b, 0x54, 0xd0, 0x98, 0x4a, 0x8f, 692 0x19, 0xb1, 0x47, 0x19, 0xe6, 0x36, 0x35, 0x64, 693 694 0x1d, 0x6b, 0x1e, 0xed, 0xf6, 0x3e, 0xfb, 0xf0, 695 0x80, 0xe1, 0x78, 0x3d, 0x32, 0x44, 0x54, 0x12, 696 0x11, 0x4c, 0x20, 0xde, 0x0b, 0x83, 0x7a, 0x0d, 697 0xfa, 0x33, 0xd6, 0xb8, 0x28, 0x25, 0xff, 0xf4, 698 699 0x4c, 0x9a, 0x70, 0xea, 0x54, 0xce, 0x47, 0xf0, 700 0x7d, 0xf6, 0x98, 0xe6, 0xb0, 0x33, 0x23, 0xb5, 701 0x30, 0x79, 0x36, 0x4a, 0x5f, 0xc3, 0xe9, 0xdd, 702 0x03, 0x43, 0x92, 0xbd, 0xde, 0x86, 0xdc, 0xcd, 703 704 0xda, 0x94, 0x32, 0x1c, 0x5e, 0x44, 0x06, 0x04, 705 0x89, 0x33, 0x6c, 0xb6, 0x5b, 0xf3, 0x98, 0x9c, 706 0x36, 0xf7, 0x28, 0x2c, 0x2f, 0x5d, 0x2b, 0x88, 707 0x2c, 0x17, 0x1e, 0x74 708 } 709 }, 710 { 711 32, 712 { 713 0x95, 0xd5, 0xc0, 0x05, 0x50, 0x3e, 0x51, 0x0d, 714 0x8c, 0xd0, 0xaa, 0x07, 0x2c, 0x4a, 0x4d, 0x06, 715 0x6e, 0xab, 0xc5, 0x2d, 0x11, 0x65, 0x3d, 0xf4, 716 0x7f, 0xbf, 0x63, 0xab, 0x19, 0x8b, 0xcc, 0x26 717 } 718 }, 719 { 720 16, 721 { 722 0xf2, 0x48, 0x31, 0x2e, 0x57, 0x8d, 0x9d, 0x58, 723 0xf8, 0xb7, 0xbb, 0x4d, 0x19, 0x10, 0x54, 0x31 724 } 725 }, 726 }, 727 /* 728 * AVX2 in poly1305-x86.pl failed this with 176+32 split 729 */ 730 { 731 { 732 208, 733 { 734 0x24, 0x8a, 0xc3, 0x10, 0x85, 0xb6, 0xc2, 0xad, 735 0xaa, 0xa3, 0x82, 0x59, 0xa0, 0xd7, 0x19, 0x2c, 736 0x5c, 0x35, 0xd1, 0xbb, 0x4e, 0xf3, 0x9a, 0xd9, 737 0x4c, 0x38, 0xd1, 0xc8, 0x24, 0x79, 0xe2, 0xdd, 738 739 0x21, 0x59, 0xa0, 0x77, 0x02, 0x4b, 0x05, 0x89, 740 0xbc, 0x8a, 0x20, 0x10, 0x1b, 0x50, 0x6f, 0x0a, 741 0x1a, 0xd0, 0xbb, 0xab, 0x76, 0xe8, 0x3a, 0x83, 742 0xf1, 0xb9, 0x4b, 0xe6, 0xbe, 0xae, 0x74, 0xe8, 743 744 0x74, 0xca, 0xb6, 0x92, 0xc5, 0x96, 0x3a, 0x75, 745 0x43, 0x6b, 0x77, 0x61, 0x21, 0xec, 0x9f, 0x62, 746 0x39, 0x9a, 0x3e, 0x66, 0xb2, 0xd2, 0x27, 0x07, 747 0xda, 0xe8, 0x19, 0x33, 0xb6, 0x27, 0x7f, 0x3c, 748 749 0x85, 0x16, 0xbc, 0xbe, 0x26, 0xdb, 0xbd, 0x86, 750 0xf3, 0x73, 0x10, 0x3d, 0x7c, 0xf4, 0xca, 0xd1, 751 0x88, 0x8c, 0x95, 0x21, 0x18, 0xfb, 0xfb, 0xd0, 752 0xd7, 0xb4, 0xbe, 0xdc, 0x4a, 0xe4, 0x93, 0x6a, 753 754 0xff, 0x91, 0x15, 0x7e, 0x7a, 0xa4, 0x7c, 0x54, 755 0x44, 0x2e, 0xa7, 0x8d, 0x6a, 0xc2, 0x51, 0xd3, 756 0x24, 0xa0, 0xfb, 0xe4, 0x9d, 0x89, 0xcc, 0x35, 757 0x21, 0xb6, 0x6d, 0x16, 0xe9, 0xc6, 0x6a, 0x37, 758 759 0x09, 0x89, 0x4e, 0x4e, 0xb0, 0xa4, 0xee, 0xdc, 760 0x4a, 0xe1, 0x94, 0x68, 0xe6, 0x6b, 0x81, 0xf2, 761 762 0x71, 0x35, 0x1b, 0x1d, 0x92, 0x1e, 0xa5, 0x51, 763 0x04, 0x7a, 0xbc, 0xc6, 0xb8, 0x7a, 0x90, 0x1f, 764 0xde, 0x7d, 0xb7, 0x9f, 0xa1, 0x81, 0x8c, 0x11, 765 0x33, 0x6d, 0xbc, 0x07, 0x24, 0x4a, 0x40, 0xeb 766 } 767 }, 768 { 769 32, 770 { 771 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 772 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 773 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 774 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 775 } 776 }, 777 { 778 16, 779 { 780 0xbc, 0x93, 0x9b, 0xc5, 0x28, 0x14, 0x80, 0xfa, 781 0x99, 0xc6, 0xd6, 0x8c, 0x25, 0x8e, 0xc4, 0x2f 782 } 783 }, 784 }, 785 /* 786 * test vectors from Google 787 */ 788 { 789 { 790 0, 791 { 792 0x00, 793 } 794 }, 795 { 796 32, 797 { 798 0xc8, 0xaf, 0xaa, 0xc3, 0x31, 0xee, 0x37, 0x2c, 799 0xd6, 0x08, 0x2d, 0xe1, 0x34, 0x94, 0x3b, 0x17, 800 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d, 801 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c 802 } 803 }, 804 { 805 16, 806 { 807 0x47, 0x10, 0x13, 0x0e, 0x9f, 0x6f, 0xea, 0x8d, 808 0x72, 0x29, 0x38, 0x50, 0xa6, 0x67, 0xd8, 0x6c 809 } 810 }, 811 }, 812 { 813 { 814 12, 815 { 816 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 817 0x72, 0x6c, 0x64, 0x21 818 } 819 }, 820 { 821 32, 822 { 823 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 824 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 825 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 826 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35 827 } 828 }, 829 { 830 16, 831 { 832 0xa6, 0xf7, 0x45, 0x00, 0x8f, 0x81, 0xc9, 0x16, 833 0xa2, 0x0d, 0xcc, 0x74, 0xee, 0xf2, 0xb2, 0xf0 834 } 835 }, 836 }, 837 { 838 { 839 32, 840 { 841 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 842 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 843 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 844 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 845 } 846 }, 847 { 848 32, 849 { 850 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 851 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 852 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 853 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35 854 } 855 }, 856 { 857 16, 858 { 859 0x49, 0xec, 0x78, 0x09, 0x0e, 0x48, 0x1e, 0xc6, 860 0xc2, 0x6b, 0x33, 0xb9, 0x1c, 0xcc, 0x03, 0x07 861 } 862 }, 863 }, 864 { 865 { 866 128, 867 { 868 0x89, 0xda, 0xb8, 0x0b, 0x77, 0x17, 0xc1, 0xdb, 869 0x5d, 0xb4, 0x37, 0x86, 0x0a, 0x3f, 0x70, 0x21, 870 0x8e, 0x93, 0xe1, 0xb8, 0xf4, 0x61, 0xfb, 0x67, 871 0x7f, 0x16, 0xf3, 0x5f, 0x6f, 0x87, 0xe2, 0xa9, 872 873 0x1c, 0x99, 0xbc, 0x3a, 0x47, 0xac, 0xe4, 0x76, 874 0x40, 0xcc, 0x95, 0xc3, 0x45, 0xbe, 0x5e, 0xcc, 875 0xa5, 0xa3, 0x52, 0x3c, 0x35, 0xcc, 0x01, 0x89, 876 0x3a, 0xf0, 0xb6, 0x4a, 0x62, 0x03, 0x34, 0x27, 877 878 0x03, 0x72, 0xec, 0x12, 0x48, 0x2d, 0x1b, 0x1e, 879 0x36, 0x35, 0x61, 0x69, 0x8a, 0x57, 0x8b, 0x35, 880 0x98, 0x03, 0x49, 0x5b, 0xb4, 0xe2, 0xef, 0x19, 881 0x30, 0xb1, 0x7a, 0x51, 0x90, 0xb5, 0x80, 0xf1, 882 883 0x41, 0x30, 0x0d, 0xf3, 0x0a, 0xdb, 0xec, 0xa2, 884 0x8f, 0x64, 0x27, 0xa8, 0xbc, 0x1a, 0x99, 0x9f, 885 0xd5, 0x1c, 0x55, 0x4a, 0x01, 0x7d, 0x09, 0x5d, 886 0x8c, 0x3e, 0x31, 0x27, 0xda, 0xf9, 0xf5, 0x95 887 } 888 }, 889 { 890 32, 891 { 892 0x2d, 0x77, 0x3b, 0xe3, 0x7a, 0xdb, 0x1e, 0x4d, 893 0x68, 0x3b, 0xf0, 0x07, 0x5e, 0x79, 0xc4, 0xee, 894 0x03, 0x79, 0x18, 0x53, 0x5a, 0x7f, 0x99, 0xcc, 895 0xb7, 0x04, 0x0f, 0xb5, 0xf5, 0xf4, 0x3a, 0xea 896 } 897 }, 898 { 899 16, 900 { 901 0xc8, 0x5d, 0x15, 0xed, 0x44, 0xc3, 0x78, 0xd6, 902 0xb0, 0x0e, 0x23, 0x06, 0x4c, 0x7b, 0xcd, 0x51 903 } 904 }, 905 }, 906 { 907 { 908 528, 909 { 910 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 911 0x17, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 912 913 0x06, 0xdb, 0x1f, 0x1f, 0x36, 0x8d, 0x69, 0x6a, 914 0x81, 0x0a, 0x34, 0x9c, 0x0c, 0x71, 0x4c, 0x9a, 915 0x5e, 0x78, 0x50, 0xc2, 0x40, 0x7d, 0x72, 0x1a, 916 0xcd, 0xed, 0x95, 0xe0, 0x18, 0xd7, 0xa8, 0x52, 917 918 0x66, 0xa6, 0xe1, 0x28, 0x9c, 0xdb, 0x4a, 0xeb, 919 0x18, 0xda, 0x5a, 0xc8, 0xa2, 0xb0, 0x02, 0x6d, 920 0x24, 0xa5, 0x9a, 0xd4, 0x85, 0x22, 0x7f, 0x3e, 921 0xae, 0xdb, 0xb2, 0xe7, 0xe3, 0x5e, 0x1c, 0x66, 922 923 0xcd, 0x60, 0xf9, 0xab, 0xf7, 0x16, 0xdc, 0xc9, 924 0xac, 0x42, 0x68, 0x2d, 0xd7, 0xda, 0xb2, 0x87, 925 0xa7, 0x02, 0x4c, 0x4e, 0xef, 0xc3, 0x21, 0xcc, 926 0x05, 0x74, 0xe1, 0x67, 0x93, 0xe3, 0x7c, 0xec, 927 928 0x03, 0xc5, 0xbd, 0xa4, 0x2b, 0x54, 0xc1, 0x14, 929 0xa8, 0x0b, 0x57, 0xaf, 0x26, 0x41, 0x6c, 0x7b, 930 0xe7, 0x42, 0x00, 0x5e, 0x20, 0x85, 0x5c, 0x73, 931 0xe2, 0x1d, 0xc8, 0xe2, 0xed, 0xc9, 0xd4, 0x35, 932 933 0xcb, 0x6f, 0x60, 0x59, 0x28, 0x00, 0x11, 0xc2, 934 0x70, 0xb7, 0x15, 0x70, 0x05, 0x1c, 0x1c, 0x9b, 935 0x30, 0x52, 0x12, 0x66, 0x20, 0xbc, 0x1e, 0x27, 936 0x30, 0xfa, 0x06, 0x6c, 0x7a, 0x50, 0x9d, 0x53, 937 938 0xc6, 0x0e, 0x5a, 0xe1, 0xb4, 0x0a, 0xa6, 0xe3, 939 0x9e, 0x49, 0x66, 0x92, 0x28, 0xc9, 0x0e, 0xec, 940 0xb4, 0xa5, 0x0d, 0xb3, 0x2a, 0x50, 0xbc, 0x49, 941 0xe9, 0x0b, 0x4f, 0x4b, 0x35, 0x9a, 0x1d, 0xfd, 942 943 0x11, 0x74, 0x9c, 0xd3, 0x86, 0x7f, 0xcf, 0x2f, 944 0xb7, 0xbb, 0x6c, 0xd4, 0x73, 0x8f, 0x6a, 0x4a, 945 0xd6, 0xf7, 0xca, 0x50, 0x58, 0xf7, 0x61, 0x88, 946 0x45, 0xaf, 0x9f, 0x02, 0x0f, 0x6c, 0x3b, 0x96, 947 948 0x7b, 0x8f, 0x4c, 0xd4, 0xa9, 0x1e, 0x28, 0x13, 949 0xb5, 0x07, 0xae, 0x66, 0xf2, 0xd3, 0x5c, 0x18, 950 0x28, 0x4f, 0x72, 0x92, 0x18, 0x60, 0x62, 0xe1, 951 0x0f, 0xd5, 0x51, 0x0d, 0x18, 0x77, 0x53, 0x51, 952 953 0xef, 0x33, 0x4e, 0x76, 0x34, 0xab, 0x47, 0x43, 954 0xf5, 0xb6, 0x8f, 0x49, 0xad, 0xca, 0xb3, 0x84, 955 0xd3, 0xfd, 0x75, 0xf7, 0x39, 0x0f, 0x40, 0x06, 956 0xef, 0x2a, 0x29, 0x5c, 0x8c, 0x7a, 0x07, 0x6a, 957 958 0xd5, 0x45, 0x46, 0xcd, 0x25, 0xd2, 0x10, 0x7f, 959 0xbe, 0x14, 0x36, 0xc8, 0x40, 0x92, 0x4a, 0xae, 960 0xbe, 0x5b, 0x37, 0x08, 0x93, 0xcd, 0x63, 0xd1, 961 0x32, 0x5b, 0x86, 0x16, 0xfc, 0x48, 0x10, 0x88, 962 963 0x6b, 0xc1, 0x52, 0xc5, 0x32, 0x21, 0xb6, 0xdf, 964 0x37, 0x31, 0x19, 0x39, 0x32, 0x55, 0xee, 0x72, 965 0xbc, 0xaa, 0x88, 0x01, 0x74, 0xf1, 0x71, 0x7f, 966 0x91, 0x84, 0xfa, 0x91, 0x64, 0x6f, 0x17, 0xa2, 967 968 0x4a, 0xc5, 0x5d, 0x16, 0xbf, 0xdd, 0xca, 0x95, 969 0x81, 0xa9, 0x2e, 0xda, 0x47, 0x92, 0x01, 0xf0, 970 0xed, 0xbf, 0x63, 0x36, 0x00, 0xd6, 0x06, 0x6d, 971 0x1a, 0xb3, 0x6d, 0x5d, 0x24, 0x15, 0xd7, 0x13, 972 973 0x51, 0xbb, 0xcd, 0x60, 0x8a, 0x25, 0x10, 0x8d, 974 0x25, 0x64, 0x19, 0x92, 0xc1, 0xf2, 0x6c, 0x53, 975 0x1c, 0xf9, 0xf9, 0x02, 0x03, 0xbc, 0x4c, 0xc1, 976 0x9f, 0x59, 0x27, 0xd8, 0x34, 0xb0, 0xa4, 0x71, 977 978 0x16, 0xd3, 0x88, 0x4b, 0xbb, 0x16, 0x4b, 0x8e, 979 0xc8, 0x83, 0xd1, 0xac, 0x83, 0x2e, 0x56, 0xb3, 980 0x91, 0x8a, 0x98, 0x60, 0x1a, 0x08, 0xd1, 0x71, 981 0x88, 0x15, 0x41, 0xd5, 0x94, 0xdb, 0x39, 0x9c, 982 983 0x6a, 0xe6, 0x15, 0x12, 0x21, 0x74, 0x5a, 0xec, 984 0x81, 0x4c, 0x45, 0xb0, 0xb0, 0x5b, 0x56, 0x54, 985 0x36, 0xfd, 0x6f, 0x13, 0x7a, 0xa1, 0x0a, 0x0c, 986 0x0b, 0x64, 0x37, 0x61, 0xdb, 0xd6, 0xf9, 0xa9, 987 988 0xdc, 0xb9, 0x9b, 0x1a, 0x6e, 0x69, 0x08, 0x54, 989 0xce, 0x07, 0x69, 0xcd, 0xe3, 0x97, 0x61, 0xd8, 990 0x2f, 0xcd, 0xec, 0x15, 0xf0, 0xd9, 0x2d, 0x7d, 991 0x8e, 0x94, 0xad, 0xe8, 0xeb, 0x83, 0xfb, 0xe0 992 } 993 }, 994 { 995 32, 996 { 997 0x99, 0xe5, 0x82, 0x2d, 0xd4, 0x17, 0x3c, 0x99, 998 0x5e, 0x3d, 0xae, 0x0d, 0xde, 0xfb, 0x97, 0x74, 999 0x3f, 0xde, 0x3b, 0x08, 0x01, 0x34, 0xb3, 0x9f, 1000 0x76, 0xe9, 0xbf, 0x8d, 0x0e, 0x88, 0xd5, 0x46 1001 } 1002 }, 1003 { 1004 16, 1005 { 1006 0x26, 0x37, 0x40, 0x8f, 0xe1, 0x30, 0x86, 0xea, 1007 0x73, 0xf9, 0x71, 0xe3, 0x42, 0x5e, 0x28, 0x20 1008 } 1009 }, 1010 }, 1011 /* 1012 * test vectors from Hanno Böck 1013 */ 1014 { 1015 { 1016 257, 1017 { 1018 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1019 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1020 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1021 0xcc, 0x80, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1022 1023 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1024 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1025 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1026 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0xcc, 0xcc, 0xcc, 1027 1028 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1029 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc5, 1030 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1031 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1032 1033 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe3, 0xcc, 0xcc, 1034 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1035 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1036 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1037 1038 0xcc, 0xcc, 0xcc, 0xcc, 0xac, 0xcc, 0xcc, 0xcc, 1039 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6, 1040 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 1041 0xaf, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 1042 1043 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xf5, 0x00, 0x00, 1044 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1045 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1046 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1047 1048 0x00, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 1049 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1050 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1051 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1052 1053 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1054 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1055 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1056 0x00, 0x00, 0x71, 0x92, 0x05, 0xa8, 0x52, 0x1d, 1057 1058 0xfc 1059 } 1060 }, 1061 { 1062 32, 1063 { 1064 0x7f, 0x1b, 0x02, 0x64, 0x00, 0x00, 0x00, 0x00, 1065 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1066 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1067 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc 1068 } 1069 }, 1070 { 1071 16, 1072 { 1073 0x85, 0x59, 0xb8, 0x76, 0xec, 0xee, 0xd6, 0x6e, 1074 0xb3, 0x77, 0x98, 0xc0, 0x45, 0x7b, 0xaf, 0xf9 1075 } 1076 }, 1077 }, 1078 { 1079 { 1080 39, 1081 { 1082 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1083 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1084 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1085 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 1086 1087 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x64 1088 } 1089 }, 1090 { 1091 32, 1092 { 1093 0xe0, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 1094 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1095 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1096 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa 1097 } 1098 }, 1099 { 1100 16, 1101 { 1102 0x00, 0xbd, 0x12, 0x58, 0x97, 0x8e, 0x20, 0x54, 1103 0x44, 0xc9, 0xaa, 0xaa, 0x82, 0x00, 0x6f, 0xed 1104 } 1105 }, 1106 }, 1107 { 1108 { 1109 2, 1110 { 1111 0x02, 0xfc 1112 } 1113 }, 1114 { 1115 32, 1116 { 1117 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 1118 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 1119 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 1120 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c 1121 } 1122 }, 1123 { 1124 16, 1125 { 1126 0x06, 0x12, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 1127 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c 1128 } 1129 }, 1130 }, 1131 { 1132 { 1133 415, 1134 { 1135 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1136 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1137 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1138 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1139 1140 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 1141 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1142 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1143 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1144 1145 0x7b, 0x7b, 0x5c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1146 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1147 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1148 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1149 1150 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1151 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1152 0x7b, 0x7b, 0x7b, 0x7b, 0x6e, 0x7b, 0x00, 0x7b, 1153 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1154 1155 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1156 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1157 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 1158 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1159 1160 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1161 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x5c, 1162 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1163 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1164 1165 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1166 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1167 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1168 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 1169 1170 0x7b, 0x6e, 0x7b, 0x00, 0x13, 0x00, 0x00, 0x00, 1171 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1174 1175 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1177 0x00, 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00, 1178 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1179 1180 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 1181 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00, 1182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1183 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 1184 1185 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 1188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1189 1190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1191 0x00, 0x00, 0x20, 0x00, 0xef, 0xff, 0x00, 0x09, 1192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1193 0x00, 0x7a, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 1194 1195 0x00, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 1196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc 1199 } 1200 }, 1201 { 1202 32, 1203 { 1204 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1206 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 1207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7b 1208 } 1209 }, 1210 { 1211 16, 1212 { 1213 0x33, 0x20, 0x5b, 0xbf, 0x9e, 0x9f, 0x8f, 0x72, 1214 0x12, 0xab, 0x9e, 0x2a, 0xb9, 0xb7, 0xe4, 0xa5 1215 } 1216 }, 1217 }, 1218 { 1219 { 1220 118, 1221 { 1222 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1223 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1224 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1225 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1226 1227 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1228 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1229 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1230 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1231 1232 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 1233 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xe9, 1234 0xe9, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 1235 0xac, 0xac, 0xac, 0xac, 0x00, 0x00, 0xac, 0xac, 1236 1237 0xec, 0x01, 0x00, 0xac, 0xac, 0xac, 0x2c, 0xac, 1238 0xa2, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 1239 0xac, 0xac, 0xac, 0xac, 0x64, 0xf2 1240 } 1241 }, 1242 { 1243 32, 1244 { 1245 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 1246 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 1247 0x00, 0x00, 0xcf, 0x77, 0x77, 0x77, 0x77, 0x77, 1248 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77 1249 } 1250 }, 1251 { 1252 16, 1253 { 1254 0x02, 0xee, 0x7c, 0x8c, 0x54, 0x6d, 0xde, 0xb1, 1255 0xa4, 0x67, 0xe4, 0xc3, 0x98, 0x11, 0x58, 0xb9 1256 } 1257 }, 1258 }, 1259 /* 1260 * test vectors from Andrew Moon 1261 */ 1262 { /* nacl */ 1263 { 1264 131, 1265 { 1266 0x8e, 0x99, 0x3b, 0x9f, 0x48, 0x68, 0x12, 0x73, 1267 0xc2, 0x96, 0x50, 0xba, 0x32, 0xfc, 0x76, 0xce, 1268 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4, 1269 0x47, 0x6f, 0xb8, 0xc5, 0x31, 0xa1, 0x18, 0x6a, 1270 1271 0xc0, 0xdf, 0xc1, 0x7c, 0x98, 0xdc, 0xe8, 0x7b, 1272 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72, 1273 0x71, 0xd2, 0xc2, 0x0f, 0x9b, 0x92, 0x8f, 0xe2, 1274 0x27, 0x0d, 0x6f, 0xb8, 0x63, 0xd5, 0x17, 0x38, 1275 1276 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a, 1277 0xb9, 0x32, 0x16, 0x45, 0x48, 0xe5, 0x26, 0xae, 1278 0x90, 0x22, 0x43, 0x68, 0x51, 0x7a, 0xcf, 0xea, 1279 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda, 1280 1281 0x99, 0x83, 0x2b, 0x61, 0xca, 0x01, 0xb6, 0xde, 1282 0x56, 0x24, 0x4a, 0x9e, 0x88, 0xd5, 0xf9, 0xb3, 1283 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6, 1284 0x59, 0x9b, 0x1f, 0x65, 0x4c, 0xb4, 0x5a, 0x74, 1285 1286 0xe3, 0x55, 0xa5 1287 } 1288 }, 1289 { 1290 32, 1291 { 1292 0xee, 0xa6, 0xa7, 0x25, 0x1c, 0x1e, 0x72, 0x91, 1293 0x6d, 0x11, 0xc2, 0xcb, 0x21, 0x4d, 0x3c, 0x25, 1294 0x25, 0x39, 0x12, 0x1d, 0x8e, 0x23, 0x4e, 0x65, 1295 0x2d, 0x65, 0x1f, 0xa4, 0xc8, 0xcf, 0xf8, 0x80 1296 } 1297 }, 1298 { 1299 16, 1300 { 1301 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5, 1302 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9 1303 } 1304 }, 1305 }, 1306 { /* wrap 2^130-5 */ 1307 { 1308 16, 1309 { 1310 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1311 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 1312 } 1313 }, 1314 { 1315 32, 1316 { 1317 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1318 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1321 } 1322 }, 1323 { 1324 16, 1325 { 1326 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1327 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1328 } 1329 }, 1330 }, 1331 { /* wrap 2^128 */ 1332 { 1333 16, 1334 { 1335 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1336 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1337 } 1338 }, 1339 { 1340 32, 1341 { 1342 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1343 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1344 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1345 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 1346 } 1347 }, 1348 { 1349 16, 1350 { 1351 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1352 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1353 } 1354 }, 1355 }, 1356 { /* limb carry */ 1357 { 1358 48, 1359 { 1360 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1361 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1362 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1363 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1364 1365 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1366 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1367 } 1368 }, 1369 { 1370 32, 1371 { 1372 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1374 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1375 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1376 } 1377 }, 1378 { 1379 16, 1380 { 1381 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1382 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1383 } 1384 }, 1385 }, 1386 { /* 2^130-5 */ 1387 { 1388 48, 1389 { 1390 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1391 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1392 0xfb, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 1393 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 1394 1395 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 1396 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 1397 } 1398 }, 1399 { 1400 32, 1401 { 1402 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1403 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1404 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1405 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1406 } 1407 }, 1408 { 1409 16, 1410 { 1411 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1412 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1413 1414 } 1415 }, 1416 }, 1417 { /* 2^130-6 */ 1418 { 1419 16, 1420 { 1421 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1422 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 1423 } 1424 }, 1425 { 1426 32, 1427 { 1428 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1431 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1432 } 1433 }, 1434 { 1435 16, 1436 { 1437 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1438 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 1439 } 1440 }, 1441 }, 1442 { /* 5*H+L reduction intermediate */ 1443 { 1444 64, 1445 { 1446 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9, 1447 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1448 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd, 1449 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1450 1451 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1452 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1453 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1454 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1455 } 1456 }, 1457 { 1458 32, 1459 { 1460 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1461 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1463 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1464 } 1465 }, 1466 { 1467 16, 1468 { 1469 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1470 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1471 } 1472 }, 1473 }, 1474 { /* 5*H+L reduction final */ 1475 { 1476 48, 1477 { 1478 0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9, 1479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1480 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd, 1481 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1482 1483 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1484 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1485 1486 } 1487 }, 1488 { 1489 32, 1490 { 1491 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1492 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1493 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1494 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1495 } 1496 }, 1497 { 1498 16, 1499 { 1500 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1501 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 1502 } 1503 } 1504 } 1505 }; 1506 1507 static int test_poly1305(int idx) 1508 { 1509 POLY1305 poly1305; 1510 const TESTDATA test = tests[idx]; 1511 const unsigned char *in = test.input.data; 1512 size_t inlen = test.input.size; 1513 const unsigned char *key = test.key.data; 1514 const unsigned char *expected = test.expected.data; 1515 size_t expectedlen = test.expected.size; 1516 unsigned char out[16]; 1517 1518 if (!TEST_size_t_eq(expectedlen, sizeof(out))) 1519 return 0; 1520 1521 Poly1305_Init(&poly1305, key); 1522 Poly1305_Update(&poly1305, in, inlen); 1523 Poly1305_Final(&poly1305, out); 1524 1525 if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) { 1526 TEST_info("Poly1305 test #%d failed.", idx); 1527 return 0; 1528 } 1529 1530 if (inlen > 16) { 1531 Poly1305_Init(&poly1305, key); 1532 Poly1305_Update(&poly1305, in, 1); 1533 Poly1305_Update(&poly1305, in+1, inlen-1); 1534 Poly1305_Final(&poly1305, out); 1535 1536 if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) { 1537 TEST_info("Poly1305 test #%d/1+(N-1) failed.", idx); 1538 return 0; 1539 } 1540 } 1541 1542 if (inlen > 32) { 1543 size_t half = inlen / 2; 1544 1545 Poly1305_Init(&poly1305, key); 1546 Poly1305_Update(&poly1305, in, half); 1547 Poly1305_Update(&poly1305, in+half, inlen-half); 1548 Poly1305_Final(&poly1305, out); 1549 1550 if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) { 1551 TEST_info("Poly1305 test #%d/2 failed.", idx); 1552 return 0; 1553 } 1554 1555 for (half = 16; half < inlen; half += 16) { 1556 Poly1305_Init(&poly1305, key); 1557 Poly1305_Update(&poly1305, in, half); 1558 Poly1305_Update(&poly1305, in+half, inlen-half); 1559 Poly1305_Final(&poly1305, out); 1560 1561 if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) { 1562 TEST_info("Poly1305 test #%d/%zu+%zu failed.", 1563 idx, half, inlen-half); 1564 return 0; 1565 } 1566 } 1567 } 1568 1569 return 1; 1570 } 1571 1572 int setup_tests(void) 1573 { 1574 ADD_ALL_TESTS(test_poly1305, OSSL_NELEM(tests)); 1575 return 1; 1576 } 1577