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