8 typedef UINT32 uint32_t;
17 #define GET_UINT32_BE(n,b,i) \
19 (n) = ( (uint32_t) (b)[(i) ] << 24 ) \
20 | ( (uint32_t) (b)[(i) + 1] << 16 ) \
21 | ( (uint32_t) (b)[(i) + 2] << 8 ) \
22 | ( (uint32_t) (b)[(i) + 3] ); \
27 #define PUT_UINT32_BE(n,b,i) \
29 (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
30 (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
31 (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
32 (b)[(i) + 3] = (unsigned char) ( (n) ); \
36 int unhexify(
unsigned char *obuf,
const char *ibuf)
39 int len = strlen(ibuf) / 2;
40 assert(!(strlen(ibuf) %1));
45 if( c >=
'0' && c <=
'9' )
47 else if( c >=
'a' && c <=
'f' )
49 else if( c >=
'A' && c <=
'F' )
55 if( c2 >=
'0' && c2 <=
'9' )
57 else if( c2 >=
'a' && c2 <=
'f' )
59 else if( c2 >=
'A' && c2 <=
'F' )
64 *obuf++ = ( c << 4 ) | c2;
70 void hexify(
unsigned char *obuf,
const unsigned char *ibuf,
int len)
82 *obuf++ =
'a' + h - 10;
87 *obuf++ =
'a' + l - 10;
103 static int rnd_std_rand(
void *rng_state,
unsigned char *output,
size_t len )
107 if( rng_state != NULL )
110 for( i = 0; i < len; ++i )
121 static int rnd_zero_rand(
void *rng_state,
unsigned char *output,
size_t len )
123 if( rng_state != NULL )
126 memset( output, 0, len );
153 if( rng_state == NULL )
162 memcpy( output, info->
buf, use_len );
163 info->
buf += use_len;
167 if( len - use_len > 0 )
168 return(
rnd_std_rand( NULL, output + use_len, len - use_len ) );
197 uint32_t i, *k, sum, delta=0x9E3779B9;
198 unsigned char result[4];
200 if( rng_state == NULL )
207 size_t use_len = ( len > 4 ) ? 4 : len;
210 for( i = 0; i < 32; i++ )
212 info->
v0 += (((info->
v1 << 4) ^ (info->
v1 >> 5)) + info->
v1) ^ (sum + k[sum & 3]);
214 info->
v1 += (((info->
v0 << 4) ^ (info->
v0 >> 5)) + info->
v0) ^ (sum + k[(sum>>11) & 3]);
218 memcpy( output, result, use_len );
228 #ifdef POLARSSL_GCM_C
231 FCT_SUITE_BGN(test_suite_gcm)
234 FCT_TEST_BGN(gcm_nist_validation_aes_19212800128_0)
236 unsigned char key_str[128];
237 unsigned char src_str[128];
238 unsigned char dst_str[257];
239 unsigned char iv_str[128];
240 unsigned char add_str[128];
241 unsigned char tag_str[128];
242 unsigned char output[128];
243 unsigned char tag_output[16];
245 unsigned int key_len;
246 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
248 memset(key_str, 0x00, 128);
249 memset(src_str, 0x00, 128);
250 memset(dst_str, 0x00, 257);
251 memset(iv_str, 0x00, 128);
252 memset(add_str, 0x00, 128);
253 memset(tag_str, 0x00, 128);
254 memset(output, 0x00, 128);
255 memset(tag_output, 0x00, 16);
257 key_len =
unhexify( key_str,
"f8022b8988383d5cfd7d9e0e208146e7868d3d714fe85744" );
259 iv_len =
unhexify( iv_str,
"5fccd8cb551cfc9c20998da4cb981d49" );
262 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
265 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
266 hexify( dst_str, output, pt_len );
267 hexify( tag_str, tag_output, tag_len );
269 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
270 fct_chk( strcmp( (
char *) tag_str,
"1b5c6c9a28f5edfa4cf99176b0f14077" ) == 0 );
276 FCT_TEST_BGN(gcm_nist_validation_aes_19212800128_1)
278 unsigned char key_str[128];
279 unsigned char src_str[128];
280 unsigned char dst_str[257];
281 unsigned char iv_str[128];
282 unsigned char add_str[128];
283 unsigned char tag_str[128];
284 unsigned char output[128];
285 unsigned char tag_output[16];
287 unsigned int key_len;
288 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
290 memset(key_str, 0x00, 128);
291 memset(src_str, 0x00, 128);
292 memset(dst_str, 0x00, 257);
293 memset(iv_str, 0x00, 128);
294 memset(add_str, 0x00, 128);
295 memset(tag_str, 0x00, 128);
296 memset(output, 0x00, 128);
297 memset(tag_output, 0x00, 16);
299 key_len =
unhexify( key_str,
"a7d4456b8e16b82283b677bd8c4b1f56dc7f153b5cfa746f" );
301 iv_len =
unhexify( iv_str,
"081de4a3f71f5d6fdf7801ff6c667f7d" );
304 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
307 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
308 hexify( dst_str, output, pt_len );
309 hexify( tag_str, tag_output, tag_len );
311 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
312 fct_chk( strcmp( (
char *) tag_str,
"90c2729c5ba04f8f5c73726c910640aa" ) == 0 );
318 FCT_TEST_BGN(gcm_nist_validation_aes_19212800128_2)
320 unsigned char key_str[128];
321 unsigned char src_str[128];
322 unsigned char dst_str[257];
323 unsigned char iv_str[128];
324 unsigned char add_str[128];
325 unsigned char tag_str[128];
326 unsigned char output[128];
327 unsigned char tag_output[16];
329 unsigned int key_len;
330 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
332 memset(key_str, 0x00, 128);
333 memset(src_str, 0x00, 128);
334 memset(dst_str, 0x00, 257);
335 memset(iv_str, 0x00, 128);
336 memset(add_str, 0x00, 128);
337 memset(tag_str, 0x00, 128);
338 memset(output, 0x00, 128);
339 memset(tag_output, 0x00, 16);
341 key_len =
unhexify( key_str,
"5779b60b536b096c9348cd8dafb3451280791e319b7198c2" );
343 iv_len =
unhexify( iv_str,
"62f8e195bc79957ca8ce99a88ded1a02" );
346 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
349 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
350 hexify( dst_str, output, pt_len );
351 hexify( tag_str, tag_output, tag_len );
353 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
354 fct_chk( strcmp( (
char *) tag_str,
"699d71bb63c668b533c357662f861513" ) == 0 );
360 FCT_TEST_BGN(gcm_nist_validation_aes_19212800120_0)
362 unsigned char key_str[128];
363 unsigned char src_str[128];
364 unsigned char dst_str[257];
365 unsigned char iv_str[128];
366 unsigned char add_str[128];
367 unsigned char tag_str[128];
368 unsigned char output[128];
369 unsigned char tag_output[16];
371 unsigned int key_len;
372 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
374 memset(key_str, 0x00, 128);
375 memset(src_str, 0x00, 128);
376 memset(dst_str, 0x00, 257);
377 memset(iv_str, 0x00, 128);
378 memset(add_str, 0x00, 128);
379 memset(tag_str, 0x00, 128);
380 memset(output, 0x00, 128);
381 memset(tag_output, 0x00, 16);
383 key_len =
unhexify( key_str,
"966cfb078f695c8ad84ede2fb96fb89488fa271dd3b50346" );
385 iv_len =
unhexify( iv_str,
"4a7b709d45745d94c5433b01fc9d57fb" );
388 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
391 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
392 hexify( dst_str, output, pt_len );
393 hexify( tag_str, tag_output, tag_len );
395 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
396 fct_chk( strcmp( (
char *) tag_str,
"4a9bd213420629a5f6e471650060e0" ) == 0 );
402 FCT_TEST_BGN(gcm_nist_validation_aes_19212800120_1)
404 unsigned char key_str[128];
405 unsigned char src_str[128];
406 unsigned char dst_str[257];
407 unsigned char iv_str[128];
408 unsigned char add_str[128];
409 unsigned char tag_str[128];
410 unsigned char output[128];
411 unsigned char tag_output[16];
413 unsigned int key_len;
414 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
416 memset(key_str, 0x00, 128);
417 memset(src_str, 0x00, 128);
418 memset(dst_str, 0x00, 257);
419 memset(iv_str, 0x00, 128);
420 memset(add_str, 0x00, 128);
421 memset(tag_str, 0x00, 128);
422 memset(output, 0x00, 128);
423 memset(tag_output, 0x00, 16);
425 key_len =
unhexify( key_str,
"cc69ed684af2c2bd2b3e2d2f9faf98acf8071a686c31e8e3" );
427 iv_len =
unhexify( iv_str,
"0bd4197e5ab294ab7ab1e6ec75db2ac0" );
430 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
433 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
434 hexify( dst_str, output, pt_len );
435 hexify( tag_str, tag_output, tag_len );
437 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
438 fct_chk( strcmp( (
char *) tag_str,
"6632b618b4cab963dd671fd53d2075" ) == 0 );
444 FCT_TEST_BGN(gcm_nist_validation_aes_19212800120_2)
446 unsigned char key_str[128];
447 unsigned char src_str[128];
448 unsigned char dst_str[257];
449 unsigned char iv_str[128];
450 unsigned char add_str[128];
451 unsigned char tag_str[128];
452 unsigned char output[128];
453 unsigned char tag_output[16];
455 unsigned int key_len;
456 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
458 memset(key_str, 0x00, 128);
459 memset(src_str, 0x00, 128);
460 memset(dst_str, 0x00, 257);
461 memset(iv_str, 0x00, 128);
462 memset(add_str, 0x00, 128);
463 memset(tag_str, 0x00, 128);
464 memset(output, 0x00, 128);
465 memset(tag_output, 0x00, 16);
467 key_len =
unhexify( key_str,
"99deafc5ec6155043b53a86d466c2b652d59b7274bb844ef" );
469 iv_len =
unhexify( iv_str,
"09d18e85e5ed38f51e04a724faf33a0e" );
472 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
475 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
476 hexify( dst_str, output, pt_len );
477 hexify( tag_str, tag_output, tag_len );
479 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
480 fct_chk( strcmp( (
char *) tag_str,
"90bfade2f07f38b2192e24689b61cb" ) == 0 );
486 FCT_TEST_BGN(gcm_nist_validation_aes_19212800112_0)
488 unsigned char key_str[128];
489 unsigned char src_str[128];
490 unsigned char dst_str[257];
491 unsigned char iv_str[128];
492 unsigned char add_str[128];
493 unsigned char tag_str[128];
494 unsigned char output[128];
495 unsigned char tag_output[16];
497 unsigned int key_len;
498 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
500 memset(key_str, 0x00, 128);
501 memset(src_str, 0x00, 128);
502 memset(dst_str, 0x00, 257);
503 memset(iv_str, 0x00, 128);
504 memset(add_str, 0x00, 128);
505 memset(tag_str, 0x00, 128);
506 memset(output, 0x00, 128);
507 memset(tag_output, 0x00, 16);
509 key_len =
unhexify( key_str,
"5c0c706a1fd48005e0fd0ed91b4d9f0028c500dccb28ca73" );
511 iv_len =
unhexify( iv_str,
"595716e15498454577d3581e94f5c77e" );
514 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
517 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
518 hexify( dst_str, output, pt_len );
519 hexify( tag_str, tag_output, tag_len );
521 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
522 fct_chk( strcmp( (
char *) tag_str,
"8b10eacb1f127f4c58cbb8c3516c" ) == 0 );
528 FCT_TEST_BGN(gcm_nist_validation_aes_19212800112_1)
530 unsigned char key_str[128];
531 unsigned char src_str[128];
532 unsigned char dst_str[257];
533 unsigned char iv_str[128];
534 unsigned char add_str[128];
535 unsigned char tag_str[128];
536 unsigned char output[128];
537 unsigned char tag_output[16];
539 unsigned int key_len;
540 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
542 memset(key_str, 0x00, 128);
543 memset(src_str, 0x00, 128);
544 memset(dst_str, 0x00, 257);
545 memset(iv_str, 0x00, 128);
546 memset(add_str, 0x00, 128);
547 memset(tag_str, 0x00, 128);
548 memset(output, 0x00, 128);
549 memset(tag_output, 0x00, 16);
551 key_len =
unhexify( key_str,
"ae8e125507ea16d5282fe8bac42d3cb4908b717f345e6a38" );
553 iv_len =
unhexify( iv_str,
"0a7f64edb8cd8052fcd5b92e20c0bc2d" );
556 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
559 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
560 hexify( dst_str, output, pt_len );
561 hexify( tag_str, tag_output, tag_len );
563 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
564 fct_chk( strcmp( (
char *) tag_str,
"467a2c0ba1d24c414f758200b8a4" ) == 0 );
570 FCT_TEST_BGN(gcm_nist_validation_aes_19212800112_2)
572 unsigned char key_str[128];
573 unsigned char src_str[128];
574 unsigned char dst_str[257];
575 unsigned char iv_str[128];
576 unsigned char add_str[128];
577 unsigned char tag_str[128];
578 unsigned char output[128];
579 unsigned char tag_output[16];
581 unsigned int key_len;
582 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
584 memset(key_str, 0x00, 128);
585 memset(src_str, 0x00, 128);
586 memset(dst_str, 0x00, 257);
587 memset(iv_str, 0x00, 128);
588 memset(add_str, 0x00, 128);
589 memset(tag_str, 0x00, 128);
590 memset(output, 0x00, 128);
591 memset(tag_output, 0x00, 16);
593 key_len =
unhexify( key_str,
"02176a5a5d8cb8f5ccee3f66a22181765ce730751c135198" );
595 iv_len =
unhexify( iv_str,
"c19ed1f52f5ebbcf89ab1907b9ebc7f7" );
598 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
601 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
602 hexify( dst_str, output, pt_len );
603 hexify( tag_str, tag_output, tag_len );
605 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
606 fct_chk( strcmp( (
char *) tag_str,
"6525beb5856d6f29105777e31457" ) == 0 );
612 FCT_TEST_BGN(gcm_nist_validation_aes_19212800104_0)
614 unsigned char key_str[128];
615 unsigned char src_str[128];
616 unsigned char dst_str[257];
617 unsigned char iv_str[128];
618 unsigned char add_str[128];
619 unsigned char tag_str[128];
620 unsigned char output[128];
621 unsigned char tag_output[16];
623 unsigned int key_len;
624 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
626 memset(key_str, 0x00, 128);
627 memset(src_str, 0x00, 128);
628 memset(dst_str, 0x00, 257);
629 memset(iv_str, 0x00, 128);
630 memset(add_str, 0x00, 128);
631 memset(tag_str, 0x00, 128);
632 memset(output, 0x00, 128);
633 memset(tag_output, 0x00, 16);
635 key_len =
unhexify( key_str,
"4434d6bce3a33551733d7afe8cd477a79be8eeac19bc0a05" );
637 iv_len =
unhexify( iv_str,
"b0eafdf326886eaacb750dcf2c104abe" );
640 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
643 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
644 hexify( dst_str, output, pt_len );
645 hexify( tag_str, tag_output, tag_len );
647 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
648 fct_chk( strcmp( (
char *) tag_str,
"ab9f7923a3b9228cb9ecd7f907" ) == 0 );
654 FCT_TEST_BGN(gcm_nist_validation_aes_19212800104_1)
656 unsigned char key_str[128];
657 unsigned char src_str[128];
658 unsigned char dst_str[257];
659 unsigned char iv_str[128];
660 unsigned char add_str[128];
661 unsigned char tag_str[128];
662 unsigned char output[128];
663 unsigned char tag_output[16];
665 unsigned int key_len;
666 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
668 memset(key_str, 0x00, 128);
669 memset(src_str, 0x00, 128);
670 memset(dst_str, 0x00, 257);
671 memset(iv_str, 0x00, 128);
672 memset(add_str, 0x00, 128);
673 memset(tag_str, 0x00, 128);
674 memset(output, 0x00, 128);
675 memset(tag_output, 0x00, 16);
677 key_len =
unhexify( key_str,
"39994c2520a6196cc3f3e8c6e4833286ce37399e0379563b" );
679 iv_len =
unhexify( iv_str,
"dbf9c40266d95191d70739e932cd8572" );
682 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
685 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
686 hexify( dst_str, output, pt_len );
687 hexify( tag_str, tag_output, tag_len );
689 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
690 fct_chk( strcmp( (
char *) tag_str,
"b29acaf5addd6b379315535375" ) == 0 );
696 FCT_TEST_BGN(gcm_nist_validation_aes_19212800104_2)
698 unsigned char key_str[128];
699 unsigned char src_str[128];
700 unsigned char dst_str[257];
701 unsigned char iv_str[128];
702 unsigned char add_str[128];
703 unsigned char tag_str[128];
704 unsigned char output[128];
705 unsigned char tag_output[16];
707 unsigned int key_len;
708 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
710 memset(key_str, 0x00, 128);
711 memset(src_str, 0x00, 128);
712 memset(dst_str, 0x00, 257);
713 memset(iv_str, 0x00, 128);
714 memset(add_str, 0x00, 128);
715 memset(tag_str, 0x00, 128);
716 memset(output, 0x00, 128);
717 memset(tag_output, 0x00, 16);
719 key_len =
unhexify( key_str,
"1f27d054114a264b37ee1821a077773750cc79d28594f506" );
721 iv_len =
unhexify( iv_str,
"6739d43092620f44b57e65035ce14565" );
724 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
727 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
728 hexify( dst_str, output, pt_len );
729 hexify( tag_str, tag_output, tag_len );
731 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
732 fct_chk( strcmp( (
char *) tag_str,
"25e0434a3660704eee4bb82962" ) == 0 );
738 FCT_TEST_BGN(gcm_nist_validation_aes_1921280096_0)
740 unsigned char key_str[128];
741 unsigned char src_str[128];
742 unsigned char dst_str[257];
743 unsigned char iv_str[128];
744 unsigned char add_str[128];
745 unsigned char tag_str[128];
746 unsigned char output[128];
747 unsigned char tag_output[16];
749 unsigned int key_len;
750 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
752 memset(key_str, 0x00, 128);
753 memset(src_str, 0x00, 128);
754 memset(dst_str, 0x00, 257);
755 memset(iv_str, 0x00, 128);
756 memset(add_str, 0x00, 128);
757 memset(tag_str, 0x00, 128);
758 memset(output, 0x00, 128);
759 memset(tag_output, 0x00, 16);
761 key_len =
unhexify( key_str,
"0e97d15f4992a6354e43944fd346da65ac1f0f1229189442" );
763 iv_len =
unhexify( iv_str,
"32a64e826b500d7e85f4c42a784f7c19" );
766 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
769 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
770 hexify( dst_str, output, pt_len );
771 hexify( tag_str, tag_output, tag_len );
773 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
774 fct_chk( strcmp( (
char *) tag_str,
"da8f3e0a6f156ec260aa34fd" ) == 0 );
780 FCT_TEST_BGN(gcm_nist_validation_aes_1921280096_1)
782 unsigned char key_str[128];
783 unsigned char src_str[128];
784 unsigned char dst_str[257];
785 unsigned char iv_str[128];
786 unsigned char add_str[128];
787 unsigned char tag_str[128];
788 unsigned char output[128];
789 unsigned char tag_output[16];
791 unsigned int key_len;
792 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
794 memset(key_str, 0x00, 128);
795 memset(src_str, 0x00, 128);
796 memset(dst_str, 0x00, 257);
797 memset(iv_str, 0x00, 128);
798 memset(add_str, 0x00, 128);
799 memset(tag_str, 0x00, 128);
800 memset(output, 0x00, 128);
801 memset(tag_output, 0x00, 16);
803 key_len =
unhexify( key_str,
"27504fc47a9e9a85eaded3782cb5b088359ea1c0abbf2730" );
805 iv_len =
unhexify( iv_str,
"c55c8dc3d6d2970c81659f2f87bf849d" );
808 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
811 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
812 hexify( dst_str, output, pt_len );
813 hexify( tag_str, tag_output, tag_len );
815 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
816 fct_chk( strcmp( (
char *) tag_str,
"113e637538de291e2463abcf" ) == 0 );
822 FCT_TEST_BGN(gcm_nist_validation_aes_1921280096_2)
824 unsigned char key_str[128];
825 unsigned char src_str[128];
826 unsigned char dst_str[257];
827 unsigned char iv_str[128];
828 unsigned char add_str[128];
829 unsigned char tag_str[128];
830 unsigned char output[128];
831 unsigned char tag_output[16];
833 unsigned int key_len;
834 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
836 memset(key_str, 0x00, 128);
837 memset(src_str, 0x00, 128);
838 memset(dst_str, 0x00, 257);
839 memset(iv_str, 0x00, 128);
840 memset(add_str, 0x00, 128);
841 memset(tag_str, 0x00, 128);
842 memset(output, 0x00, 128);
843 memset(tag_output, 0x00, 16);
845 key_len =
unhexify( key_str,
"d5fc67f73de736768e5c64c37459c5eec3d27f7e337c346c" );
847 iv_len =
unhexify( iv_str,
"2691432d3935d4ea8cb8f7c17bef3558" );
850 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
853 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
854 hexify( dst_str, output, pt_len );
855 hexify( tag_str, tag_output, tag_len );
857 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
858 fct_chk( strcmp( (
char *) tag_str,
"c0af76d6f62430106ca54928" ) == 0 );
864 FCT_TEST_BGN(gcm_nist_validation_aes_1921280064_0)
866 unsigned char key_str[128];
867 unsigned char src_str[128];
868 unsigned char dst_str[257];
869 unsigned char iv_str[128];
870 unsigned char add_str[128];
871 unsigned char tag_str[128];
872 unsigned char output[128];
873 unsigned char tag_output[16];
875 unsigned int key_len;
876 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
878 memset(key_str, 0x00, 128);
879 memset(src_str, 0x00, 128);
880 memset(dst_str, 0x00, 257);
881 memset(iv_str, 0x00, 128);
882 memset(add_str, 0x00, 128);
883 memset(tag_str, 0x00, 128);
884 memset(output, 0x00, 128);
885 memset(tag_output, 0x00, 16);
887 key_len =
unhexify( key_str,
"f28292ee2c54119511a67db0d2317433abaeccabfdd5d1f1" );
889 iv_len =
unhexify( iv_str,
"cf9331a1bb3851b2fc3aeed2d1a33eb8" );
892 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
895 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
896 hexify( dst_str, output, pt_len );
897 hexify( tag_str, tag_output, tag_len );
899 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
900 fct_chk( strcmp( (
char *) tag_str,
"8e14b869a95eb12e" ) == 0 );
906 FCT_TEST_BGN(gcm_nist_validation_aes_1921280064_1)
908 unsigned char key_str[128];
909 unsigned char src_str[128];
910 unsigned char dst_str[257];
911 unsigned char iv_str[128];
912 unsigned char add_str[128];
913 unsigned char tag_str[128];
914 unsigned char output[128];
915 unsigned char tag_output[16];
917 unsigned int key_len;
918 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
920 memset(key_str, 0x00, 128);
921 memset(src_str, 0x00, 128);
922 memset(dst_str, 0x00, 257);
923 memset(iv_str, 0x00, 128);
924 memset(add_str, 0x00, 128);
925 memset(tag_str, 0x00, 128);
926 memset(output, 0x00, 128);
927 memset(tag_output, 0x00, 16);
929 key_len =
unhexify( key_str,
"2042f9244079736291ba7fe1f030cba99672a97ce361dc14" );
931 iv_len =
unhexify( iv_str,
"aadfa619bafb21b5c738b65d632bb8b2" );
934 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
937 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
938 hexify( dst_str, output, pt_len );
939 hexify( tag_str, tag_output, tag_len );
941 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
942 fct_chk( strcmp( (
char *) tag_str,
"ad6f52f25aea1c55" ) == 0 );
948 FCT_TEST_BGN(gcm_nist_validation_aes_1921280064_2)
950 unsigned char key_str[128];
951 unsigned char src_str[128];
952 unsigned char dst_str[257];
953 unsigned char iv_str[128];
954 unsigned char add_str[128];
955 unsigned char tag_str[128];
956 unsigned char output[128];
957 unsigned char tag_output[16];
959 unsigned int key_len;
960 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
962 memset(key_str, 0x00, 128);
963 memset(src_str, 0x00, 128);
964 memset(dst_str, 0x00, 257);
965 memset(iv_str, 0x00, 128);
966 memset(add_str, 0x00, 128);
967 memset(tag_str, 0x00, 128);
968 memset(output, 0x00, 128);
969 memset(tag_output, 0x00, 16);
971 key_len =
unhexify( key_str,
"d9b4eb00ac03fabb5304ac38414f7782cb0186436a4b9036" );
973 iv_len =
unhexify( iv_str,
"809939260117b759d8dac1a69c27c12a" );
976 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
979 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
980 hexify( dst_str, output, pt_len );
981 hexify( tag_str, tag_output, tag_len );
983 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
984 fct_chk( strcmp( (
char *) tag_str,
"1f7d0b3104aae50b" ) == 0 );
990 FCT_TEST_BGN(gcm_nist_validation_aes_1921280032_0)
992 unsigned char key_str[128];
993 unsigned char src_str[128];
994 unsigned char dst_str[257];
995 unsigned char iv_str[128];
996 unsigned char add_str[128];
997 unsigned char tag_str[128];
998 unsigned char output[128];
999 unsigned char tag_output[16];
1001 unsigned int key_len;
1002 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
1004 memset(key_str, 0x00, 128);
1005 memset(src_str, 0x00, 128);
1006 memset(dst_str, 0x00, 257);
1007 memset(iv_str, 0x00, 128);
1008 memset(add_str, 0x00, 128);
1009 memset(tag_str, 0x00, 128);
1010 memset(output, 0x00, 128);
1011 memset(tag_output, 0x00, 16);
1013 key_len =
unhexify( key_str,
"b5128f4cf91d53b3a50e9b76b0b27da33cbd4b9349d89413" );
1015 iv_len =
unhexify( iv_str,
"644909f5fbcd61d850e43fbef1fb454f" );
1018 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1021 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1022 hexify( dst_str, output, pt_len );
1023 hexify( tag_str, tag_output, tag_len );
1025 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1026 fct_chk( strcmp( (
char *) tag_str,
"2ddbf709" ) == 0 );
1032 FCT_TEST_BGN(gcm_nist_validation_aes_1921280032_1)
1034 unsigned char key_str[128];
1035 unsigned char src_str[128];
1036 unsigned char dst_str[257];
1037 unsigned char iv_str[128];
1038 unsigned char add_str[128];
1039 unsigned char tag_str[128];
1040 unsigned char output[128];
1041 unsigned char tag_output[16];
1043 unsigned int key_len;
1044 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
1046 memset(key_str, 0x00, 128);
1047 memset(src_str, 0x00, 128);
1048 memset(dst_str, 0x00, 257);
1049 memset(iv_str, 0x00, 128);
1050 memset(add_str, 0x00, 128);
1051 memset(tag_str, 0x00, 128);
1052 memset(output, 0x00, 128);
1053 memset(tag_output, 0x00, 16);
1055 key_len =
unhexify( key_str,
"3ac7ab2ade7a8e397d66be6dc7671f19cd39ad65490f1712" );
1057 iv_len =
unhexify( iv_str,
"d152359d765f41dd9cabf5c8f37cfd8a" );
1060 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1063 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1064 hexify( dst_str, output, pt_len );
1065 hexify( tag_str, tag_output, tag_len );
1067 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1068 fct_chk( strcmp( (
char *) tag_str,
"a6e4e30d" ) == 0 );
1074 FCT_TEST_BGN(gcm_nist_validation_aes_1921280032_2)
1076 unsigned char key_str[128];
1077 unsigned char src_str[128];
1078 unsigned char dst_str[257];
1079 unsigned char iv_str[128];
1080 unsigned char add_str[128];
1081 unsigned char tag_str[128];
1082 unsigned char output[128];
1083 unsigned char tag_output[16];
1085 unsigned int key_len;
1086 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
1088 memset(key_str, 0x00, 128);
1089 memset(src_str, 0x00, 128);
1090 memset(dst_str, 0x00, 257);
1091 memset(iv_str, 0x00, 128);
1092 memset(add_str, 0x00, 128);
1093 memset(tag_str, 0x00, 128);
1094 memset(output, 0x00, 128);
1095 memset(tag_output, 0x00, 16);
1097 key_len =
unhexify( key_str,
"f9c2de7e3c74b7e318413a32892d4fd070de9882158bbc82" );
1099 iv_len =
unhexify( iv_str,
"63410c83fa363a63fa78303b9994b6c6" );
1102 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1105 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1106 hexify( dst_str, output, pt_len );
1107 hexify( tag_str, tag_output, tag_len );
1109 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1110 fct_chk( strcmp( (
char *) tag_str,
"49c514ac" ) == 0 );
1116 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024128_0)
1118 unsigned char key_str[128];
1119 unsigned char src_str[128];
1120 unsigned char dst_str[257];
1121 unsigned char iv_str[128];
1122 unsigned char add_str[128];
1123 unsigned char tag_str[128];
1124 unsigned char output[128];
1125 unsigned char tag_output[16];
1127 unsigned int key_len;
1128 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
1130 memset(key_str, 0x00, 128);
1131 memset(src_str, 0x00, 128);
1132 memset(dst_str, 0x00, 257);
1133 memset(iv_str, 0x00, 128);
1134 memset(add_str, 0x00, 128);
1135 memset(tag_str, 0x00, 128);
1136 memset(output, 0x00, 128);
1137 memset(tag_output, 0x00, 16);
1139 key_len =
unhexify( key_str,
"66ebdc2332276784a69b6bb137161210bac9f1d6a36d6a4c" );
1141 iv_len =
unhexify( iv_str,
"647f41b60c6a579086ba8854d043495c" );
1142 add_len =
unhexify( add_str,
"da26eebd04c27bbe7fa7b54b87d3b7227f056dd9c085fabfcb59ec665a257c6de68fd2c1c51aad5e6188e02a56f70aac49ba489802247ca327de57ea3cfa87e72cae7dd82b50341a2133b03cd0027216fcd94cf43ec8a48e1c04145b597924b37f7977db3ff23b8edc913357037d0fe02afe2bba6b91e27554edbfb77f51cc41" );
1144 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1147 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1148 hexify( dst_str, output, pt_len );
1149 hexify( tag_str, tag_output, tag_len );
1151 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1152 fct_chk( strcmp( (
char *) tag_str,
"420b320c2d616a0b11a7605a84f88e26" ) == 0 );
1158 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024128_1)
1160 unsigned char key_str[128];
1161 unsigned char src_str[128];
1162 unsigned char dst_str[257];
1163 unsigned char iv_str[128];
1164 unsigned char add_str[128];
1165 unsigned char tag_str[128];
1166 unsigned char output[128];
1167 unsigned char tag_output[16];
1169 unsigned int key_len;
1170 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
1172 memset(key_str, 0x00, 128);
1173 memset(src_str, 0x00, 128);
1174 memset(dst_str, 0x00, 257);
1175 memset(iv_str, 0x00, 128);
1176 memset(add_str, 0x00, 128);
1177 memset(tag_str, 0x00, 128);
1178 memset(output, 0x00, 128);
1179 memset(tag_output, 0x00, 16);
1181 key_len =
unhexify( key_str,
"26b04d8427582b04318fefebac2a2298ec3ce61146f39a35" );
1183 iv_len =
unhexify( iv_str,
"99f3449c8538414e7ab595b92a7e6e10" );
1184 add_len =
unhexify( add_str,
"edfc2aa8ed91cfc0e117fc9e2d1bfe843c7cf365a2b6cabd4259686cd7aede9c7453623967a30ffbd52b30fc205208bb346ffc70584478f5f39a79d4971ed71cc3dd0200a89aef6aecda0a1f3a4bf2929b7b9e141be0ddd3671f727e5e793ef085f52ecb77a266b9a02a2c700b63d8c43da0b569510285e98b530abcdbf7739d" );
1186 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1189 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1190 hexify( dst_str, output, pt_len );
1191 hexify( tag_str, tag_output, tag_len );
1193 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1194 fct_chk( strcmp( (
char *) tag_str,
"091cfc38b248460eafb181ab58634a39" ) == 0 );
1200 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024128_2)
1202 unsigned char key_str[128];
1203 unsigned char src_str[128];
1204 unsigned char dst_str[257];
1205 unsigned char iv_str[128];
1206 unsigned char add_str[128];
1207 unsigned char tag_str[128];
1208 unsigned char output[128];
1209 unsigned char tag_output[16];
1211 unsigned int key_len;
1212 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
1214 memset(key_str, 0x00, 128);
1215 memset(src_str, 0x00, 128);
1216 memset(dst_str, 0x00, 257);
1217 memset(iv_str, 0x00, 128);
1218 memset(add_str, 0x00, 128);
1219 memset(tag_str, 0x00, 128);
1220 memset(output, 0x00, 128);
1221 memset(tag_output, 0x00, 16);
1223 key_len =
unhexify( key_str,
"82c8197e6641d0832639e2b1d7691fbac79618b2f5db45bf" );
1225 iv_len =
unhexify( iv_str,
"69e1a3e5eed54bedc941646e3ad25a6c" );
1226 add_len =
unhexify( add_str,
"d0fcb4f4d764efc0fb52c8108e61b67a1386f1a13c1761941cc9a28c6ad15e78474cd2a65ae9475d70d9c845f14bf4d2bd2bc46c29e507a347391829e0f24495b026f681c387b3e6aec8acfa5ecaf4c3cfe796c22469478ee6744cf04a22e6aec82489f53109551f58cc6602933d1780b8b45b933f76a94ef652a8ce8bac2cc6" );
1228 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1231 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1232 hexify( dst_str, output, pt_len );
1233 hexify( tag_str, tag_output, tag_len );
1235 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1236 fct_chk( strcmp( (
char *) tag_str,
"8e74343ae8cf1cdda4969c1a94aab5cc" ) == 0 );
1242 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024120_0)
1244 unsigned char key_str[128];
1245 unsigned char src_str[128];
1246 unsigned char dst_str[257];
1247 unsigned char iv_str[128];
1248 unsigned char add_str[128];
1249 unsigned char tag_str[128];
1250 unsigned char output[128];
1251 unsigned char tag_output[16];
1253 unsigned int key_len;
1254 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
1256 memset(key_str, 0x00, 128);
1257 memset(src_str, 0x00, 128);
1258 memset(dst_str, 0x00, 257);
1259 memset(iv_str, 0x00, 128);
1260 memset(add_str, 0x00, 128);
1261 memset(tag_str, 0x00, 128);
1262 memset(output, 0x00, 128);
1263 memset(tag_output, 0x00, 16);
1265 key_len =
unhexify( key_str,
"1a349ba960b2c8f49b7e5314911ba8de358f2e74ceddf126" );
1267 iv_len =
unhexify( iv_str,
"f5998a62ec507c5fe5b280f9c57ac626" );
1268 add_len =
unhexify( add_str,
"78445eceecf2e6d2ecf2589fd24e854bed3aecc63aef934aec9aea93dca95d58629002a4ba91e9bf6d12e13f0a844977b3c2700645281db5de381adbccd34a84346a99f34889bd46c75b1956e21aa9f87684af55d7fd0de6da07e856d9b791c0a45e9e37881092f6040a9ae9d87757142d3c9c7fc6f25db0e5b5d377865ec4da" );
1270 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1273 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1274 hexify( dst_str, output, pt_len );
1275 hexify( tag_str, tag_output, tag_len );
1277 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1278 fct_chk( strcmp( (
char *) tag_str,
"4d7eab0a3719fa53e552b9e5a85bdd" ) == 0 );
1284 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024120_1)
1286 unsigned char key_str[128];
1287 unsigned char src_str[128];
1288 unsigned char dst_str[257];
1289 unsigned char iv_str[128];
1290 unsigned char add_str[128];
1291 unsigned char tag_str[128];
1292 unsigned char output[128];
1293 unsigned char tag_output[16];
1295 unsigned int key_len;
1296 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
1298 memset(key_str, 0x00, 128);
1299 memset(src_str, 0x00, 128);
1300 memset(dst_str, 0x00, 257);
1301 memset(iv_str, 0x00, 128);
1302 memset(add_str, 0x00, 128);
1303 memset(tag_str, 0x00, 128);
1304 memset(output, 0x00, 128);
1305 memset(tag_output, 0x00, 16);
1307 key_len =
unhexify( key_str,
"019af03d23342f7916e329b6843161e566aa859402cb07ff" );
1309 iv_len =
unhexify( iv_str,
"c5fd96765fcf6d51e23ac6d206744af0" );
1310 add_len =
unhexify( add_str,
"f9808af3403051a52b6652df03b6b37d90a471bc242c436cab6ba699139eaad16847665093798731b9969709287199233c5e77351c5e42b15453b4171237a6d16aee63773c8c0d736b3a8bf38ccf922e561c456682fbc2c7161da3b89526d9de222351bbd04ecd4e8680f26d70fe57d577ea287b199be1bbb8b76328ddee3d33" );
1312 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1315 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1316 hexify( dst_str, output, pt_len );
1317 hexify( tag_str, tag_output, tag_len );
1319 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1320 fct_chk( strcmp( (
char *) tag_str,
"fd36fafe4f5571fafb6ece59b77381" ) == 0 );
1326 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024120_2)
1328 unsigned char key_str[128];
1329 unsigned char src_str[128];
1330 unsigned char dst_str[257];
1331 unsigned char iv_str[128];
1332 unsigned char add_str[128];
1333 unsigned char tag_str[128];
1334 unsigned char output[128];
1335 unsigned char tag_output[16];
1337 unsigned int key_len;
1338 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
1340 memset(key_str, 0x00, 128);
1341 memset(src_str, 0x00, 128);
1342 memset(dst_str, 0x00, 257);
1343 memset(iv_str, 0x00, 128);
1344 memset(add_str, 0x00, 128);
1345 memset(tag_str, 0x00, 128);
1346 memset(output, 0x00, 128);
1347 memset(tag_output, 0x00, 16);
1349 key_len =
unhexify( key_str,
"fab39ad2946b2a343d76b1ccc1939cce7ae3cd7b6ea187bc" );
1351 iv_len =
unhexify( iv_str,
"247bc71446489dd3495c4dee8a071c76" );
1352 add_len =
unhexify( add_str,
"cb2c06fa5aa54ad079741afc56dbed79061a02045b6c099d0ae2d7883b78c5fe09636cc8a5dbba0c0c76ebfdb81217526afbbe04fa4b2b78f3357025930b0f9488369bf3aa088a2107bfb6c4ba714f1c26d0380d647ada5852d2c539300a4779295412b202c3cb977a7b94c24c4dd2a891a2035f388257b84e5b31bdc895f062" );
1354 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1357 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1358 hexify( dst_str, output, pt_len );
1359 hexify( tag_str, tag_output, tag_len );
1361 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1362 fct_chk( strcmp( (
char *) tag_str,
"65e1aad214f49881a067d8b372ab6d" ) == 0 );
1368 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024112_0)
1370 unsigned char key_str[128];
1371 unsigned char src_str[128];
1372 unsigned char dst_str[257];
1373 unsigned char iv_str[128];
1374 unsigned char add_str[128];
1375 unsigned char tag_str[128];
1376 unsigned char output[128];
1377 unsigned char tag_output[16];
1379 unsigned int key_len;
1380 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
1382 memset(key_str, 0x00, 128);
1383 memset(src_str, 0x00, 128);
1384 memset(dst_str, 0x00, 257);
1385 memset(iv_str, 0x00, 128);
1386 memset(add_str, 0x00, 128);
1387 memset(tag_str, 0x00, 128);
1388 memset(output, 0x00, 128);
1389 memset(tag_output, 0x00, 16);
1391 key_len =
unhexify( key_str,
"57b52697f72ae2df6354410a69dc3c5f28b31e6617bd78c1" );
1393 iv_len =
unhexify( iv_str,
"0d96720526491d196eca66457e3c9e71" );
1394 add_len =
unhexify( add_str,
"cbdfdb3cc73aed4297ff9aba76dd8ca4d8efe11b0f521fd7170f07461c7885252874b2ff8fd05a3943ecdc824ffcef0396980ebbddc0a53c6c99086c14fc806d90d35347d45e556e9a55ecc3a9fd74c8e5dbd19ed8b452eaeb673818ddc0695f56ddf3b139a3df378fcfe5b6ccfa358f5a5bcd1550f1d9d5f325f15f9dcd007f" );
1396 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1399 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1400 hexify( dst_str, output, pt_len );
1401 hexify( tag_str, tag_output, tag_len );
1403 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1404 fct_chk( strcmp( (
char *) tag_str,
"f0c49960e60fb63edbb50bfebd98" ) == 0 );
1410 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024112_1)
1412 unsigned char key_str[128];
1413 unsigned char src_str[128];
1414 unsigned char dst_str[257];
1415 unsigned char iv_str[128];
1416 unsigned char add_str[128];
1417 unsigned char tag_str[128];
1418 unsigned char output[128];
1419 unsigned char tag_output[16];
1421 unsigned int key_len;
1422 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
1424 memset(key_str, 0x00, 128);
1425 memset(src_str, 0x00, 128);
1426 memset(dst_str, 0x00, 257);
1427 memset(iv_str, 0x00, 128);
1428 memset(add_str, 0x00, 128);
1429 memset(tag_str, 0x00, 128);
1430 memset(output, 0x00, 128);
1431 memset(tag_output, 0x00, 16);
1433 key_len =
unhexify( key_str,
"7bf69ed06271107e11fdf016edc4aafb0e2d2ac05bdbc46f" );
1435 iv_len =
unhexify( iv_str,
"50e65aa338cfe856c80cbe1331b46abd" );
1436 add_len =
unhexify( add_str,
"a7cab4e1e56f4b9fccca08d3791560e4b6c7ceb40a10adec0536861c5c46fc3fd06c0a8eb32c9f18c40463b0f06cd0053e615dfd7caeb2b353b08ad6da1f8a23ebddf16524d2eaed70d4d7e565412dcc9598df7e107beb464b103cd8de9301cafe8b0420f0c156025d72b73d6e015ed2312535d35899aed73aa54374674d7f02" );
1438 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1441 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1442 hexify( dst_str, output, pt_len );
1443 hexify( tag_str, tag_output, tag_len );
1445 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1446 fct_chk( strcmp( (
char *) tag_str,
"d7fb9d78fede77981948eb013ea1" ) == 0 );
1452 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024112_2)
1454 unsigned char key_str[128];
1455 unsigned char src_str[128];
1456 unsigned char dst_str[257];
1457 unsigned char iv_str[128];
1458 unsigned char add_str[128];
1459 unsigned char tag_str[128];
1460 unsigned char output[128];
1461 unsigned char tag_output[16];
1463 unsigned int key_len;
1464 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
1466 memset(key_str, 0x00, 128);
1467 memset(src_str, 0x00, 128);
1468 memset(dst_str, 0x00, 257);
1469 memset(iv_str, 0x00, 128);
1470 memset(add_str, 0x00, 128);
1471 memset(tag_str, 0x00, 128);
1472 memset(output, 0x00, 128);
1473 memset(tag_output, 0x00, 16);
1475 key_len =
unhexify( key_str,
"caa781bbed41d7a1c56d47673f74d4310a3bf8b1275031d6" );
1477 iv_len =
unhexify( iv_str,
"7795dc04261d9433367f51c3b87bf18d" );
1478 add_len =
unhexify( add_str,
"f44d77bd541e02a737c693ff3ea0adc091fff1966a593524e68954a2d7d66a48199366a5a600331cf392965b5ebedbf949203975fa9db53b72586615975e8a7b84e0633c6cf69caf482dd72b26b0a5687ec71667e7f6e5abea89c3d69d2dc42a242ef959e4039ba5b2d22a3e48424a431a77e816604769d13b7f892e2b33fcd2" );
1480 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1483 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1484 hexify( dst_str, output, pt_len );
1485 hexify( tag_str, tag_output, tag_len );
1487 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1488 fct_chk( strcmp( (
char *) tag_str,
"386930ced9a46097c0d1f6e65c62" ) == 0 );
1494 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024104_0)
1496 unsigned char key_str[128];
1497 unsigned char src_str[128];
1498 unsigned char dst_str[257];
1499 unsigned char iv_str[128];
1500 unsigned char add_str[128];
1501 unsigned char tag_str[128];
1502 unsigned char output[128];
1503 unsigned char tag_output[16];
1505 unsigned int key_len;
1506 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
1508 memset(key_str, 0x00, 128);
1509 memset(src_str, 0x00, 128);
1510 memset(dst_str, 0x00, 257);
1511 memset(iv_str, 0x00, 128);
1512 memset(add_str, 0x00, 128);
1513 memset(tag_str, 0x00, 128);
1514 memset(output, 0x00, 128);
1515 memset(tag_output, 0x00, 16);
1517 key_len =
unhexify( key_str,
"1b268de4ff644cfa4361f8014656d5d4decbcf9cede8605c" );
1519 iv_len =
unhexify( iv_str,
"4009bb00afad026cbad117c6047f4ed8" );
1520 add_len =
unhexify( add_str,
"140c5a93293598fab85b3948b53e0ba15438a0b948e91041a13104f0ad263c8a10613e20e87ef261999a54d469ba6f1abe56ec3979623df8520a0476801987c15410ec24f5a9be72acfca71e8c5904e2ea5f8b22b8cf404b9fd533aa37e33b3d4cf91599cbb3b85ecda4aebaa27ac0365df8312c399ba1767c47fe0923f2c53e" );
1522 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1525 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1526 hexify( dst_str, output, pt_len );
1527 hexify( tag_str, tag_output, tag_len );
1529 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1530 fct_chk( strcmp( (
char *) tag_str,
"af36bcee7561cd7d0861085d55" ) == 0 );
1536 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024104_1)
1538 unsigned char key_str[128];
1539 unsigned char src_str[128];
1540 unsigned char dst_str[257];
1541 unsigned char iv_str[128];
1542 unsigned char add_str[128];
1543 unsigned char tag_str[128];
1544 unsigned char output[128];
1545 unsigned char tag_output[16];
1547 unsigned int key_len;
1548 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
1550 memset(key_str, 0x00, 128);
1551 memset(src_str, 0x00, 128);
1552 memset(dst_str, 0x00, 257);
1553 memset(iv_str, 0x00, 128);
1554 memset(add_str, 0x00, 128);
1555 memset(tag_str, 0x00, 128);
1556 memset(output, 0x00, 128);
1557 memset(tag_output, 0x00, 16);
1559 key_len =
unhexify( key_str,
"c2843bd689ccbba60ce961b7dd50619a59234dad97567e39" );
1561 iv_len =
unhexify( iv_str,
"55a68cbaa5755d8c67bf26f03c5863c6" );
1562 add_len =
unhexify( add_str,
"d7980ab86ceb9b66ab265b68e078deddf7ba084b8967c3227839e8f31cdcfbbffa004953f3582ea9274dcf46e3ad7e7744a576dec37e0cb36fced2b2c2fcf4328f506302f5741e696ce25c49492e33c6a0c8aed5af03cdc1a266352623c6a52a555ce906f684bfd597b5e37f60b5175a981088b9d8b8b5493e4fc1bfeca64f95" );
1564 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1567 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1568 hexify( dst_str, output, pt_len );
1569 hexify( tag_str, tag_output, tag_len );
1571 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1572 fct_chk( strcmp( (
char *) tag_str,
"66cccb7d28d3fa70bce2900a84" ) == 0 );
1578 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024104_2)
1580 unsigned char key_str[128];
1581 unsigned char src_str[128];
1582 unsigned char dst_str[257];
1583 unsigned char iv_str[128];
1584 unsigned char add_str[128];
1585 unsigned char tag_str[128];
1586 unsigned char output[128];
1587 unsigned char tag_output[16];
1589 unsigned int key_len;
1590 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
1592 memset(key_str, 0x00, 128);
1593 memset(src_str, 0x00, 128);
1594 memset(dst_str, 0x00, 257);
1595 memset(iv_str, 0x00, 128);
1596 memset(add_str, 0x00, 128);
1597 memset(tag_str, 0x00, 128);
1598 memset(output, 0x00, 128);
1599 memset(tag_output, 0x00, 16);
1601 key_len =
unhexify( key_str,
"f451c5edf9849a390486dfecad437cb809c33d31f6898ba0" );
1603 iv_len =
unhexify( iv_str,
"9e2dd52c04651ceea88caf4adfb2e8ee" );
1604 add_len =
unhexify( add_str,
"87b804d4a81dc203d67a92b4fdeab959c2056dcedb28d29f216f9172817bcfb3d2256bc1c8aac23feb22b71f1fd02ea28cdf91785931750ba4865d672345b5001b1aade4f6acc7edb03758d2540e6472aff50ab3ea61a0b9ff37ff7a87b91013b14867c3e43cb097a923e6d8ddb1f52e4bd940b60d500a4e35bfa91935065f26" );
1606 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1609 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1610 hexify( dst_str, output, pt_len );
1611 hexify( tag_str, tag_output, tag_len );
1613 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1614 fct_chk( strcmp( (
char *) tag_str,
"e192a49f5f2b22fa39dcfa54c8" ) == 0 );
1620 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102496_0)
1622 unsigned char key_str[128];
1623 unsigned char src_str[128];
1624 unsigned char dst_str[257];
1625 unsigned char iv_str[128];
1626 unsigned char add_str[128];
1627 unsigned char tag_str[128];
1628 unsigned char output[128];
1629 unsigned char tag_output[16];
1631 unsigned int key_len;
1632 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
1634 memset(key_str, 0x00, 128);
1635 memset(src_str, 0x00, 128);
1636 memset(dst_str, 0x00, 257);
1637 memset(iv_str, 0x00, 128);
1638 memset(add_str, 0x00, 128);
1639 memset(tag_str, 0x00, 128);
1640 memset(output, 0x00, 128);
1641 memset(tag_output, 0x00, 16);
1643 key_len =
unhexify( key_str,
"bd02ff8cb540ba572af3431597bdf3f23e61665f96a19b4f" );
1645 iv_len =
unhexify( iv_str,
"7198af3f594a4f0597f45fb592edef50" );
1646 add_len =
unhexify( add_str,
"ef06de48bd34f362fdb425c6e35e37d0dfa1ea874df7d201b6a1c25b736c96e3cc8ed0915807fb7ed759482ca701d28c08cbf955be244bf887df37394d1ca4d2e7eace0dc61c807b714f3161f9d7f554c9f87ad674849c136108cfd8f777997656489d3e993aad4a51b68616083876832b3085a5f8f154b83ea44702c70f2980" );
1648 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1651 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1652 hexify( dst_str, output, pt_len );
1653 hexify( tag_str, tag_output, tag_len );
1655 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1656 fct_chk( strcmp( (
char *) tag_str,
"43298281cd27a36e5cbac4b9" ) == 0 );
1662 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102496_1)
1664 unsigned char key_str[128];
1665 unsigned char src_str[128];
1666 unsigned char dst_str[257];
1667 unsigned char iv_str[128];
1668 unsigned char add_str[128];
1669 unsigned char tag_str[128];
1670 unsigned char output[128];
1671 unsigned char tag_output[16];
1673 unsigned int key_len;
1674 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
1676 memset(key_str, 0x00, 128);
1677 memset(src_str, 0x00, 128);
1678 memset(dst_str, 0x00, 257);
1679 memset(iv_str, 0x00, 128);
1680 memset(add_str, 0x00, 128);
1681 memset(tag_str, 0x00, 128);
1682 memset(output, 0x00, 128);
1683 memset(tag_output, 0x00, 16);
1685 key_len =
unhexify( key_str,
"9ecab4a4a9dda43477c993d6388387443c66ac253071c504" );
1687 iv_len =
unhexify( iv_str,
"9523b2722b927dc3afcc5f7dab2bf033" );
1688 add_len =
unhexify( add_str,
"fb84e38a84225c8ebb307df88325d020a5853bb05ac7a75ee38552c40c302d263181081b05918775cf9cd6905b9982b2ae9ef7993f28fd8714e878c9a4a8101c08e9f13581dcf4f16dabfcb9d3c471c0056805f51e67e9b75572639c3d6ce62d2f8abd64e1e66ffb292360c20155e4d528374a5a22d845340d6f1ac68d33040e" );
1690 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1693 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1694 hexify( dst_str, output, pt_len );
1695 hexify( tag_str, tag_output, tag_len );
1697 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1698 fct_chk( strcmp( (
char *) tag_str,
"696bb674e43cdc7d69346555" ) == 0 );
1704 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102496_2)
1706 unsigned char key_str[128];
1707 unsigned char src_str[128];
1708 unsigned char dst_str[257];
1709 unsigned char iv_str[128];
1710 unsigned char add_str[128];
1711 unsigned char tag_str[128];
1712 unsigned char output[128];
1713 unsigned char tag_output[16];
1715 unsigned int key_len;
1716 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
1718 memset(key_str, 0x00, 128);
1719 memset(src_str, 0x00, 128);
1720 memset(dst_str, 0x00, 257);
1721 memset(iv_str, 0x00, 128);
1722 memset(add_str, 0x00, 128);
1723 memset(tag_str, 0x00, 128);
1724 memset(output, 0x00, 128);
1725 memset(tag_output, 0x00, 16);
1727 key_len =
unhexify( key_str,
"733df8c42cc2e70ac195615d4911ffbecbe2712230c5c292" );
1729 iv_len =
unhexify( iv_str,
"f76135eab5d42e82aedff3090a1ba606" );
1730 add_len =
unhexify( add_str,
"0c8aea747cacf2f0fdfaf368cf32b12dc49f5da9a29bee380d2d64035b73efb56fef13aa20c0b612d9615cefb94f26978fa0b371a47dd20051a1605b9f5e133b52dc514577c53319c9e2bd4ac7cdf37d56a9e715e27860a09d86cc21d0b9f0f302f6acf06f2ff00cc6c878dacb8bde51082f701314de7efd36a246f80f8a8fb6" );
1732 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1735 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1736 hexify( dst_str, output, pt_len );
1737 hexify( tag_str, tag_output, tag_len );
1739 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1740 fct_chk( strcmp( (
char *) tag_str,
"82e6d0c076c7d8ac0839fe18" ) == 0 );
1746 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102464_0)
1748 unsigned char key_str[128];
1749 unsigned char src_str[128];
1750 unsigned char dst_str[257];
1751 unsigned char iv_str[128];
1752 unsigned char add_str[128];
1753 unsigned char tag_str[128];
1754 unsigned char output[128];
1755 unsigned char tag_output[16];
1757 unsigned int key_len;
1758 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
1760 memset(key_str, 0x00, 128);
1761 memset(src_str, 0x00, 128);
1762 memset(dst_str, 0x00, 257);
1763 memset(iv_str, 0x00, 128);
1764 memset(add_str, 0x00, 128);
1765 memset(tag_str, 0x00, 128);
1766 memset(output, 0x00, 128);
1767 memset(tag_output, 0x00, 16);
1769 key_len =
unhexify( key_str,
"ba33c24c41bf9836607b6dd05e66a3d16298c897dd1d70ae" );
1771 iv_len =
unhexify( iv_str,
"4b30423df6de76dd684274afbea089d8" );
1772 add_len =
unhexify( add_str,
"71f5f6ee7bbd774fa691a3d7e0f694a6c8dfe8aaf9cd720e163ef6d5cd949c798f9e9c993adb6d64e7220aa0f17331bfa9a43b659be101726a80e5529e827c3e4b05cfb4d78db9952e58eebe64dfbc0d1baf20e7e48902215277a49ee953108526a70ee150eda85e6a0e49955f8c6323766ae10e13ecfdbe4815f4bb4ba43786" );
1774 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1777 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1778 hexify( dst_str, output, pt_len );
1779 hexify( tag_str, tag_output, tag_len );
1781 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1782 fct_chk( strcmp( (
char *) tag_str,
"73e80018235ded70" ) == 0 );
1788 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102464_1)
1790 unsigned char key_str[128];
1791 unsigned char src_str[128];
1792 unsigned char dst_str[257];
1793 unsigned char iv_str[128];
1794 unsigned char add_str[128];
1795 unsigned char tag_str[128];
1796 unsigned char output[128];
1797 unsigned char tag_output[16];
1799 unsigned int key_len;
1800 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
1802 memset(key_str, 0x00, 128);
1803 memset(src_str, 0x00, 128);
1804 memset(dst_str, 0x00, 257);
1805 memset(iv_str, 0x00, 128);
1806 memset(add_str, 0x00, 128);
1807 memset(tag_str, 0x00, 128);
1808 memset(output, 0x00, 128);
1809 memset(tag_output, 0x00, 16);
1811 key_len =
unhexify( key_str,
"1711553980e3fc5c14c98611ddbdf426463f82c66df83a70" );
1813 iv_len =
unhexify( iv_str,
"3396bd96b83ba611ed22e12e8a5ec911" );
1814 add_len =
unhexify( add_str,
"9506f34c90611acd6ecea385a782a5739f88b4fd13b77570c4d7e0617283e7b21568e32c42ada1cf6aca1a2e2ba184d4101306ff21c9d03e0ffda4854773c26a88a5173d52960286c18753df17361bb7046d2884ee600f58775304f49cf4e782ac70cb00b3d9c345cfcb38e3880743034640bbcae83112543cd1622ebaedb221" );
1816 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1819 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1820 hexify( dst_str, output, pt_len );
1821 hexify( tag_str, tag_output, tag_len );
1823 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1824 fct_chk( strcmp( (
char *) tag_str,
"5d51a0868a2161a5" ) == 0 );
1830 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102464_2)
1832 unsigned char key_str[128];
1833 unsigned char src_str[128];
1834 unsigned char dst_str[257];
1835 unsigned char iv_str[128];
1836 unsigned char add_str[128];
1837 unsigned char tag_str[128];
1838 unsigned char output[128];
1839 unsigned char tag_output[16];
1841 unsigned int key_len;
1842 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
1844 memset(key_str, 0x00, 128);
1845 memset(src_str, 0x00, 128);
1846 memset(dst_str, 0x00, 257);
1847 memset(iv_str, 0x00, 128);
1848 memset(add_str, 0x00, 128);
1849 memset(tag_str, 0x00, 128);
1850 memset(output, 0x00, 128);
1851 memset(tag_output, 0x00, 16);
1853 key_len =
unhexify( key_str,
"5d69dbec7ebe80f2b5b8f61fdff1f4413f5f6624010fb795" );
1855 iv_len =
unhexify( iv_str,
"a2eb3ba50dd93fa375cf682db7b2bc7b" );
1856 add_len =
unhexify( add_str,
"a0f9c0de86b54d3c176ece3305463237e1f70be3c52e2ab1c773a9d27d6fc5dadf61ce7a3d10dba8730d12c306fca8952403983bf242fc1b6efaaa153ca446a07d16a70af4cb1aa4d4c0c93d646dc3a5630f5a610aa9e6eeb873f9a06d3234642bc86b03c596235ec03019e762458abe17d37409a18ca5b7e0e0088391dd3acb" );
1858 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1861 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1862 hexify( dst_str, output, pt_len );
1863 hexify( tag_str, tag_output, tag_len );
1865 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1866 fct_chk( strcmp( (
char *) tag_str,
"1a827855ee98d679" ) == 0 );
1872 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102432_0)
1874 unsigned char key_str[128];
1875 unsigned char src_str[128];
1876 unsigned char dst_str[257];
1877 unsigned char iv_str[128];
1878 unsigned char add_str[128];
1879 unsigned char tag_str[128];
1880 unsigned char output[128];
1881 unsigned char tag_output[16];
1883 unsigned int key_len;
1884 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
1886 memset(key_str, 0x00, 128);
1887 memset(src_str, 0x00, 128);
1888 memset(dst_str, 0x00, 257);
1889 memset(iv_str, 0x00, 128);
1890 memset(add_str, 0x00, 128);
1891 memset(tag_str, 0x00, 128);
1892 memset(output, 0x00, 128);
1893 memset(tag_output, 0x00, 16);
1895 key_len =
unhexify( key_str,
"7aa732879f290aa442217212156920c69457b8ec41eab153" );
1897 iv_len =
unhexify( iv_str,
"cb593221c59846dc82fc0d0cd04af3f0" );
1898 add_len =
unhexify( add_str,
"15d7ebf94985c34b72b6675d7346f0b05bdb8fd3a278555939d2999028e4179e69352d398a5dd0e5b370bdd9cbd24d576b89709c98b6142f71f5b1ba224222afb67599fc58fe043d1a91d7ea95b56dbd086db8e3a061b1bfc6e82dc9ac728174fd3669d65db62a06380a5f72c3d091b7a1b6998041d5501e9fba8bf91a7d278c" );
1900 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1903 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1904 hexify( dst_str, output, pt_len );
1905 hexify( tag_str, tag_output, tag_len );
1907 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1908 fct_chk( strcmp( (
char *) tag_str,
"55b86d22" ) == 0 );
1914 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102432_1)
1916 unsigned char key_str[128];
1917 unsigned char src_str[128];
1918 unsigned char dst_str[257];
1919 unsigned char iv_str[128];
1920 unsigned char add_str[128];
1921 unsigned char tag_str[128];
1922 unsigned char output[128];
1923 unsigned char tag_output[16];
1925 unsigned int key_len;
1926 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
1928 memset(key_str, 0x00, 128);
1929 memset(src_str, 0x00, 128);
1930 memset(dst_str, 0x00, 257);
1931 memset(iv_str, 0x00, 128);
1932 memset(add_str, 0x00, 128);
1933 memset(tag_str, 0x00, 128);
1934 memset(output, 0x00, 128);
1935 memset(tag_output, 0x00, 16);
1937 key_len =
unhexify( key_str,
"961a3e78f6a75944455f9d9d0345e08f4669972f3d5c202c" );
1939 iv_len =
unhexify( iv_str,
"ce43a19ac648e62ddc49d243fb34e29f" );
1940 add_len =
unhexify( add_str,
"393736558133078a0367b8248bc18c8352f92a9212e90318a5b63ad3c422ccda7c181c565629acf4fc73b2de85bc9cf38310fe703a877b3e7d3b2d416aeb962f1027077232cfa39c5e5284a1b323264175546ddfb250ce693e2dc78a0479bd89a7ab44b63e504866d2ec6b5153cfd51f29a91cd4fa2b8e09878747ae53981875" );
1942 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1945 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1946 hexify( dst_str, output, pt_len );
1947 hexify( tag_str, tag_output, tag_len );
1949 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1950 fct_chk( strcmp( (
char *) tag_str,
"ac701373" ) == 0 );
1956 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102432_2)
1958 unsigned char key_str[128];
1959 unsigned char src_str[128];
1960 unsigned char dst_str[257];
1961 unsigned char iv_str[128];
1962 unsigned char add_str[128];
1963 unsigned char tag_str[128];
1964 unsigned char output[128];
1965 unsigned char tag_output[16];
1967 unsigned int key_len;
1968 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
1970 memset(key_str, 0x00, 128);
1971 memset(src_str, 0x00, 128);
1972 memset(dst_str, 0x00, 257);
1973 memset(iv_str, 0x00, 128);
1974 memset(add_str, 0x00, 128);
1975 memset(tag_str, 0x00, 128);
1976 memset(output, 0x00, 128);
1977 memset(tag_output, 0x00, 16);
1979 key_len =
unhexify( key_str,
"c4d492904becde4e46c2557ac833265c715bb57f18cd040d" );
1981 iv_len =
unhexify( iv_str,
"df41b22b92d43a96a7504514b92e644f" );
1982 add_len =
unhexify( add_str,
"c4dd46ce3e486d89903482de247c1e7df05809a247302db3ca8457b93d6886c0a3d1be40a90f6502ec58d0ddd715896cee37322d48ec3f0c3ad716f1bb679afdcc0e4c79e5e2e346702d349ec7b391ef7eafde618bbadce5d14d22123de611c065780a4d05e928e87d12b749888d6004224c3e457aca0190bf1a7fba2453680b" );
1984 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
1987 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
1988 hexify( dst_str, output, pt_len );
1989 hexify( tag_str, tag_output, tag_len );
1991 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
1992 fct_chk( strcmp( (
char *) tag_str,
"7a259bda" ) == 0 );
1998 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240128_0)
2000 unsigned char key_str[128];
2001 unsigned char src_str[128];
2002 unsigned char dst_str[257];
2003 unsigned char iv_str[128];
2004 unsigned char add_str[128];
2005 unsigned char tag_str[128];
2006 unsigned char output[128];
2007 unsigned char tag_output[16];
2009 unsigned int key_len;
2010 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
2012 memset(key_str, 0x00, 128);
2013 memset(src_str, 0x00, 128);
2014 memset(dst_str, 0x00, 257);
2015 memset(iv_str, 0x00, 128);
2016 memset(add_str, 0x00, 128);
2017 memset(tag_str, 0x00, 128);
2018 memset(output, 0x00, 128);
2019 memset(tag_output, 0x00, 16);
2021 key_len =
unhexify( key_str,
"316660f013ced78a16701b35479ffb1f7c8c4e964c1b52b8" );
2022 pt_len =
unhexify( src_str,
"d262c15d08aea46f614c7f8f6a54631289e54ca97d698777388e137f431bb783601e7999e7af98775d7b87ce061d9ba56570ed8c58b6bbac5f12f751fc376ab0f14b36b40b2b5533727be3bbc9a51183405d5fd0121201ff592817d06613b504a3440b0e1a57e9ed1771766a9a5b789054f7032d20b23c5c37d77f293c677fd8" );
2023 iv_len =
unhexify( iv_str,
"919ceb172d2cb460bdb3b3e58debe889" );
2026 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2029 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2030 hexify( dst_str, output, pt_len );
2031 hexify( tag_str, tag_output, tag_len );
2033 fct_chk( strcmp( (
char *) dst_str,
"5f5128f7f948f0cc9fb248a24b07c54247e40080a992acddb2615d90ef9328a17bd5e9a698b00103855738aea55c4944cde4a9148bfa8db12233231861c455e52c9889119ca402eabc8f41b27000156dd29b901024336cb2b7088eb5fd534ba58f23caf140a8b2549486074e4edbfc262ed9c7c7ccaae24be8de873ad43cd13e" ) == 0 );
2034 fct_chk( strcmp( (
char *) tag_str,
"ae22ec4c19e7616a5b877f168febd202" ) == 0 );
2040 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240128_1)
2042 unsigned char key_str[128];
2043 unsigned char src_str[128];
2044 unsigned char dst_str[257];
2045 unsigned char iv_str[128];
2046 unsigned char add_str[128];
2047 unsigned char tag_str[128];
2048 unsigned char output[128];
2049 unsigned char tag_output[16];
2051 unsigned int key_len;
2052 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
2054 memset(key_str, 0x00, 128);
2055 memset(src_str, 0x00, 128);
2056 memset(dst_str, 0x00, 257);
2057 memset(iv_str, 0x00, 128);
2058 memset(add_str, 0x00, 128);
2059 memset(tag_str, 0x00, 128);
2060 memset(output, 0x00, 128);
2061 memset(tag_output, 0x00, 16);
2063 key_len =
unhexify( key_str,
"1bdb707c328304809bf0608874c9db373df3c7104a5a7049" );
2064 pt_len =
unhexify( src_str,
"ca243caa145124997f5e2e6bb25d021a38d58d0ab1bbf06d086c2416c08e3512aa887cc215fdb34d0f2d78f6a45885767f15fc00b68a4df1130587de777efb9cfd59cafa077477e97edabf2bf04c9a6ce029c230385ca5f9928bca7fe5503b18774849199d2a39a378a2d3144aef4416c1718319ff1bed8021dd77a07f61eaa6" );
2065 iv_len =
unhexify( iv_str,
"b7e7fc0d5adaed1632c5f7d1f56458f1" );
2068 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2071 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2072 hexify( dst_str, output, pt_len );
2073 hexify( tag_str, tag_output, tag_len );
2075 fct_chk( strcmp( (
char *) dst_str,
"91c7954bdd6a49360fdce11c1bc710512bf5a57bcef241fb63e5ceabcdc9699d0c0ddb025c75195ec25e631507f13e18799e6be9798e5639ad8401f6244c5b0ace3905ae0de08e2d0fcd19d193de83943fe449af4b503a454c248e677d2f51100fd9b8b7e5388d5091089369a7c2ff38bd353e9757ef873a87f15f30232bafb4" ) == 0 );
2076 fct_chk( strcmp( (
char *) tag_str,
"72337bdb2bfdd1f1ebe0dba6f9b7b649" ) == 0 );
2082 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240128_2)
2084 unsigned char key_str[128];
2085 unsigned char src_str[128];
2086 unsigned char dst_str[257];
2087 unsigned char iv_str[128];
2088 unsigned char add_str[128];
2089 unsigned char tag_str[128];
2090 unsigned char output[128];
2091 unsigned char tag_output[16];
2093 unsigned int key_len;
2094 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
2096 memset(key_str, 0x00, 128);
2097 memset(src_str, 0x00, 128);
2098 memset(dst_str, 0x00, 257);
2099 memset(iv_str, 0x00, 128);
2100 memset(add_str, 0x00, 128);
2101 memset(tag_str, 0x00, 128);
2102 memset(output, 0x00, 128);
2103 memset(tag_output, 0x00, 16);
2105 key_len =
unhexify( key_str,
"a6dd0d7e9d6ad1ad7c7394d53e9e081c436d34c8158bbc95" );
2106 pt_len =
unhexify( src_str,
"2d95d64ed3be857a5c79c7af20aee00f142557e10d780383fef2d45f16c7e2823ffee495b220c87971610e5650f7c3e8d296b3f03fc883c00351df48d97717427101aa0c08a23c408b24511621b640c210b316cf17e3dfd714f0c9aa9ddd974692d1c2ae27b9bb0fbb428e7a9da3b3cf9bd869e730ccaa3aa4bd08f01f84039a" );
2107 iv_len =
unhexify( iv_str,
"60b4b9c77d01232c5d3d4af81becb0dc" );
2110 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2113 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2114 hexify( dst_str, output, pt_len );
2115 hexify( tag_str, tag_output, tag_len );
2117 fct_chk( strcmp( (
char *) dst_str,
"4494460ee73d3513814e1f779bfe3a229b49348d7641e9ed4dd959b582960097ef08b91292bb9db87b4e728d01b92683f4cdc81151a69bed2096bf6fb2e45d0148404420ea16b631b421e6f4c6665fe33c2d11e7b22b6aa82b610b83214ae4d17e681972e3a1f77306d3c54d96c47d8be1fb2c8cae8300ac9db99013f25a65a1" ) == 0 );
2118 fct_chk( strcmp( (
char *) tag_str,
"d40a246c18518ea9f8d733b42181123c" ) == 0 );
2124 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240120_0)
2126 unsigned char key_str[128];
2127 unsigned char src_str[128];
2128 unsigned char dst_str[257];
2129 unsigned char iv_str[128];
2130 unsigned char add_str[128];
2131 unsigned char tag_str[128];
2132 unsigned char output[128];
2133 unsigned char tag_output[16];
2135 unsigned int key_len;
2136 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
2138 memset(key_str, 0x00, 128);
2139 memset(src_str, 0x00, 128);
2140 memset(dst_str, 0x00, 257);
2141 memset(iv_str, 0x00, 128);
2142 memset(add_str, 0x00, 128);
2143 memset(tag_str, 0x00, 128);
2144 memset(output, 0x00, 128);
2145 memset(tag_output, 0x00, 16);
2147 key_len =
unhexify( key_str,
"e9ed78cb5c10df05ad00c6f1fb35b4d28e6ddfcc16456807" );
2148 pt_len =
unhexify( src_str,
"e465e57cbac0dcd1e8ccda22042abecd9d89c4ac91b0e82a41fd51107a792099e63f7cf23a889d8c04edae2c2b3a9e51dbee6c3b71ace3de08ab354a295888bb99ae0fe428dd69bc013d49a70511ef60524282347787a542fe9501b6452b5faad2f129a9795c2c4cc0881ec4af8f0e0d2d4a7a628cb051055fe831b51e250608" );
2149 iv_len =
unhexify( iv_str,
"3a8ad989c621ae1e82b8d255a3c95028" );
2152 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2155 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2156 hexify( dst_str, output, pt_len );
2157 hexify( tag_str, tag_output, tag_len );
2159 fct_chk( strcmp( (
char *) dst_str,
"6855e4702f1ea593bfe30ee65b3fab832778d6b11a0ad902dd37361b8d85ab76d1f2ccf7927d695eb3129286c26737b9573e26bf64b31de26f97525f84345f73bda2888a1f53c9b405ad627bbe5dea123c9fb0a4b7f193cd8fbc8fa4a5e5f64e9c083f5c048d61fd1d347b49afdc69e0ca6a82e3b064c49d5bffa2800b5cfcdf" ) == 0 );
2160 fct_chk( strcmp( (
char *) tag_str,
"9661f5c3b0d99d4f762bdcabd48df2" ) == 0 );
2166 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240120_1)
2168 unsigned char key_str[128];
2169 unsigned char src_str[128];
2170 unsigned char dst_str[257];
2171 unsigned char iv_str[128];
2172 unsigned char add_str[128];
2173 unsigned char tag_str[128];
2174 unsigned char output[128];
2175 unsigned char tag_output[16];
2177 unsigned int key_len;
2178 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
2180 memset(key_str, 0x00, 128);
2181 memset(src_str, 0x00, 128);
2182 memset(dst_str, 0x00, 257);
2183 memset(iv_str, 0x00, 128);
2184 memset(add_str, 0x00, 128);
2185 memset(tag_str, 0x00, 128);
2186 memset(output, 0x00, 128);
2187 memset(tag_output, 0x00, 16);
2189 key_len =
unhexify( key_str,
"76a5bc9a8d7c6e2822456156cea7d493702d61e7d504e3c3" );
2190 pt_len =
unhexify( src_str,
"0a7fbca875fd620c3d8de788e5c27534160f68d60d70fa4167adf0c18ea25fa1f2cc551fdf447aa16678d3f82193cf421a6fa953532a3765bcb54183bf0e96527ae5e695ed3bba5d9911f36c1aa73132cd43b2698996eb43ff84420e315a06d7db02aee815461892c7ab9026953c4bc25f47153d5cb7b966b71b24dad69fa565" );
2191 iv_len =
unhexify( iv_str,
"09b681de6683751300c2ada84a214d02" );
2194 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2197 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2198 hexify( dst_str, output, pt_len );
2199 hexify( tag_str, tag_output, tag_len );
2201 fct_chk( strcmp( (
char *) dst_str,
"dd66e08fc500426feb497c39c5853b26376272dfabb82ab5978167faa91adb025a6ca0e8fe3d04a0d97062eee8ca6530c3788bebe4436ecdd3d9eab96d38a0cf9b8cc6a584a0facaea33ec2f4a6e61f780c3dad524df902f421e3204cec7c9a4bb3f0860e017eddeb939cdfbe6f924e1eebfbbf8ec63c55b62137d9f8845f38f" ) == 0 );
2202 fct_chk( strcmp( (
char *) tag_str,
"4acc40a4882d7733d8f526365f2560" ) == 0 );
2208 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240120_2)
2210 unsigned char key_str[128];
2211 unsigned char src_str[128];
2212 unsigned char dst_str[257];
2213 unsigned char iv_str[128];
2214 unsigned char add_str[128];
2215 unsigned char tag_str[128];
2216 unsigned char output[128];
2217 unsigned char tag_output[16];
2219 unsigned int key_len;
2220 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
2222 memset(key_str, 0x00, 128);
2223 memset(src_str, 0x00, 128);
2224 memset(dst_str, 0x00, 257);
2225 memset(iv_str, 0x00, 128);
2226 memset(add_str, 0x00, 128);
2227 memset(tag_str, 0x00, 128);
2228 memset(output, 0x00, 128);
2229 memset(tag_output, 0x00, 16);
2231 key_len =
unhexify( key_str,
"f5cb564cdd6974219e87f93a030fdcad35313d4adf9d7a97" );
2232 pt_len =
unhexify( src_str,
"210a799d480b4933e16fcbed632579beb6b00aec74c205dbaf64e2cb152c12f9b6969122f296efcfe328f54202446514066594848f42a3031425020b56d065d6eaf2caf507d5f51df493c11514400b889f33d0b996e721eb613569396df0528aa14eaed117dbb7c01d9c3ac39507e42a158413dab80aa687772475105eabcbbf" );
2233 iv_len =
unhexify( iv_str,
"90f91da5239640a70eec60d849d9ae70" );
2236 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2239 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2240 hexify( dst_str, output, pt_len );
2241 hexify( tag_str, tag_output, tag_len );
2243 fct_chk( strcmp( (
char *) dst_str,
"69a3dcf5b94a507a53fa5e62cfca269453623ccd3a537d971130a21bee884cf271b9833dec19862ab0dfe7052e7dc07b20f34aac42bc39bf1d495360c1d701ea53a9bba64b02962b4ef64fb1c90a1a2f3a6f81a6ba781d5f28b786efc365ec6a35c826544aab94b53b96613fddb65660dd336acc34a217960f6c22b9fe60dde1" ) == 0 );
2244 fct_chk( strcmp( (
char *) tag_str,
"b67495a863fffcc773021dc7865304" ) == 0 );
2250 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240112_0)
2252 unsigned char key_str[128];
2253 unsigned char src_str[128];
2254 unsigned char dst_str[257];
2255 unsigned char iv_str[128];
2256 unsigned char add_str[128];
2257 unsigned char tag_str[128];
2258 unsigned char output[128];
2259 unsigned char tag_output[16];
2261 unsigned int key_len;
2262 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
2264 memset(key_str, 0x00, 128);
2265 memset(src_str, 0x00, 128);
2266 memset(dst_str, 0x00, 257);
2267 memset(iv_str, 0x00, 128);
2268 memset(add_str, 0x00, 128);
2269 memset(tag_str, 0x00, 128);
2270 memset(output, 0x00, 128);
2271 memset(tag_output, 0x00, 16);
2273 key_len =
unhexify( key_str,
"dc2c5a020d3ea731362c29d559cb14aa4f8e3f6a554a5fee" );
2274 pt_len =
unhexify( src_str,
"8cf098cb6ad79e0f0eb4ca888da004dfe6431b5982bf1490c5f2d1486c288b5d50ea0a5a63cf9d097a71348632391b4bf962bf464419c2c971e76c03eedd09d069a070c86837e16a2c39a2cb8de3e2d3f274e03998a874fa98de0933b0856e076e7f575f351d7ecd024753781f51ef600405b304e37f326846b84692448d3f2f" );
2275 iv_len =
unhexify( iv_str,
"bd4d45d970085e0b2bfc9477f5cd0244" );
2278 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2281 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2282 hexify( dst_str, output, pt_len );
2283 hexify( tag_str, tag_output, tag_len );
2285 fct_chk( strcmp( (
char *) dst_str,
"d44a4fd303e657670632da8dddb6a117f3e35d8afce245e7e6576711c663f36806b813ba6421ef9788681d9717a36d3eff4ae1789c242f686d8cf4ae81165191220e338bf204744c9fc70560683ec07c212846d257d924d5fc43a3d4297ac54428a32c8bb9d5137e0f4aaa42df8dec37793f3965ca658f22c866e259c80bcc59" ) == 0 );
2286 fct_chk( strcmp( (
char *) tag_str,
"9c1d6c70e1457a8d67f81cb3dc8e" ) == 0 );
2292 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240112_1)
2294 unsigned char key_str[128];
2295 unsigned char src_str[128];
2296 unsigned char dst_str[257];
2297 unsigned char iv_str[128];
2298 unsigned char add_str[128];
2299 unsigned char tag_str[128];
2300 unsigned char output[128];
2301 unsigned char tag_output[16];
2303 unsigned int key_len;
2304 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
2306 memset(key_str, 0x00, 128);
2307 memset(src_str, 0x00, 128);
2308 memset(dst_str, 0x00, 257);
2309 memset(iv_str, 0x00, 128);
2310 memset(add_str, 0x00, 128);
2311 memset(tag_str, 0x00, 128);
2312 memset(output, 0x00, 128);
2313 memset(tag_output, 0x00, 16);
2315 key_len =
unhexify( key_str,
"167cb184ab6ad15be36536f505ea5447fd996b1d9a092ef3" );
2316 pt_len =
unhexify( src_str,
"0b6ec08685b5a9d32346a5fa25d208136433204f3b86182bd1d9578f0634dcbb5b59937fb87df0679334d7f41eb8bec60ae1b87994ed2cfddcb56e95a6fb4e3ab7845b0294e4afa5ad46eb5a431cbd7ad0eb0473c42c06f3f62de03d10ddda449d41137c8010af5c7c0eac7a5fde5a39b5437a2382639fe3388ce029a7d4465c" );
2317 iv_len =
unhexify( iv_str,
"b5cc89a1c10329bb417e6b519091cee4" );
2320 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2323 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2324 hexify( dst_str, output, pt_len );
2325 hexify( tag_str, tag_output, tag_len );
2327 fct_chk( strcmp( (
char *) dst_str,
"7ebe4a9547fb115b39b09880d6f36f8cd402bb798c6d9db036b1ebd8b87a8e9d56fc23b7ae4e8cac3500bf2f73952c37a068f1e472369b62319a8b1bc085a51fbe47e1c321dd1ba2a40692ecd68762a63467d5ecad66a3d720a8a81e02dac0ebe8df867e2f7afa367aa2688ca73565e55cf2b0072fa3681750d61e8e60275aad" ) == 0 );
2328 fct_chk( strcmp( (
char *) tag_str,
"30454dae78f14b9616b57fdc81ba" ) == 0 );
2334 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240112_2)
2336 unsigned char key_str[128];
2337 unsigned char src_str[128];
2338 unsigned char dst_str[257];
2339 unsigned char iv_str[128];
2340 unsigned char add_str[128];
2341 unsigned char tag_str[128];
2342 unsigned char output[128];
2343 unsigned char tag_output[16];
2345 unsigned int key_len;
2346 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
2348 memset(key_str, 0x00, 128);
2349 memset(src_str, 0x00, 128);
2350 memset(dst_str, 0x00, 257);
2351 memset(iv_str, 0x00, 128);
2352 memset(add_str, 0x00, 128);
2353 memset(tag_str, 0x00, 128);
2354 memset(output, 0x00, 128);
2355 memset(tag_output, 0x00, 16);
2357 key_len =
unhexify( key_str,
"9bc7aad4f4bd73acf756311ff1b72b41631344b9b57cf447" );
2358 pt_len =
unhexify( src_str,
"7cdf07e17f667227edc986827d55bb803c6e51f93e72d98a1cbd161b58155a1c14ca54d52254e5f88f2a08614df68cc37f6e9fac88895b53090f69544b18aee4cc03763d35e7dd94ed82d1435316e7e02367b1c43506b3ccd31e248dce81fe62fdaea3a0bfba03477d5c151b0f76f09799048d8b23699d000a9da11281efffc1" );
2359 iv_len =
unhexify( iv_str,
"ffa8e719f29139d12f741f0228e11dfe" );
2362 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2365 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2366 hexify( dst_str, output, pt_len );
2367 hexify( tag_str, tag_output, tag_len );
2369 fct_chk( strcmp( (
char *) dst_str,
"6ab304cb9d1ed675383ff95f7f61ffc2aa73ab1b9a691bb84777b14c7014e986ffb91da6847d3abc0349a7aa09ed1d86f2dabc09e0e25a05800bd5d616c1a665bdb119ef71bae065ed019aed20ad3b13262a902f24ccb4819dc71419994a8b4774a3b9f4f672d31aaec997cfe340d2abdc3958c41373d0315076d22189eb5065" ) == 0 );
2370 fct_chk( strcmp( (
char *) tag_str,
"260cce7d5ed6a8666c9feaad7058" ) == 0 );
2376 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240104_0)
2378 unsigned char key_str[128];
2379 unsigned char src_str[128];
2380 unsigned char dst_str[257];
2381 unsigned char iv_str[128];
2382 unsigned char add_str[128];
2383 unsigned char tag_str[128];
2384 unsigned char output[128];
2385 unsigned char tag_output[16];
2387 unsigned int key_len;
2388 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
2390 memset(key_str, 0x00, 128);
2391 memset(src_str, 0x00, 128);
2392 memset(dst_str, 0x00, 257);
2393 memset(iv_str, 0x00, 128);
2394 memset(add_str, 0x00, 128);
2395 memset(tag_str, 0x00, 128);
2396 memset(output, 0x00, 128);
2397 memset(tag_output, 0x00, 16);
2399 key_len =
unhexify( key_str,
"5bd47bea08eab8694defc2b66e60da1be40fc1e398224f9b" );
2400 pt_len =
unhexify( src_str,
"083ad3fe9273b8063e144a03f88fb179b18327aba37259d7f8532303306ac9d18cfcb746cab3f9385b5bb685fbc4a252dda268044642f5dbe33ea6e1634445311e440c5507fa6beaed343c83aeb0ffc4f1cba21b39f0ff6edfff961aed3ae1796f8bfeebcd3392d92e26dd26a19a7b7c2e5910f22557fad600f8cca8aba988d4" );
2401 iv_len =
unhexify( iv_str,
"e45a52c5e5ecc87b4320864b38683777" );
2404 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2407 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2408 hexify( dst_str, output, pt_len );
2409 hexify( tag_str, tag_output, tag_len );
2411 fct_chk( strcmp( (
char *) dst_str,
"8fa3cd91fb93a346e1f9595088c5503a840c7d7c33aa1be147e484e2aef2a8bda77275348ca59810abef6e179888f6781862990ba8e6d96af70febd2f671a3a8d6dce9be46c1cc6dbfaae35c35a7073205411cc8ab4ddd266b31b64edab4ffea076b29803149850cca41c857b05c10148182f8e7252e67069e7517da5fc08ee1" ) == 0 );
2412 fct_chk( strcmp( (
char *) tag_str,
"9fa3372199a2484f82c330093f" ) == 0 );
2418 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240104_1)
2420 unsigned char key_str[128];
2421 unsigned char src_str[128];
2422 unsigned char dst_str[257];
2423 unsigned char iv_str[128];
2424 unsigned char add_str[128];
2425 unsigned char tag_str[128];
2426 unsigned char output[128];
2427 unsigned char tag_output[16];
2429 unsigned int key_len;
2430 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
2432 memset(key_str, 0x00, 128);
2433 memset(src_str, 0x00, 128);
2434 memset(dst_str, 0x00, 257);
2435 memset(iv_str, 0x00, 128);
2436 memset(add_str, 0x00, 128);
2437 memset(tag_str, 0x00, 128);
2438 memset(output, 0x00, 128);
2439 memset(tag_output, 0x00, 16);
2441 key_len =
unhexify( key_str,
"850a811ca18044dee4487729e619cca71f05a5b164dd1250" );
2442 pt_len =
unhexify( src_str,
"6ee76712d0b1fc00e43c2312743a881ed95a0b06276c5a4d93e3d56732af6b12c7c0d1aa6ffaec562229b6443e576caecffeadd9a65b91efa1bfe48ab1ecc63c381d00fe8dc7f11365f2b28945e844e7c6ca60972f733a96f29cc12e259c7cf29e2c7bbf8f572e158782a46093c5754656d0f2e1e1ea2a0b315b5fa02dadf408" );
2443 iv_len =
unhexify( iv_str,
"6f79e0f62236790c89156c14bd9540a9" );
2446 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2449 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2450 hexify( dst_str, output, pt_len );
2451 hexify( tag_str, tag_output, tag_len );
2453 fct_chk( strcmp( (
char *) dst_str,
"eb1ebd78d7ac88e6f927e09fecf7feb1aa64d7435aae76cc917edd9e0624a96e945df67648c187e397954da7b0888005f7a0d05d09de424c1a0648b56707b90da4021d5a36175500337e7341d1a474fbaa94e56d7ea52155829eb6bb9d95457c138875f0738034924d59681e7c2dfffb7dc0959697468ea2b65a884c897208ab" ) == 0 );
2454 fct_chk( strcmp( (
char *) tag_str,
"91c74a30e5bff5b2585ac7699e" ) == 0 );
2460 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240104_2)
2462 unsigned char key_str[128];
2463 unsigned char src_str[128];
2464 unsigned char dst_str[257];
2465 unsigned char iv_str[128];
2466 unsigned char add_str[128];
2467 unsigned char tag_str[128];
2468 unsigned char output[128];
2469 unsigned char tag_output[16];
2471 unsigned int key_len;
2472 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
2474 memset(key_str, 0x00, 128);
2475 memset(src_str, 0x00, 128);
2476 memset(dst_str, 0x00, 257);
2477 memset(iv_str, 0x00, 128);
2478 memset(add_str, 0x00, 128);
2479 memset(tag_str, 0x00, 128);
2480 memset(output, 0x00, 128);
2481 memset(tag_output, 0x00, 16);
2483 key_len =
unhexify( key_str,
"91469828dafd30de415067236d5f49ea14e813637f1ee0c3" );
2484 pt_len =
unhexify( src_str,
"e3aac00bd05ce3c9b87720db82104364c8ef6ef25d6f3c8bcf5f73f1a26f8619e831bf7bb28c4dcbac7013dc6282d07cc225bd969c582a26accd7cfffe878a3159a5ad3cb6c8b89131aada61e2960cc5431f4ef94394634e4c8b2938409bcd2e7668986c7c5cd2ed5f2c525fa0212996960ab842a43869ed430d3291799a2a1e" );
2485 iv_len =
unhexify( iv_str,
"cb5409aad9d227a3cf0e2c5f1031873e" );
2488 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2491 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2492 hexify( dst_str, output, pt_len );
2493 hexify( tag_str, tag_output, tag_len );
2495 fct_chk( strcmp( (
char *) dst_str,
"4aa82b1c81a911cbe84231ce7afb95188f2177b539fb77de68f3d4801a2bd09f5ee2f7e59b5d9e79be5f7a23f0612ae39d59259dabc8b1bf7dbd4adc0db520bf7e71b988fa96d6b4dfc76afdc22ea31f64c64388dd93b27518b3263b0a19007405fc08645350a69e863a97dd952c8d886b5e0f444a6e77a9ef7c7de54f405a04" ) == 0 );
2496 fct_chk( strcmp( (
char *) tag_str,
"2a6b14c78bcb6e2718d8a28e42" ) == 0 );
2502 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024096_0)
2504 unsigned char key_str[128];
2505 unsigned char src_str[128];
2506 unsigned char dst_str[257];
2507 unsigned char iv_str[128];
2508 unsigned char add_str[128];
2509 unsigned char tag_str[128];
2510 unsigned char output[128];
2511 unsigned char tag_output[16];
2513 unsigned int key_len;
2514 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
2516 memset(key_str, 0x00, 128);
2517 memset(src_str, 0x00, 128);
2518 memset(dst_str, 0x00, 257);
2519 memset(iv_str, 0x00, 128);
2520 memset(add_str, 0x00, 128);
2521 memset(tag_str, 0x00, 128);
2522 memset(output, 0x00, 128);
2523 memset(tag_output, 0x00, 16);
2525 key_len =
unhexify( key_str,
"7b6907853b7d4c4a19468111d96c5de048200b5441b9411d" );
2526 pt_len =
unhexify( src_str,
"3622ba252c067ce7d6cae1d1f5068e457a0cf93be01fdce6dc8652a53135d5ed445388679e3f388ee6a81220b19356b275878fbcc2a6751bee7e2a50adb7c430e4c8cae03e88465f97bcaeb151d4f0007bee6bb9864b33020717adc42d6f8a283a20f6b62ec79fb8060e3e5ecc1e91a2eaef57e9dabd3b3634236f12d4bff475" );
2527 iv_len =
unhexify( iv_str,
"a66ee64c15094be079084c89cb1739c1" );
2530 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2533 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2534 hexify( dst_str, output, pt_len );
2535 hexify( tag_str, tag_output, tag_len );
2537 fct_chk( strcmp( (
char *) dst_str,
"2b8c1490e13881ab3bac875cbdb86baabe7fa30445bcb39315d057171e80d02aa8471355e80ba891b26d80b375508ba2756162cc688578be313a50096d7cd6253a8094970898fb99cd2967e78a57d12b8b3e3c10502634bead5bfe2c9dad332fcbda0c1bca16fd5cac78ebcbc7f15aad8b28abf3ed74a245a8e7a85cfaa712ab" ) == 0 );
2538 fct_chk( strcmp( (
char *) tag_str,
"e52af33988855d1a31158c78" ) == 0 );
2544 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024096_1)
2546 unsigned char key_str[128];
2547 unsigned char src_str[128];
2548 unsigned char dst_str[257];
2549 unsigned char iv_str[128];
2550 unsigned char add_str[128];
2551 unsigned char tag_str[128];
2552 unsigned char output[128];
2553 unsigned char tag_output[16];
2555 unsigned int key_len;
2556 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
2558 memset(key_str, 0x00, 128);
2559 memset(src_str, 0x00, 128);
2560 memset(dst_str, 0x00, 257);
2561 memset(iv_str, 0x00, 128);
2562 memset(add_str, 0x00, 128);
2563 memset(tag_str, 0x00, 128);
2564 memset(output, 0x00, 128);
2565 memset(tag_output, 0x00, 16);
2567 key_len =
unhexify( key_str,
"fe63e247e8de838a197a9e937e34c0f5a0b282533d445015" );
2568 pt_len =
unhexify( src_str,
"17c5d748b8596901e97df660ca94fc970f7ebb769aff88f60acc425f50ebfb6744c6d8778c226c5d63653d9388d3fa0d4d630f94d668f3478c89e2708501edb12307a9b2189576cbc79388d291354cb9a5d1eace4ca1d9f734fc78e55ecbf86338a31ebe583cace752e8bafd0a820384136963eb2d2f4eea7b2f69597737a1ca" );
2569 iv_len =
unhexify( iv_str,
"8e018305675c287f802f28fe56ae5c4b" );
2572 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2575 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2576 hexify( dst_str, output, pt_len );
2577 hexify( tag_str, tag_output, tag_len );
2579 fct_chk( strcmp( (
char *) dst_str,
"c3d34e2cf1c3ad629490d70a0fec1a63c88d025ffed46ff8f5d8c0879c166ad716b702682cd0a437bdaa03a9b2e69a32fb7259b0fa930ca7a344aea37886cc9850e44de0aa049b8bc300caee82e26b2a1e5ab45c4c7cc6a15f5f595199999a0cacaa59da1b2be2a204fe13005b92ce722a000228545ae8a61b2c667a386f431b" ) == 0 );
2580 fct_chk( strcmp( (
char *) tag_str,
"d7a6a917a286d8edf1289183" ) == 0 );
2586 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024096_2)
2588 unsigned char key_str[128];
2589 unsigned char src_str[128];
2590 unsigned char dst_str[257];
2591 unsigned char iv_str[128];
2592 unsigned char add_str[128];
2593 unsigned char tag_str[128];
2594 unsigned char output[128];
2595 unsigned char tag_output[16];
2597 unsigned int key_len;
2598 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
2600 memset(key_str, 0x00, 128);
2601 memset(src_str, 0x00, 128);
2602 memset(dst_str, 0x00, 257);
2603 memset(iv_str, 0x00, 128);
2604 memset(add_str, 0x00, 128);
2605 memset(tag_str, 0x00, 128);
2606 memset(output, 0x00, 128);
2607 memset(tag_output, 0x00, 16);
2609 key_len =
unhexify( key_str,
"c739dae83a5e64bd98ffaf68b5bcbcd0155d8109e9ff2518" );
2610 pt_len =
unhexify( src_str,
"56dafc06b354e84ce3ce31b7f88193124ca7e7049272beb93fbedcb3ede8e017bdb9ee5d314ec5168443fe01258d9abc4c4c27580f6299b20082b4ca87eb2589bedc459f132dfaefafffdd13f82e153a2165dcab9a9b6c10f1d0d13b127312a6f5f3d65a73b8fd057f1d88038c5137254111f7aedf21af07a35e34cf4d2166d9" );
2611 iv_len =
unhexify( iv_str,
"d80ac4dacb0f1441839e2068013dde3f" );
2614 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2617 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2618 hexify( dst_str, output, pt_len );
2619 hexify( tag_str, tag_output, tag_len );
2621 fct_chk( strcmp( (
char *) dst_str,
"9ae5107f4394c9050f8ca8ae6d1eb66099ccd0166f38e45c1cbc17b30e218fcf6015ac92dd7ab48bbb095a0523904c72710a86e50518d6aade269c82bc5ecdfa729802441e09aeb939abb43f5960542ad87961e2141f967d12f7190b07de99811b264dc62cb8f067872f84d21b661558ceeae4922900ffd76084e450650de79b" ) == 0 );
2622 fct_chk( strcmp( (
char *) tag_str,
"6a180ed4f3a9d5739e559d00" ) == 0 );
2628 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024064_0)
2630 unsigned char key_str[128];
2631 unsigned char src_str[128];
2632 unsigned char dst_str[257];
2633 unsigned char iv_str[128];
2634 unsigned char add_str[128];
2635 unsigned char tag_str[128];
2636 unsigned char output[128];
2637 unsigned char tag_output[16];
2639 unsigned int key_len;
2640 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
2642 memset(key_str, 0x00, 128);
2643 memset(src_str, 0x00, 128);
2644 memset(dst_str, 0x00, 257);
2645 memset(iv_str, 0x00, 128);
2646 memset(add_str, 0x00, 128);
2647 memset(tag_str, 0x00, 128);
2648 memset(output, 0x00, 128);
2649 memset(tag_output, 0x00, 16);
2651 key_len =
unhexify( key_str,
"4c23ed64375d42c3a402fdadd143336d2f6babf4d4ebc176" );
2652 pt_len =
unhexify( src_str,
"5541a219108ce3ce593cca8c6aa6504c84983a98851bf8610d71f79a38bdc21d5219266ad56e10ccba4898ea969815ed0d6df75312d657631e1e22e46f727a499696399a0955d94942a641383cadebc5328da2ac75bf0db709000ba3277581e1318cb5825ba112df3ea9c453ad04d03eb29d1715412cc03dbce6c8e380b36167" );
2653 iv_len =
unhexify( iv_str,
"daa6f68b3ce298310bcc2a7e0b2f9fec" );
2656 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2659 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2660 hexify( dst_str, output, pt_len );
2661 hexify( tag_str, tag_output, tag_len );
2663 fct_chk( strcmp( (
char *) dst_str,
"2a4e04101d4c822eba024dcea27d67eca7ba7f0ea6d5290ced9376049ae085ccae3ecb624c03eb5b2808982c88f0a5c4363a7271610b674317bbdf1538776f1fa2454c249a1b0d6c3e64bd4a356ac2aa2fd601a83d4fa76291f3ef1a9bfc858cc0aea10cff34ab9eb55411efec2a82a90af3fc80f3d8e2b56181630230890acc" ) == 0 );
2664 fct_chk( strcmp( (
char *) tag_str,
"d408209fabf82a35" ) == 0 );
2670 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024064_1)
2672 unsigned char key_str[128];
2673 unsigned char src_str[128];
2674 unsigned char dst_str[257];
2675 unsigned char iv_str[128];
2676 unsigned char add_str[128];
2677 unsigned char tag_str[128];
2678 unsigned char output[128];
2679 unsigned char tag_output[16];
2681 unsigned int key_len;
2682 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
2684 memset(key_str, 0x00, 128);
2685 memset(src_str, 0x00, 128);
2686 memset(dst_str, 0x00, 257);
2687 memset(iv_str, 0x00, 128);
2688 memset(add_str, 0x00, 128);
2689 memset(tag_str, 0x00, 128);
2690 memset(output, 0x00, 128);
2691 memset(tag_output, 0x00, 16);
2693 key_len =
unhexify( key_str,
"695dfde34f0af192faa50244ab95a6059e2e637e237eb60d" );
2694 pt_len =
unhexify( src_str,
"33ca2c61a04467ad2bbd2ba8144573f0c2504a4e9945fbae250385406ed1757adb70534bd6ed854f227d93eee57c73a314f5955208e1ba5af8cc1e8b5bb07cb63030e3ae5f0ad287536f49b576418bb1d2dec40562f6bdda59c373d6668aaa9b791285716325fccbda2180e33955c8be19d05e389820ed69258c9b93e3c82e96" );
2695 iv_len =
unhexify( iv_str,
"a6a57792b5a738286fb575b84eea2aaa" );
2698 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2701 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2702 hexify( dst_str, output, pt_len );
2703 hexify( tag_str, tag_output, tag_len );
2705 fct_chk( strcmp( (
char *) dst_str,
"b2ce449fc806dfb93cd7c97c018c2ba7d702216ae29a530a8f22d07279c7570c6288fc01fa9915b42a6be7a7d9569f71b8fc2411dd9747b5c9c7b5c0a592bcd7e8f4530ebaee37e9c7d48d7a56be7e2df1d91cecfd11bec09bbca7ce7106942989594e791e00e23557c843acf5164f3863d90f606ad8328696f4ca51fd29346c" ) == 0 );
2706 fct_chk( strcmp( (
char *) tag_str,
"050bd720de1b1350" ) == 0 );
2712 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024064_2)
2714 unsigned char key_str[128];
2715 unsigned char src_str[128];
2716 unsigned char dst_str[257];
2717 unsigned char iv_str[128];
2718 unsigned char add_str[128];
2719 unsigned char tag_str[128];
2720 unsigned char output[128];
2721 unsigned char tag_output[16];
2723 unsigned int key_len;
2724 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
2726 memset(key_str, 0x00, 128);
2727 memset(src_str, 0x00, 128);
2728 memset(dst_str, 0x00, 257);
2729 memset(iv_str, 0x00, 128);
2730 memset(add_str, 0x00, 128);
2731 memset(tag_str, 0x00, 128);
2732 memset(output, 0x00, 128);
2733 memset(tag_output, 0x00, 16);
2735 key_len =
unhexify( key_str,
"1a89a516204837bc780ad9b26717e51ccf42591bf58c75c1" );
2736 pt_len =
unhexify( src_str,
"c72a1b8707522442b992cb21a7526dfd341e27a11e761f594abbfacc2ac26ea48523d0113e38adbfc06d4af8809cb606454467fd253ca442241e8921b906d6c007dd09e139e568194666d5da0b33c7ca67876856cf504e8dfab4a5b0a77cfb1883d532ef7c70b35b0838882f144991c25a2331863eaaaa2059401f61378750e5" );
2737 iv_len =
unhexify( iv_str,
"a9b1ef7744075cd6cc024f8c7b3b0b6e" );
2740 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2743 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2744 hexify( dst_str, output, pt_len );
2745 hexify( tag_str, tag_output, tag_len );
2747 fct_chk( strcmp( (
char *) dst_str,
"0ec50150590bb419df0d6c410edfc2f8805a602ff247e3b50881ad3efb598ed053d8dd1deff86460db0081c0eb3effe9ea94564f74000166f08db24da6cfcba91a9ee1e98b8671db99edbe8fde11d0e898bb130e1b27358fc42be03fb3348af7de9376af495c0ec71aed56d680632195539b2d1d5bf804328d0928a44c9731ce" ) == 0 );
2748 fct_chk( strcmp( (
char *) tag_str,
"6c9f55e67533828c" ) == 0 );
2754 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024032_0)
2756 unsigned char key_str[128];
2757 unsigned char src_str[128];
2758 unsigned char dst_str[257];
2759 unsigned char iv_str[128];
2760 unsigned char add_str[128];
2761 unsigned char tag_str[128];
2762 unsigned char output[128];
2763 unsigned char tag_output[16];
2765 unsigned int key_len;
2766 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
2768 memset(key_str, 0x00, 128);
2769 memset(src_str, 0x00, 128);
2770 memset(dst_str, 0x00, 257);
2771 memset(iv_str, 0x00, 128);
2772 memset(add_str, 0x00, 128);
2773 memset(tag_str, 0x00, 128);
2774 memset(output, 0x00, 128);
2775 memset(tag_output, 0x00, 16);
2777 key_len =
unhexify( key_str,
"4107d51f7d6e24aa605959d5d46b4c7e1743b7d5e3ae07b6" );
2778 pt_len =
unhexify( src_str,
"e5074ffbaf5e771e12f9e7cc8e7701b970aa7897928681383ea0f91bce8200ec6782dc9618e065e142c4ef2f7019791e74edfe2040b08bdf328d7d9658e7473beab65359d35ed168a2bb39f3c3f59890353405a82f48e16d388eb8f2145ed9bff016e725791cabca913813e7485f387223711c1ad098ffa0f72f74a048ec17ea" );
2779 iv_len =
unhexify( iv_str,
"94a88f6872995b26da39efb5e3f93334" );
2782 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2785 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2786 hexify( dst_str, output, pt_len );
2787 hexify( tag_str, tag_output, tag_len );
2789 fct_chk( strcmp( (
char *) dst_str,
"bf32a717c945e1e2fe91fd38f3c7084210a7966cb83235d28f701ebcae6b2042226e932e4601eb3ed4728ca32bf7065fcdc98017dabcac23f0f80c65e92518db6c78bf4cd91f817b69f3c3a8891786d433f6c3c1a025c1d37bd1c587ba6004085571245591d615906f5c18994f09a03f3eef180d7af34f00ecfe153d5ab73933" ) == 0 );
2790 fct_chk( strcmp( (
char *) tag_str,
"8d43426d" ) == 0 );
2796 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024032_1)
2798 unsigned char key_str[128];
2799 unsigned char src_str[128];
2800 unsigned char dst_str[257];
2801 unsigned char iv_str[128];
2802 unsigned char add_str[128];
2803 unsigned char tag_str[128];
2804 unsigned char output[128];
2805 unsigned char tag_output[16];
2807 unsigned int key_len;
2808 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
2810 memset(key_str, 0x00, 128);
2811 memset(src_str, 0x00, 128);
2812 memset(dst_str, 0x00, 257);
2813 memset(iv_str, 0x00, 128);
2814 memset(add_str, 0x00, 128);
2815 memset(tag_str, 0x00, 128);
2816 memset(output, 0x00, 128);
2817 memset(tag_output, 0x00, 16);
2819 key_len =
unhexify( key_str,
"0fa6270a44c8d14937cc3ff4cc2d2c997254a42ca8a09eaf" );
2820 pt_len =
unhexify( src_str,
"2252d1c4706cc46ad3e4f8c49a92cdc7d1af24deaf7b08ab7304ef804cfe261acc3a202bec0d8df42cc36a5a3ace9ed7a9465cdec3513d31de9ae7821f9444226439c8f98a9a7d99b36b91b1b00eac71080d7eb550209af5fb7b3f28d09f5060070da73a40456d60c0470773af95d16c0b33d0b5327d44188619b950590ea862" );
2821 iv_len =
unhexify( iv_str,
"b5f3fde841156bc408ec3de9ef3438fc" );
2824 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2827 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2828 hexify( dst_str, output, pt_len );
2829 hexify( tag_str, tag_output, tag_len );
2831 fct_chk( strcmp( (
char *) dst_str,
"4fcfc56fa722af32e804dee0f4b67f5fea542b381bc47c41451844c82e5427f6cd90c37e088dbaff722d8700a11d5dfb4282e565f32e055324e5069931c86b62feb2cdf82ca1f62aee02a70e4e274b2b957650a5cc772be86c1b1cfc41b01d20d9be8b05b9e3ff65413520789ca0f198fe00d83483a1d85aeb13094c9a827e7d" ) == 0 );
2832 fct_chk( strcmp( (
char *) tag_str,
"1ae8f9c3" ) == 0 );
2838 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024032_2)
2840 unsigned char key_str[128];
2841 unsigned char src_str[128];
2842 unsigned char dst_str[257];
2843 unsigned char iv_str[128];
2844 unsigned char add_str[128];
2845 unsigned char tag_str[128];
2846 unsigned char output[128];
2847 unsigned char tag_output[16];
2849 unsigned int key_len;
2850 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
2852 memset(key_str, 0x00, 128);
2853 memset(src_str, 0x00, 128);
2854 memset(dst_str, 0x00, 257);
2855 memset(iv_str, 0x00, 128);
2856 memset(add_str, 0x00, 128);
2857 memset(tag_str, 0x00, 128);
2858 memset(output, 0x00, 128);
2859 memset(tag_output, 0x00, 16);
2861 key_len =
unhexify( key_str,
"104c18bd2a0641fd46c2d7590d60d6d8eea74a2758ed0f4d" );
2862 pt_len =
unhexify( src_str,
"4434cf5d12d07614227cfc12716a8adfc651ffe5c6476cf4489afaa698d9d19947016bdbcb5b625773252745dfeaf9b10021a5b38f742ea8a0fc5f926c80cef6568ab8639cddcf8fee9678d45ad4937d6e6b054b65512f929e897ed5f965cd14cad939732c53a847bb2758d818d5d131977649db5b59a0c5ebac37db961f9d69" );
2863 iv_len =
unhexify( iv_str,
"2902faec60f754f0fbb1981aeba277ff" );
2866 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2869 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2870 hexify( dst_str, output, pt_len );
2871 hexify( tag_str, tag_output, tag_len );
2873 fct_chk( strcmp( (
char *) dst_str,
"1789524845a1e36322c44dd1e938ee5d0fe6df244b751f3023d5d64d40a72598d352d9d2faba68be4e035c258b68782273925a94527fcdb977a41c1e0a96f53119b5909b23b0327c820e8f6da049a5d144a98019c4953aafd481190117573869109c265012a42f76bb4c3353f6613ccbc40a4af2f9e148bf0a0324bb43337fb7" ) == 0 );
2874 fct_chk( strcmp( (
char *) tag_str,
"d36d2d06" ) == 0 );
2880 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024128_0)
2882 unsigned char key_str[128];
2883 unsigned char src_str[128];
2884 unsigned char dst_str[257];
2885 unsigned char iv_str[128];
2886 unsigned char add_str[128];
2887 unsigned char tag_str[128];
2888 unsigned char output[128];
2889 unsigned char tag_output[16];
2891 unsigned int key_len;
2892 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
2894 memset(key_str, 0x00, 128);
2895 memset(src_str, 0x00, 128);
2896 memset(dst_str, 0x00, 257);
2897 memset(iv_str, 0x00, 128);
2898 memset(add_str, 0x00, 128);
2899 memset(tag_str, 0x00, 128);
2900 memset(output, 0x00, 128);
2901 memset(tag_output, 0x00, 16);
2903 key_len =
unhexify( key_str,
"263451f187b6dcab9d8dc4364217a483dd80c1d75f24fcea" );
2904 pt_len =
unhexify( src_str,
"5e236c282eb4646fbd16a95eff2b27873f625a7e919237d75989a8a112ea80ce8db0b4aeaf5da59c3b22649dabb584284ab9673ba7edef59043eb8e99763643941a4788e7cf11bad63e13c9ef08644044b76beef68928dac22975481da4afc723b3ab3b498189542cbdffbc3f467d190cd02e9b36b6981122aa80cfa3aa3561f" );
2905 iv_len =
unhexify( iv_str,
"6c4552b3a03152aa464e88fd5b14356d" );
2906 add_len =
unhexify( add_str,
"435453a304fcd3c4bd6ab90d6ed8c54e6d21f75b9e56c9d48030499b04f6754cff628c4c9216f7d8a0abed5b8b7ca128c099a7deab74ecfe2c4a494b30d74833f837d254aa00d75aa963ce9c041f1916eb63d673a4af3f88817c65d4c86f5a3c28a67de2aaf75f08d1b628af333e518a7e99d980571db608407d3f447563f2df" );
2908 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2911 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2912 hexify( dst_str, output, pt_len );
2913 hexify( tag_str, tag_output, tag_len );
2915 fct_chk( strcmp( (
char *) dst_str,
"12dea5ea9b54957c689c7c9c6a711e2880645109a4057fafe3b32727a60ee1e24f8450310d6b8402c26b307bb0bf3cb7c6407270d95590efb938e6d77359666b11a7a3833a7122697e959645d8e9d835e0bd39bdc30397115b4c348ea825c850c1e54a60a2522a6321e4b99fa2ad9215205628c595b07c6ffed939c779d23ab2" ) == 0 );
2916 fct_chk( strcmp( (
char *) tag_str,
"585677e0f37ae13d886c38202c3860b7" ) == 0 );
2922 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024128_1)
2924 unsigned char key_str[128];
2925 unsigned char src_str[128];
2926 unsigned char dst_str[257];
2927 unsigned char iv_str[128];
2928 unsigned char add_str[128];
2929 unsigned char tag_str[128];
2930 unsigned char output[128];
2931 unsigned char tag_output[16];
2933 unsigned int key_len;
2934 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
2936 memset(key_str, 0x00, 128);
2937 memset(src_str, 0x00, 128);
2938 memset(dst_str, 0x00, 257);
2939 memset(iv_str, 0x00, 128);
2940 memset(add_str, 0x00, 128);
2941 memset(tag_str, 0x00, 128);
2942 memset(output, 0x00, 128);
2943 memset(tag_output, 0x00, 16);
2945 key_len =
unhexify( key_str,
"dbcf735d7c8701f537090d3dcf914c741ed783c24bd8265b" );
2946 pt_len =
unhexify( src_str,
"18eb70dff73341298ce33ff4049fa631f2c72c158fcdea55d1231c46c95ba4013012b713bc95ba25a2114d0380c297acd05c323696db466874083e18bf544dabffbc70be4649cfe7e8bf449aeb9789d6fa412a1adf57ce732702ab962561f9e1fa850733c97b8a4158786e8ccf32af0fc2b04907124e731ffaf3fa7eacaa64b2" );
2947 iv_len =
unhexify( iv_str,
"09ecced8460af635e46bc82450352be5" );
2948 add_len =
unhexify( add_str,
"cc5b8f82fce3797009fbd38dfad7055a5e2ac241363f6773191d0e534e2b4592a6805c191daad377245c414df8edc4d3d9ecd191a50cf9747dde65187484802e15797d7c7e1db49ea4e423e94d9ad3b99aea6bf2928ce6addfc00848550b4d2e466e85a282cc022c7c4469d2cb16151e81bf63df378e0c676036197d9470f42a" );
2950 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2953 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2954 hexify( dst_str, output, pt_len );
2955 hexify( tag_str, tag_output, tag_len );
2957 fct_chk( strcmp( (
char *) dst_str,
"8298f796428faffa6085e458f149675d6c6e2cdfbc7994ee6f19af40fe8926c28904fd5ac0b9bdbd2de3f1614500a3eab1f980f82ac23cae80f3e6ba71539d1723e9f3412df345536f7517d847aae79a83ee9ad5fe38d60c6618d870cb1f203a3e1847d14d8de5295209c0e05aa196fec0eab8389e4eb66bdf3dd49d0800ffad" ) == 0 );
2958 fct_chk( strcmp( (
char *) tag_str,
"e53ca266dd93def5bee5daf70c953dd2" ) == 0 );
2964 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024128_2)
2966 unsigned char key_str[128];
2967 unsigned char src_str[128];
2968 unsigned char dst_str[257];
2969 unsigned char iv_str[128];
2970 unsigned char add_str[128];
2971 unsigned char tag_str[128];
2972 unsigned char output[128];
2973 unsigned char tag_output[16];
2975 unsigned int key_len;
2976 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
2978 memset(key_str, 0x00, 128);
2979 memset(src_str, 0x00, 128);
2980 memset(dst_str, 0x00, 257);
2981 memset(iv_str, 0x00, 128);
2982 memset(add_str, 0x00, 128);
2983 memset(tag_str, 0x00, 128);
2984 memset(output, 0x00, 128);
2985 memset(tag_output, 0x00, 16);
2987 key_len =
unhexify( key_str,
"5f8d84908a8b7f5e118482bb867102a244bcbf48b7229115" );
2988 pt_len =
unhexify( src_str,
"9cd2a4e2acbeea6a73b5bffc1191d8045f63f3a14aa762eb776f35518f72bde4f9c8decd61a9319e3dfca82e682910a43de2719451e1a32839b29b27c3eb1c8f6118512d6a19cf189e2d04cf4e22459397936d60f7551244387294a7994320546f070e54f166cd7c243d13f3017b786f7df6a7fa4ece05a2fe49fc39e2225b92" );
2989 iv_len =
unhexify( iv_str,
"5ba986f5115d40c2cfe404007a1e2403" );
2990 add_len =
unhexify( add_str,
"06f98d4807efecfc863309f3bc64b0f04e4c16c32675ff97a3295d5657d4443f6c8b0a394d3f942705bdc19c22b8ff58e9b7c209b528b745fa0424d5898ef0e42e0909aa5ad0b01f8549e3674102ddaf4784f0ff8908cf9f9a25e7e4dd9af4da7bd13ae0cd87b6aaa6b132dc518f4a95af403e612edce63e1424dacf8e349372" );
2992 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
2995 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
2996 hexify( dst_str, output, pt_len );
2997 hexify( tag_str, tag_output, tag_len );
2999 fct_chk( strcmp( (
char *) dst_str,
"2f168fd1c819b159739a7cc783ecdb0ef9639b7965918e343e2a55f196daf584f7f14bb6e42d37b504bfc2cc08c218c5b841b2d2abce05bbf15315f471e56f04f7d54d6f1dc7b7a68b8bc7026a1441105015bcee2c39d83be35d25f0d514bd1ffe75411b32867ebf2d532a766f9bfce9e55ea3e0240d2a3713ddc2ba790bad21" ) == 0 );
3000 fct_chk( strcmp( (
char *) tag_str,
"7f121ea36b36449e1db85e8a91ab16f3" ) == 0 );
3006 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024120_0)
3008 unsigned char key_str[128];
3009 unsigned char src_str[128];
3010 unsigned char dst_str[257];
3011 unsigned char iv_str[128];
3012 unsigned char add_str[128];
3013 unsigned char tag_str[128];
3014 unsigned char output[128];
3015 unsigned char tag_output[16];
3017 unsigned int key_len;
3018 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
3020 memset(key_str, 0x00, 128);
3021 memset(src_str, 0x00, 128);
3022 memset(dst_str, 0x00, 257);
3023 memset(iv_str, 0x00, 128);
3024 memset(add_str, 0x00, 128);
3025 memset(tag_str, 0x00, 128);
3026 memset(output, 0x00, 128);
3027 memset(tag_output, 0x00, 16);
3029 key_len =
unhexify( key_str,
"f6c3037a59e98a9a81094d65ca52752ad92f93bcfa671821" );
3030 pt_len =
unhexify( src_str,
"26647f8f4092f80fc19f81f029c354c582b582516e8e27e97d50866e8ff755f50a8ae6422f4e996f0cf50826a68c007a5b16fd59002d368ed3285bbd04f8f9a5a524243cb8d5b3ffa184ba7384771bfc508f2e93abd2a1e7170d694d35cc0ff7f247e84ca8889efc820c3f6d9cd40afd56c5799972d7556c91cde50ac808652c" );
3031 iv_len =
unhexify( iv_str,
"43b4f15bbe525913a31a9adf23d1971e" );
3032 add_len =
unhexify( add_str,
"60826c97f0a99b88e7aeab774a3f2278f9d35b6c1a5fce49d9389a421543c99f68797224535dca4d7040313340da73982220040a063b045843a14f5d38763f95bdd26ef818f6e5171c8d5b47f183589afd6acd36e59b9946c1edf038ae285f500171e9850603cda36043c29860e75bfe03c21e0ef11a9aecc5d5c51bb2201d29" );
3034 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3037 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3038 hexify( dst_str, output, pt_len );
3039 hexify( tag_str, tag_output, tag_len );
3041 fct_chk( strcmp( (
char *) dst_str,
"e58df99cce5b2548cf39684df6a26b8f9b7969168ff21c410bc40b763842ab3b30cbb3c82e0b420c8100da61c9037a9f112db9563a3d069cdf2997e7f4dbb0b5d79b56f0e985cd8cb70355366f7afd211bd9909c48b142c6556326062d27f7f82d76b83c433f00f1716ebc95038cb57c550b5810b77788c8bf1e686a8a14b610" ) == 0 );
3042 fct_chk( strcmp( (
char *) tag_str,
"ba6aa6d68a560642c266bf4469eaac" ) == 0 );
3048 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024120_1)
3050 unsigned char key_str[128];
3051 unsigned char src_str[128];
3052 unsigned char dst_str[257];
3053 unsigned char iv_str[128];
3054 unsigned char add_str[128];
3055 unsigned char tag_str[128];
3056 unsigned char output[128];
3057 unsigned char tag_output[16];
3059 unsigned int key_len;
3060 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
3062 memset(key_str, 0x00, 128);
3063 memset(src_str, 0x00, 128);
3064 memset(dst_str, 0x00, 257);
3065 memset(iv_str, 0x00, 128);
3066 memset(add_str, 0x00, 128);
3067 memset(tag_str, 0x00, 128);
3068 memset(output, 0x00, 128);
3069 memset(tag_output, 0x00, 16);
3071 key_len =
unhexify( key_str,
"8fd9b08232a1d3fbe319d0897c74098f75b3e801d10e183a" );
3072 pt_len =
unhexify( src_str,
"a677a13ae26b7a05cecfd153aaaea02ccb50db601221a3df545164bb5fe638f6ed276d4bd172b9e740a82a690aec4f18f4f3a0afb80c9a32188958e1cb3651064f55ca1211647903f63013e46b46c7f4f95589012eb4ccd2451d8e8dacc3cd066281f1f0c71f69f1c49f3f94136a522fff0d02427e4bccab056e615ff6fde1d6" );
3073 iv_len =
unhexify( iv_str,
"304c759800b8e275dfcfd3e5e3c61a7e" );
3074 add_len =
unhexify( add_str,
"5d2dffb00a25788548ff1b2c94745e5bfcc05eeb11e63501007335d4bd06bfb3223d4682e7e83eca0e163d1a8f2a76096ab2839ad14b45eb59ea9b29feb76f40b0d8dac55247c65e5dbe6bb2d5155ddcf2b2f924c48e1c16c990b69ac48ef2350873c1ed524ce1b8ef6c92a11c8e461303f7c32b5d65b57154197e45f1c6b792" );
3076 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3079 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3080 hexify( dst_str, output, pt_len );
3081 hexify( tag_str, tag_output, tag_len );
3083 fct_chk( strcmp( (
char *) dst_str,
"0779e5050dd17837d40fe3427322e717f074312f160c1951e5560797c13e4fbe47f320dc8053a39d2def4d3cc20e215978647d917ddf93fdf9eee5e54a974060dbac2a478afe5f5acbf65af4dccbd3942d130dddfd90cfc969da0c7f4b4050e34ce2e049c3bb004782abf4744c9a3ca2713ebfc5dfa16d011bc0b33d0368c108" ) == 0 );
3084 fct_chk( strcmp( (
char *) tag_str,
"54c8a1dddfaa1cafbcc1883587b4cd" ) == 0 );
3090 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024120_2)
3092 unsigned char key_str[128];
3093 unsigned char src_str[128];
3094 unsigned char dst_str[257];
3095 unsigned char iv_str[128];
3096 unsigned char add_str[128];
3097 unsigned char tag_str[128];
3098 unsigned char output[128];
3099 unsigned char tag_output[16];
3101 unsigned int key_len;
3102 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
3104 memset(key_str, 0x00, 128);
3105 memset(src_str, 0x00, 128);
3106 memset(dst_str, 0x00, 257);
3107 memset(iv_str, 0x00, 128);
3108 memset(add_str, 0x00, 128);
3109 memset(tag_str, 0x00, 128);
3110 memset(output, 0x00, 128);
3111 memset(tag_output, 0x00, 16);
3113 key_len =
unhexify( key_str,
"19d38467c1024611433a0b2780980538d88f3e8907a86e42" );
3114 pt_len =
unhexify( src_str,
"2623cd0eb46a7366877149ce0204d7dc08a5e64a1adb3b6759178c4eab26ca1806fc25fc0fc99dfc77d1811e61ac1e04ee82eb69ef7527962df1707734e4aca970b8a499eb70c2b0386942906945abcd9234b92e7bec33009e70786c39bd241da3905d961473e50367cb7726df8da2662fb32101d13b75032838f01ad7946670" );
3115 iv_len =
unhexify( iv_str,
"8d56a9e4bed67a7eb0f7b8c5e6bbf04e" );
3116 add_len =
unhexify( add_str,
"1c7d2744a56f5185b9cdf14eb9776ffd315214540daffc69c217dd64c7d0fb4a9f7b1ccc4c1e325fc046eec4feb8df35d32f492a28d35858ad1e9bfaf95211f111473c2ff799a124b308fba996b08f185103607605922bad319c6b7fd211f97c861565bea34948bfd751e4ce2591ae777ab1df8dc9e820cdad13066ed74303c6" );
3118 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3121 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3122 hexify( dst_str, output, pt_len );
3123 hexify( tag_str, tag_output, tag_len );
3125 fct_chk( strcmp( (
char *) dst_str,
"edfdfa35b41c5642e5b4dd1769b635811a48ecf21915cbef3c9e2f8230953f2ed4fda8903ec7634f10d55aa58c975a6c6133a173c2aeb83d6d7fc6534ea1781dfc62408e7a17d255a983bd1c33d2f423c364893db8128a599cd037b2db318f86f1fbd895a64a9fb209490b7e9a30db8cdf42e348cfcfa7984e15c17db810ec19" ) == 0 );
3126 fct_chk( strcmp( (
char *) tag_str,
"17dff78f61d21de4c0744e57174f70" ) == 0 );
3132 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024112_0)
3134 unsigned char key_str[128];
3135 unsigned char src_str[128];
3136 unsigned char dst_str[257];
3137 unsigned char iv_str[128];
3138 unsigned char add_str[128];
3139 unsigned char tag_str[128];
3140 unsigned char output[128];
3141 unsigned char tag_output[16];
3143 unsigned int key_len;
3144 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
3146 memset(key_str, 0x00, 128);
3147 memset(src_str, 0x00, 128);
3148 memset(dst_str, 0x00, 257);
3149 memset(iv_str, 0x00, 128);
3150 memset(add_str, 0x00, 128);
3151 memset(tag_str, 0x00, 128);
3152 memset(output, 0x00, 128);
3153 memset(tag_output, 0x00, 16);
3155 key_len =
unhexify( key_str,
"d69bdc9d35589e33ea9c2b956780cd9618e0df79d1083e69" );
3156 pt_len =
unhexify( src_str,
"d8a75de22fd3e2d50127c6fdeabc09fab1178875998319e1ea83c9745a1d5833c6ba9df08177c349dfa412e13e1927bbd4cdfb54a21c86c149be1feb4d9de99ffd590850875a3d9c8d9306971a9802ad4ca48f73d0517322525ac8463e3d59ae9895c9b363b6f0728d7585de78cbb49757bd1919ba2f2d6ba042d0781e7a79d7" );
3157 iv_len =
unhexify( iv_str,
"abd4b94362501b8f307fca076fccc60d" );
3158 add_len =
unhexify( add_str,
"1ad9aa99a4c8158ec08d21ebfb62604a043fc0c248fe08daa15a89f4a7855916af8aeb681ac6600c0268ade231f918fe508f48c9cfa998effc350fa117e2772f04839f8fa1a53bca00693ecd28db27c6507750404bd89af07451d66fb7dfa47065e9d3fe24a910eb27911591e4f4e4746b35359afada4356676b3c7331c610ab" );
3160 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3163 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3164 hexify( dst_str, output, pt_len );
3165 hexify( tag_str, tag_output, tag_len );
3167 fct_chk( strcmp( (
char *) dst_str,
"52e88b54b410dbfb4d88092df52688ba9502b906752b4802aca5428437d795de0d3539945bebdf2bab070df4a7e630469b92fe2dde0998d44094cae7f21f84ea7806637fa5c73b138e87d04005ef1206ddf30a21f46c0aa718665e809ffc0b42b5250143604b20225ec460defaf554a8bfb5f69ef4244e02e9563c374a44f0a9" ) == 0 );
3168 fct_chk( strcmp( (
char *) tag_str,
"1024f8e9997f5fa4684930d17431" ) == 0 );
3174 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024112_1)
3176 unsigned char key_str[128];
3177 unsigned char src_str[128];
3178 unsigned char dst_str[257];
3179 unsigned char iv_str[128];
3180 unsigned char add_str[128];
3181 unsigned char tag_str[128];
3182 unsigned char output[128];
3183 unsigned char tag_output[16];
3185 unsigned int key_len;
3186 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
3188 memset(key_str, 0x00, 128);
3189 memset(src_str, 0x00, 128);
3190 memset(dst_str, 0x00, 257);
3191 memset(iv_str, 0x00, 128);
3192 memset(add_str, 0x00, 128);
3193 memset(tag_str, 0x00, 128);
3194 memset(output, 0x00, 128);
3195 memset(tag_output, 0x00, 16);
3197 key_len =
unhexify( key_str,
"6960be8fe82061e9cd783cd1c03f63a00d60ce9fc47ea496" );
3198 pt_len =
unhexify( src_str,
"e0f574ddbb04831b5a86f40182f5f10d8667fe13c7065b471df157f67230c41b8c069c0218ceab93d63964be8ee853c567add2c3eab1670b03a51f9175e8e763be778ec43833cd716e1c8fe5cfb1d663149b21e06df772a3973fe1297d65188201cdb0c3533f5e9d40bb0664a97db60fc99d7e48eedebf264024006ca36361ac" );
3199 iv_len =
unhexify( iv_str,
"672f4378862c82738055273c72555b39" );
3200 add_len =
unhexify( add_str,
"e3a4dbce87edac519ce86349eed2dba0d371cef0d8f20b4dda3e1cd9f5799c9fd0b7494daec5bc995a6936c501212eb957ccc9ddd4c9b8a205cac122ba87b5c5a0eeba6b2af2cbc2326d953d61d089b6334ce03257203072f8e06b8c6f37692748a13e681082900fd32f0df6a3072f3a8b9bbeb3ea558e97a43d6656093d7c75" );
3202 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3205 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3206 hexify( dst_str, output, pt_len );
3207 hexify( tag_str, tag_output, tag_len );
3209 fct_chk( strcmp( (
char *) dst_str,
"2a3c4b79bbcfa4af04baa8413f6f1d18c9c579060ecd0cc359fcdcfc0566697ff834f7dffec84b2292e8583ecb59c9e5e5d87913a6ccaacebf371f1fff67f0be749d4ea5f5c6f4c959e9d932414a54a8e25bf2f485ecce9e70990bbc4e621ce2c8fcc3caa66b0730c6639de1bfa0124afe351912279bc3ca363f4e6013496cf1" ) == 0 );
3210 fct_chk( strcmp( (
char *) tag_str,
"dbdd6af194f2578a0d0832d0cba1" ) == 0 );
3216 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024112_2)
3218 unsigned char key_str[128];
3219 unsigned char src_str[128];
3220 unsigned char dst_str[257];
3221 unsigned char iv_str[128];
3222 unsigned char add_str[128];
3223 unsigned char tag_str[128];
3224 unsigned char output[128];
3225 unsigned char tag_output[16];
3227 unsigned int key_len;
3228 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
3230 memset(key_str, 0x00, 128);
3231 memset(src_str, 0x00, 128);
3232 memset(dst_str, 0x00, 257);
3233 memset(iv_str, 0x00, 128);
3234 memset(add_str, 0x00, 128);
3235 memset(tag_str, 0x00, 128);
3236 memset(output, 0x00, 128);
3237 memset(tag_output, 0x00, 16);
3239 key_len =
unhexify( key_str,
"2b7d0115612c56a1f28c6b3cb3d51c2b4bbd4cd36ccf3dda" );
3240 pt_len =
unhexify( src_str,
"3a88efa524a90b31873cba177a7e6e050dc59f42c934923db1e75fec924908370ad0c9c3b0b3c05adf12c6ef2627d8d16f832071c055aef5f581a39a8e7d9bed2629e26d5e3ecaed24048d744fba08d8d12132def62059f1a549044c1db121f47f10b3dc4a02849150aef53bd259d6814162761cbc9e1a8731d82101696e32d4" );
3241 iv_len =
unhexify( iv_str,
"317a60c3c29440b8ba04daf980994c46" );
3242 add_len =
unhexify( add_str,
"80d816bf4008ae51b9dd9a25c30cd7482f2289f5616c41d99881aa8f78b5efff84efe307a822174f3a5c08b381bc99b169b92057627f21dddc367723eaca2545ce3a4fba2b4633fd99459fb03e85d6d11ed041b63185f3b94f6004bdce556e2a0aaf811faf0153b3974d0bae3eabadccfc95474c940ecad5b4d5ea88f88b8c4a" );
3244 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3247 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3248 hexify( dst_str, output, pt_len );
3249 hexify( tag_str, tag_output, tag_len );
3251 fct_chk( strcmp( (
char *) dst_str,
"f193303bb781164e42b3d4d25569a446c86646bc0fbc93059603c0b46ec737ddfcd55df8c90e6d806bd9fef90f2b122a1758bef5c75fcdff95ce44217d9b6b0e75e77656cc7f8a8cc47729c74faf43cbf08202e9ad16c7ef8c832ce5f97f51153e178ccc3c168928f3c328cd5b4c341bb0482f6a292cfa2fa85e03d95bcd4cb1" ) == 0 );
3252 fct_chk( strcmp( (
char *) tag_str,
"42308ffc76cb6ab3c770e06f78ba" ) == 0 );
3258 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024104_0)
3260 unsigned char key_str[128];
3261 unsigned char src_str[128];
3262 unsigned char dst_str[257];
3263 unsigned char iv_str[128];
3264 unsigned char add_str[128];
3265 unsigned char tag_str[128];
3266 unsigned char output[128];
3267 unsigned char tag_output[16];
3269 unsigned int key_len;
3270 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
3272 memset(key_str, 0x00, 128);
3273 memset(src_str, 0x00, 128);
3274 memset(dst_str, 0x00, 257);
3275 memset(iv_str, 0x00, 128);
3276 memset(add_str, 0x00, 128);
3277 memset(tag_str, 0x00, 128);
3278 memset(output, 0x00, 128);
3279 memset(tag_output, 0x00, 16);
3281 key_len =
unhexify( key_str,
"75737e01a95c2ad9c860e72a57da646e01c2286a14dfec75" );
3282 pt_len =
unhexify( src_str,
"fa749799afcf2242a6000c4fe1e0628db53933dde99d672e3c7b24b0cd6533b8002bb7aa8633322f4ee2e343db3a0067ad44edaa398cd90ebdb50c732e8bf95aceb4aaa4dfd1eaca617c30c30c1a18761a6d24c2de0790f54f73e0802eb82ffc0124517ddafe8336f4ec6197219346deef4ce930e8ae20117e6ebe49a2582346" );
3283 iv_len =
unhexify( iv_str,
"1060d78543be384e7a9dc32a06bcd524" );
3284 add_len =
unhexify( add_str,
"528a6c34c3cb3aba402b856dd7c9677d0d88821686edd86287e7484b72248f949bbdfb640df27e3d1d6b6dc1293ea6c84be72c85e5ff497f5da74d796a21f2513385a177f29f2154b2362d5ac83c3897f368d06513333f2995b701fb3e5aabac559f6018fffd02cd6b65eba9cdc629067f15d1ae431d6a22811508cd913009f8" );
3286 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3289 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3290 hexify( dst_str, output, pt_len );
3291 hexify( tag_str, tag_output, tag_len );
3293 fct_chk( strcmp( (
char *) dst_str,
"7e8774cb73468ad9647f6946aea30e9468fac3850b5ff173c7b346891ecda32a78b58df8d835328615f36a12c18370f3abcf021ed723830b08627767272f769a2105e4786451db0512027ce0e3f770fbb0ee0e1850a5fc479df4ad5ceff4fa3b2b9124c330c2e79d770e6f5e89acdc8d0ca9c758980dfefaaac41aaf6d472f8a" ) == 0 );
3294 fct_chk( strcmp( (
char *) tag_str,
"6bc6632bb5b3296ede9e1c5fcd" ) == 0 );
3300 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024104_1)
3302 unsigned char key_str[128];
3303 unsigned char src_str[128];
3304 unsigned char dst_str[257];
3305 unsigned char iv_str[128];
3306 unsigned char add_str[128];
3307 unsigned char tag_str[128];
3308 unsigned char output[128];
3309 unsigned char tag_output[16];
3311 unsigned int key_len;
3312 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
3314 memset(key_str, 0x00, 128);
3315 memset(src_str, 0x00, 128);
3316 memset(dst_str, 0x00, 257);
3317 memset(iv_str, 0x00, 128);
3318 memset(add_str, 0x00, 128);
3319 memset(tag_str, 0x00, 128);
3320 memset(output, 0x00, 128);
3321 memset(tag_output, 0x00, 16);
3323 key_len =
unhexify( key_str,
"a326226b24222b3389d793b61b723e9ac7059495a1b597f5" );
3324 pt_len =
unhexify( src_str,
"1cc26e453a54c94c1cf902fe12307cce2fba4d5f0fc3bb63cdbac0dd0b5ba31d08dae2b4f054c86f3a3ee920d8b9f7ad8ae8b4eca090c8783cf35db5de3b95889a84f09ff3f70263c61681f00a454b0813813f0fe3ec38a6d30cc3c6a93c91a422743e7a72340cb012718b8a4a3b66a75f13e0165aa51ee4b00046cba12e966d" );
3325 iv_len =
unhexify( iv_str,
"327972d0c2ebc20ed5bdedc8a3a7aee5" );
3326 add_len =
unhexify( add_str,
"2edb1455bf4573a54ab921d31b7fc9e534bce0870eb6e973afccc3b1f93dd2c1a476dd88e705919caeb5d4f4a8516a718cff8858eb443ca7785579036cc7273570e7bf2489ce71a52ad623bf7223ce31232d8c9b18e52a2dd4519bb08d87301f3ae69dcc36c6dcb3b03d8fc39b6621f6b4471092e941ef090c9821a05df8575a" );
3328 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3331 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3332 hexify( dst_str, output, pt_len );
3333 hexify( tag_str, tag_output, tag_len );
3335 fct_chk( strcmp( (
char *) dst_str,
"5a219a0d997e879ffeb548d43de8e4f32a9ad196dc425c83f766134735ad2c9ff5d9665bd54ac3efdc50bb4a7a04ba59825f31a0f3e530aef45bba00cd6479efaa19c85edb4734f91fdad6686e50f9cc531fcabce9e8397381b4d691da4a27b7c487e93de3e3a9e769e831c69b07697e4bab470ebff628e710efa17e4c184e0f" ) == 0 );
3336 fct_chk( strcmp( (
char *) tag_str,
"2b9ac273c059865fab46f05ae3" ) == 0 );
3342 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024104_2)
3344 unsigned char key_str[128];
3345 unsigned char src_str[128];
3346 unsigned char dst_str[257];
3347 unsigned char iv_str[128];
3348 unsigned char add_str[128];
3349 unsigned char tag_str[128];
3350 unsigned char output[128];
3351 unsigned char tag_output[16];
3353 unsigned int key_len;
3354 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
3356 memset(key_str, 0x00, 128);
3357 memset(src_str, 0x00, 128);
3358 memset(dst_str, 0x00, 257);
3359 memset(iv_str, 0x00, 128);
3360 memset(add_str, 0x00, 128);
3361 memset(tag_str, 0x00, 128);
3362 memset(output, 0x00, 128);
3363 memset(tag_output, 0x00, 16);
3365 key_len =
unhexify( key_str,
"cf5f2d843042ab94fc4519d57d9229ea7e8172acf515fab7" );
3366 pt_len =
unhexify( src_str,
"0e20f5a2afffa4a5f9219320716c8a26e35a19c525dddd528e5f5f06f0da082f43272361f07cfdf57423f67ad3cfdda9cf1747c602a93747cc571adfabcc9d1ec1a8128908df45fe0ede0e14ff40169dd1ecbff7f4062ee7be0a1afb370c9d5103132c1fbee9262309cb05ea150fa862d6303af71677d2de9cafdb4ecdab8d5b" );
3367 iv_len =
unhexify( iv_str,
"95b06c3ce1a3de73cf51e781b941097a" );
3368 add_len =
unhexify( add_str,
"765c3fae74b6fa4b6ed4ca7ab9b829d76a7759c50874a38d2ecfddaca2365f7a143c9584e255608be829950393e5f94131caf4caa04aeeeb9d595e39ef3f9830246d6066995b2d40438f7eb0944bd452ab493b422e93a3e0dc3c0fc2a4b83711ac6693f07f035fd9d031242b6ea45beb259dc0203f497a77106392e4da93c285" );
3370 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3373 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3374 hexify( dst_str, output, pt_len );
3375 hexify( tag_str, tag_output, tag_len );
3377 fct_chk( strcmp( (
char *) dst_str,
"f43628a227dc852e0ad931e23548fedfd57020a26638ceb95dc5601827a0691c44209d14113da56e6a1e44c72845e42ebbc7ffbbc1cf18c1d33ca459bf94b1393a4725682f911f933e3fb21f2f8cd1ac48bc5afb6cb853a09e109dadcb740a98e5e7ec875cea90be16bcdfec5f7de176eeeb07a3768b84b091c661f65e2b905e" ) == 0 );
3378 fct_chk( strcmp( (
char *) tag_str,
"77964b5ce53209ee5307065d49" ) == 0 );
3384 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102496_0)
3386 unsigned char key_str[128];
3387 unsigned char src_str[128];
3388 unsigned char dst_str[257];
3389 unsigned char iv_str[128];
3390 unsigned char add_str[128];
3391 unsigned char tag_str[128];
3392 unsigned char output[128];
3393 unsigned char tag_output[16];
3395 unsigned int key_len;
3396 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
3398 memset(key_str, 0x00, 128);
3399 memset(src_str, 0x00, 128);
3400 memset(dst_str, 0x00, 257);
3401 memset(iv_str, 0x00, 128);
3402 memset(add_str, 0x00, 128);
3403 memset(tag_str, 0x00, 128);
3404 memset(output, 0x00, 128);
3405 memset(tag_output, 0x00, 16);
3407 key_len =
unhexify( key_str,
"11cf18bbbc1d8778faf40391c30ca417739ff8e2a521926c" );
3408 pt_len =
unhexify( src_str,
"a2e11ac093ab648118759183cd52ca7d5728ca87fe2f31eca28cfb13325e3e6e95974456857866dda78359023e2c998d2c93c6dfe8f72c6d4ac39ca0585a53fc074bf1124c3ada92e78462a445da23e650bf52e26b782ff50312ee2beb7410e93c8435f7b88dfb0ed63d9a3823992d796bf3ab147c33593c5e6193ef32f7a620" );
3409 iv_len =
unhexify( iv_str,
"bdd9a2b70e4ee0cc501feca2a5209c3b" );
3410 add_len =
unhexify( add_str,
"051c68fe0cd81b52fede137d0105e69c74771b770ea9b573ad92ecae86f420953f459755597f68c29f6fca39a27239faa940ce6c949ccd44c9f12a0160cf74a575753310f52ec5c5bb9c4474b85266494e63b6810ddf7a6abd1cf8244cebbf69d3198c4a09e8dccbc9429f81791f5c02628e9477b988e2bd10f9bd5d6731ad01" );
3412 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3415 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3416 hexify( dst_str, output, pt_len );
3417 hexify( tag_str, tag_output, tag_len );
3419 fct_chk( strcmp( (
char *) dst_str,
"ca899a00654730d68219ca2ed9b23058a5f40150c237143b24245de1e440329e513690f00c0c52bbd0de8074fe5d7a50fe420470249227f967340efeeb64c424881c7f3a20c405d58ea81f2309c7f74ae572b30313e2d4b419fbf5f2cf90c6706a1ae1a800a883e8b00fbbc9dc28bf5aa4a329246bbe94df5c2d4524f57370d9" ) == 0 );
3420 fct_chk( strcmp( (
char *) tag_str,
"dd45503cc20493ec61f54f01" ) == 0 );
3426 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102496_1)
3428 unsigned char key_str[128];
3429 unsigned char src_str[128];
3430 unsigned char dst_str[257];
3431 unsigned char iv_str[128];
3432 unsigned char add_str[128];
3433 unsigned char tag_str[128];
3434 unsigned char output[128];
3435 unsigned char tag_output[16];
3437 unsigned int key_len;
3438 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
3440 memset(key_str, 0x00, 128);
3441 memset(src_str, 0x00, 128);
3442 memset(dst_str, 0x00, 257);
3443 memset(iv_str, 0x00, 128);
3444 memset(add_str, 0x00, 128);
3445 memset(tag_str, 0x00, 128);
3446 memset(output, 0x00, 128);
3447 memset(tag_output, 0x00, 16);
3449 key_len =
unhexify( key_str,
"812481f8982b42b2fb86297c4b7c739652908dc498171c69" );
3450 pt_len =
unhexify( src_str,
"32b27127582ceac21f968f5418e24ec8b84617f4daab0eb007f02d45812e81d486dc50909d79221c438def535b8a55946f50297963139a6b21e139e810d19bc1566b374d080a387a646bb582dc738c44156eb6c8dad613586662418edcbb18fe688d271108318de71734cb571d442e4d9537b0fcb2f5c763b3fbcac010f5c4e1" );
3451 iv_len =
unhexify( iv_str,
"0dad658c73c9c88dd927a502d7b14e8b" );
3452 add_len =
unhexify( add_str,
"af44f747d77a83ef0944f3bac8e835d752bb55772a7fbd3c6af27ca0eaadd122c9af1e2a9f37c2ba42779ed8cde2199125378fc88c7d6d58edc01c65491c5efc6bee58e7e8bf72f1a69d3dba47b38a50077130cbd71accd3dd4f193a53c6f2d1df694476767f79f8b71fd42745ee5bd41e90a7dd50a1597445251b32de303169" );
3454 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3457 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3458 hexify( dst_str, output, pt_len );
3459 hexify( tag_str, tag_output, tag_len );
3461 fct_chk( strcmp( (
char *) dst_str,
"003ae4798f6a0b97990d41373623e528618f9299cebdb0d23e3799f62bb063e5530eef7fc40c06af16965ff6895f675ffb81c004d826cbd36b5eec9bd3d90d785af03b64d12d311b6f90bcd75a40497d0fad5e54f829a097b25f7a9604f6fad475c9239a0f8d5589b8a76c6f7bc852a3b820734b426f59ee845ec3f09dd7d3d1" ) == 0 );
3462 fct_chk( strcmp( (
char *) tag_str,
"b80bbc002cbebfb4ec5d48c0" ) == 0 );
3468 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102496_2)
3470 unsigned char key_str[128];
3471 unsigned char src_str[128];
3472 unsigned char dst_str[257];
3473 unsigned char iv_str[128];
3474 unsigned char add_str[128];
3475 unsigned char tag_str[128];
3476 unsigned char output[128];
3477 unsigned char tag_output[16];
3479 unsigned int key_len;
3480 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
3482 memset(key_str, 0x00, 128);
3483 memset(src_str, 0x00, 128);
3484 memset(dst_str, 0x00, 257);
3485 memset(iv_str, 0x00, 128);
3486 memset(add_str, 0x00, 128);
3487 memset(tag_str, 0x00, 128);
3488 memset(output, 0x00, 128);
3489 memset(tag_output, 0x00, 16);
3491 key_len =
unhexify( key_str,
"a6657a7a9ddc6b4595df94d7c6bee9d13ad231cdc46ae5b4" );
3492 pt_len =
unhexify( src_str,
"36857eccb5b3c220265a40980e8949135e840ef270602940d3394f3f679aed55217c1de175f6b48a16f7b394ad7d288bc425762f971b752d1372b369fb1c3a64970c8d18ad6de2e1a9a561a749e3cf9a8524e239f3121e8643bebee471e55fb5d54a3453c51b1747defac98ead8b25854ed1cae7ac44fd28cf4b1ed8988875c1" );
3493 iv_len =
unhexify( iv_str,
"68621ea7c6aaf1e86a3b841df9c43aa8" );
3494 add_len =
unhexify( add_str,
"bc25c38d3a200fc17f620444e404f3b3999f51ed5b860c04186750f55cc53c6423c44d0eee02a83af27d16b9652a7cb3d34a5cb19694e5399a272dacd56c4b17872fd23fdca129a4299b9c87baf209dd1cd1f355088e3f938e6d5053a847b5913f0b9135d6f290e365508bed73c61160a11a2c23aaed7551b32882c79a807230" );
3496 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3499 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3500 hexify( dst_str, output, pt_len );
3501 hexify( tag_str, tag_output, tag_len );
3503 fct_chk( strcmp( (
char *) dst_str,
"de8bb8e69f9ff1322f0a6c30cba5a6fccd7d17a2173a86cff5478ac8ea4ad6f4e99ddd4149e6a9b24865cc8fd6394066e24a556f3f6d48c599592c56f06a946c6b3414e2fb47e14d1f128ef26b385912367f35082099c1f3d4ea86687f19f059c56dac21923e9a151567299416eb311f5bbf9a28968b080b0b200044668f0919" ) == 0 );
3504 fct_chk( strcmp( (
char *) tag_str,
"065f6c2b86891c719ea76984" ) == 0 );
3510 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102464_0)
3512 unsigned char key_str[128];
3513 unsigned char src_str[128];
3514 unsigned char dst_str[257];
3515 unsigned char iv_str[128];
3516 unsigned char add_str[128];
3517 unsigned char tag_str[128];
3518 unsigned char output[128];
3519 unsigned char tag_output[16];
3521 unsigned int key_len;
3522 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
3524 memset(key_str, 0x00, 128);
3525 memset(src_str, 0x00, 128);
3526 memset(dst_str, 0x00, 257);
3527 memset(iv_str, 0x00, 128);
3528 memset(add_str, 0x00, 128);
3529 memset(tag_str, 0x00, 128);
3530 memset(output, 0x00, 128);
3531 memset(tag_output, 0x00, 16);
3533 key_len =
unhexify( key_str,
"20cf8c2c47cd583286157b45b575d4d69c793b4250274fe4" );
3534 pt_len =
unhexify( src_str,
"a64c2131c94fa827c3a510b23b20fb6d04579bc292d2ec33efc9eb31459115da143f73fba9bd8b03b67e591497d108f900a7279542b480bd3a13ea588a29efe66688b52c3fd58598c66d8595888e87b27734e6c5b2796cc60ab2aa3dd06a29c577de5bdbf0b6c69c7034f0181050f286b9300d214f549165a0b5b56ba8e40641" );
3535 iv_len =
unhexify( iv_str,
"ab58d2e18eb83c20df94cd6b569c65fe" );
3536 add_len =
unhexify( add_str,
"93ff6057eaaa9559d87e3276d4d900888cb1f56434ce2677ee1486a0aa8f4e8d02c47d06e6841f3fbe5bd72dd37fa9d81bbef807dca6961910844eb9611419936310d717e1843e7b278f48ae44a57c1f227a75fa8cbc7fd57c8cc3b101e036c8ef3043642c81f381561b61da7c9d79b6da9ec46f7cf093c29c1930b27c14f991" );
3538 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3541 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3542 hexify( dst_str, output, pt_len );
3543 hexify( tag_str, tag_output, tag_len );
3545 fct_chk( strcmp( (
char *) dst_str,
"a3f621261af17ec4756245414280017fd36133f2f9ff89eb8979d4417b8f93892bbf7b08bab785341bf0c7b5e3643f0e33f036633e5ebeae7a750ffdfcfbab690291731e92238ba6b45859b309629224fa7efc72298d3cf1ae3b6a9e94797552afc4e3a46205f9bab7eb64e4a41aee0e45289704a97221b7118d209e0b267a68" ) == 0 );
3546 fct_chk( strcmp( (
char *) tag_str,
"ae53564271d5de5d" ) == 0 );
3552 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102464_1)
3554 unsigned char key_str[128];
3555 unsigned char src_str[128];
3556 unsigned char dst_str[257];
3557 unsigned char iv_str[128];
3558 unsigned char add_str[128];
3559 unsigned char tag_str[128];
3560 unsigned char output[128];
3561 unsigned char tag_output[16];
3563 unsigned int key_len;
3564 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
3566 memset(key_str, 0x00, 128);
3567 memset(src_str, 0x00, 128);
3568 memset(dst_str, 0x00, 257);
3569 memset(iv_str, 0x00, 128);
3570 memset(add_str, 0x00, 128);
3571 memset(tag_str, 0x00, 128);
3572 memset(output, 0x00, 128);
3573 memset(tag_output, 0x00, 16);
3575 key_len =
unhexify( key_str,
"8a311bf356cb1d1f58eab411b45b8d78b88052f3c8ab821d" );
3576 pt_len =
unhexify( src_str,
"3e915e92f186fde05ad55a2597ceab81495abbaa0be107dbf6a375525d1157a322b1f65460dce0c3aa2bc08fa89f777dac4d2fc3e5f7f20a0d5e33373c7f1c3551369737124c702928726bd9db96a33bacb56f1d645fa02ca1d88629c547c0eaf9585ee23b530ea971bf439c67e3b752af882668ebe0c739b26c837887b9d2be" );
3577 iv_len =
unhexify( iv_str,
"0569d05f3825d16aaa89e86812f80628" );
3578 add_len =
unhexify( add_str,
"28494a12026eb89b46b6139573dcda0836a617e00e25e2daa92f9372d86c3c162cfec34d634ea48294c784825615f41e06e555cf916983931e3d6a7ccbb4448670139616e3bbf7109387a852703b0b9d12c1fbd966f72bf49a7e1461ca714872ccdc59dc775c24a85e9864461123710fd8dcc26815894ee8cf2ca48a4ec73b3b" );
3580 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3583 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3584 hexify( dst_str, output, pt_len );
3585 hexify( tag_str, tag_output, tag_len );
3587 fct_chk( strcmp( (
char *) dst_str,
"9ba776653e8d9d240d9c1ec355027a18731c500928925e7c50ef83c6f36957073a8386ecbfaf430634cd557b1da1bf122f37456fea3e9b58a6e99413d9d16a2f1b40dff843fe16a2fa0219ad5dd8ae4611de53d7aabbef7a87ce402e62276addc7f44e09ae9e62c5cce4ddce5695db987084385ae9a98884ec97e67b549ad440" ) == 0 );
3588 fct_chk( strcmp( (
char *) tag_str,
"c669ca821b6ef584" ) == 0 );
3594 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102464_2)
3596 unsigned char key_str[128];
3597 unsigned char src_str[128];
3598 unsigned char dst_str[257];
3599 unsigned char iv_str[128];
3600 unsigned char add_str[128];
3601 unsigned char tag_str[128];
3602 unsigned char output[128];
3603 unsigned char tag_output[16];
3605 unsigned int key_len;
3606 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
3608 memset(key_str, 0x00, 128);
3609 memset(src_str, 0x00, 128);
3610 memset(dst_str, 0x00, 257);
3611 memset(iv_str, 0x00, 128);
3612 memset(add_str, 0x00, 128);
3613 memset(tag_str, 0x00, 128);
3614 memset(output, 0x00, 128);
3615 memset(tag_output, 0x00, 16);
3617 key_len =
unhexify( key_str,
"82fc47638cfb361ecf7924c03925d6006cb99459ef5691e8" );
3618 pt_len =
unhexify( src_str,
"d14a550d419b8e03762429a7abda3b17ad7a1305e5fc639e71538285cd70d78fa30e0c048e2c32d2a7fd7f82c874d63ae922db5a77111b46caefbfe4feef4df19786e5fec6a4df84f76df412b1f06bea149f1996b41b117d00d422bba5566d3af5289ca9377f325ca1e72f7d6a32df6607bde194cf4ac52c28e8aa1e8f1c9a67" );
3619 iv_len =
unhexify( iv_str,
"2a8e1cadd2f264f2ad7be9e7bdfa24a2" );
3620 add_len =
unhexify( add_str,
"8088358d7c3ca8951d7e8cd6cae15844edabccc8d0fcf8f169a48cf434d4814f1d7d9ae410e5581d414f952f52b852eb10fcf0f2a67bea826ea2e28331f0597152e624e148462d5952f10fa363666d57ebfe036695e1e68f79161b991e20c8ae6095232e63fde073c79603135849c62f8d98a1d80608fc081171114db41883f6" );
3622 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3625 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3626 hexify( dst_str, output, pt_len );
3627 hexify( tag_str, tag_output, tag_len );
3629 fct_chk( strcmp( (
char *) dst_str,
"e54cc95e845f4d1b28885e9b90d1d9d3cc51fd9d8fec9bce57de8781a28b4e5b7ab446074e84471d7a9a23748b689c354e402be77f9890a9c52a2eb9022a6a415e01285db1c6eb66d5e15f4216a4f3f45782677b6ccbf20ac7b35bd153f52a599712d09712ef1454ccf72ee48cca967f4917f1aeaeaa6eaaf8493ec7ff2dc1d4" ) == 0 );
3630 fct_chk( strcmp( (
char *) tag_str,
"093343e49b70c938" ) == 0 );
3636 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102432_0)
3638 unsigned char key_str[128];
3639 unsigned char src_str[128];
3640 unsigned char dst_str[257];
3641 unsigned char iv_str[128];
3642 unsigned char add_str[128];
3643 unsigned char tag_str[128];
3644 unsigned char output[128];
3645 unsigned char tag_output[16];
3647 unsigned int key_len;
3648 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
3650 memset(key_str, 0x00, 128);
3651 memset(src_str, 0x00, 128);
3652 memset(dst_str, 0x00, 257);
3653 memset(iv_str, 0x00, 128);
3654 memset(add_str, 0x00, 128);
3655 memset(tag_str, 0x00, 128);
3656 memset(output, 0x00, 128);
3657 memset(tag_output, 0x00, 16);
3659 key_len =
unhexify( key_str,
"d3180703e1ec93b20d1ac4d64e85d5461d75f783bcd2f4fa" );
3660 pt_len =
unhexify( src_str,
"b7b350db6fc0796e9fd0cb239f561bf7e27b2aa26b8e3e76d8b737caa1c1c5ad624a32f5709e4b751f8c21172d4d0f4ba38ca4d1d0e2570c084cabdd0e8880b35140c84f775c3c301a9b260825e1fd75f9835777d6c0e23d359af1a5f7caef934b91bee521531582b639be2cca87c2991f5525f4a2f64c30a1453013d73c16cf" );
3661 iv_len =
unhexify( iv_str,
"916d72d515d3247ba48828d4113bda3b" );
3662 add_len =
unhexify( add_str,
"1002513035cb1d7e8b2710ff8c93cec55e2e2c2b56000d4c1182b5286736acd2d6f2fc9b82f71156dba6f77463805627e4bc38c96e091ecd945df7e996e7fc3bbfdae3d85ef1337fbce960fd1d60d06962a1669e9e8d20be151f6323cb38ef68ab5e838f02a0f379567f518f15d81b192cb25a42356807c1b9c02bef8309ff44" );
3664 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3667 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3668 hexify( dst_str, output, pt_len );
3669 hexify( tag_str, tag_output, tag_len );
3671 fct_chk( strcmp( (
char *) dst_str,
"d590f2afcd64c574ece12c675f509efdffc01e1404cbafbc923c4b44390eff66dd839e6d800df67bc06f49f76911df3cec36a3a1521762d6d4a8ee602ebefde0178863443f918668fcde8a531f3b5ee0e4c379ecf3e75e7c59f753e41f4e39811bd3e7dd3d6bbaa1e81fdbf8bd976384a6c4505f7e4270321c7329bba7f15506" ) == 0 );
3672 fct_chk( strcmp( (
char *) tag_str,
"22e50ed0" ) == 0 );
3678 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102432_1)
3680 unsigned char key_str[128];
3681 unsigned char src_str[128];
3682 unsigned char dst_str[257];
3683 unsigned char iv_str[128];
3684 unsigned char add_str[128];
3685 unsigned char tag_str[128];
3686 unsigned char output[128];
3687 unsigned char tag_output[16];
3689 unsigned int key_len;
3690 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
3692 memset(key_str, 0x00, 128);
3693 memset(src_str, 0x00, 128);
3694 memset(dst_str, 0x00, 257);
3695 memset(iv_str, 0x00, 128);
3696 memset(add_str, 0x00, 128);
3697 memset(tag_str, 0x00, 128);
3698 memset(output, 0x00, 128);
3699 memset(tag_output, 0x00, 16);
3701 key_len =
unhexify( key_str,
"02bc0a8ab5468123009b2c69aaffd0a20a1fb082b55a7ecb" );
3702 pt_len =
unhexify( src_str,
"8bf32af1632a7903f00e801ee6e5c690147c021be6886cf2462b2172786ab296e0feb96648e4a602ae6dc45e2aa60e6610356cde26b1dde3aa114c5449216a467fcde18332a6d482d24a1ee952379340d036a48b63efa092db4c30a95f402d57b9c837183e900b47805f170cfe9e69baea2b939799e983f7470bb1297f937bbf" );
3703 iv_len =
unhexify( iv_str,
"bcfc15308e891f32506a50c4ed41bff6" );
3704 add_len =
unhexify( add_str,
"01bff5e606a536e951213b23672db9074fa8bbf947e815d32cbfe30adc1e736517f86139840a4aa0a671b4e9bbd6a59d292db34cc87742c0dfd2d658ef157734c5fdebb3e5772d4990ad1b2675c23ddf1472e892dafe7bf140d614c50cf937923491662299ab957606f4ca5eed2facdc5c657784bac871fab04d6cd3ccb18332" );
3706 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3709 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3710 hexify( dst_str, output, pt_len );
3711 hexify( tag_str, tag_output, tag_len );
3713 fct_chk( strcmp( (
char *) dst_str,
"b8dff03141832970c925e7ff0038394a0df7f35add3046cc56f73e3eff59e18932aac697456107b6da7da3249049c3be5c098dd730cd4bf68cdf798c3a932b2c51f18d29e4386cbf1b7998a81b603372337784307b0beb59235eba4d3e4810899f6d71a994ba9742aea1875878ccef1bf674ee655a0720bd37e44b33cafe5742" ) == 0 );
3714 fct_chk( strcmp( (
char *) tag_str,
"bd0be868" ) == 0 );
3720 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102432_2)
3722 unsigned char key_str[128];
3723 unsigned char src_str[128];
3724 unsigned char dst_str[257];
3725 unsigned char iv_str[128];
3726 unsigned char add_str[128];
3727 unsigned char tag_str[128];
3728 unsigned char output[128];
3729 unsigned char tag_output[16];
3731 unsigned int key_len;
3732 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
3734 memset(key_str, 0x00, 128);
3735 memset(src_str, 0x00, 128);
3736 memset(dst_str, 0x00, 257);
3737 memset(iv_str, 0x00, 128);
3738 memset(add_str, 0x00, 128);
3739 memset(tag_str, 0x00, 128);
3740 memset(output, 0x00, 128);
3741 memset(tag_output, 0x00, 16);
3743 key_len =
unhexify( key_str,
"7c07d5ccaadb9e3ba5b5ddf380a7a2a175522b98e31e1d34" );
3744 pt_len =
unhexify( src_str,
"04d3e6bcd5ebf696fe84a702ffd5f76dcbe9679c909b36d41ce6362f229304aeb19896c6376cb3c25081f709af57d36f39f421ecdb70bed9f829558bec6e78823275fc11f9a2d5f773d27136d903ff08e5926338dfdcbc182825794e5f739efc1f0ecda8e53751edbe0d08963471fb5099f2ff31f76b479677bd6d186a409525" );
3745 iv_len =
unhexify( iv_str,
"e4db5c6403a03daa703516763052bce0" );
3746 add_len =
unhexify( add_str,
"b747d97f263d0ff6119df1b5332640d2e4568813adc12ed76175fdfffafd087456748abb267195688d2db41caef301117979dfd2db9714b352398594005bebb449ea20415fcfb2671253f69bf6467ce7f5bce350a834c4586eb03e766c1930e7e6ccf01283ea31b8c73d7967cde0f2a53cc46b1b50c48649044d6f753f1d54b5" );
3748 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3751 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3752 hexify( dst_str, output, pt_len );
3753 hexify( tag_str, tag_output, tag_len );
3755 fct_chk( strcmp( (
char *) dst_str,
"f5faf7bdd99c62ec87f93da2ca3ce31e694df0a0fd04d61914f9a7a4235de20e0a406e297ba1099fff8c14e8fd37a9d6cbe2c5c572c988cb1ff87ffe7825e1947ea3da73b8b3633721fb4e08deb3f8fcae2407d73bd4c07f32b4f9ad0b1364003b11f84037a28239e96c3996874ba8e4ec7270bf0441d648f52f3730d30e3536" ) == 0 );
3756 fct_chk( strcmp( (
char *) tag_str,
"e0820c4d" ) == 0 );
3762 FCT_TEST_BGN(gcm_nist_validation_aes_19212800128_0)
3764 unsigned char key_str[128];
3765 unsigned char src_str[128];
3766 unsigned char dst_str[257];
3767 unsigned char iv_str[128];
3768 unsigned char add_str[128];
3769 unsigned char tag_str[128];
3770 unsigned char output[128];
3771 unsigned char tag_output[16];
3773 unsigned int key_len;
3774 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
3776 memset(key_str, 0x00, 128);
3777 memset(src_str, 0x00, 128);
3778 memset(dst_str, 0x00, 257);
3779 memset(iv_str, 0x00, 128);
3780 memset(add_str, 0x00, 128);
3781 memset(tag_str, 0x00, 128);
3782 memset(output, 0x00, 128);
3783 memset(tag_output, 0x00, 16);
3785 key_len =
unhexify( key_str,
"dd01d48789ef7f07f80a7385e4d1b1734903bc6ec768c9f2" );
3787 iv_len =
unhexify( iv_str,
"944ed7743be9ce370cba7b7c9b7dece2" );
3790 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3793 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3794 hexify( dst_str, output, pt_len );
3795 hexify( tag_str, tag_output, tag_len );
3797 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
3798 fct_chk( strcmp( (
char *) tag_str,
"dfa0ab389c3a780f598af80200c84da8" ) == 0 );
3804 FCT_TEST_BGN(gcm_nist_validation_aes_19212800128_1)
3806 unsigned char key_str[128];
3807 unsigned char src_str[128];
3808 unsigned char dst_str[257];
3809 unsigned char iv_str[128];
3810 unsigned char add_str[128];
3811 unsigned char tag_str[128];
3812 unsigned char output[128];
3813 unsigned char tag_output[16];
3815 unsigned int key_len;
3816 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
3818 memset(key_str, 0x00, 128);
3819 memset(src_str, 0x00, 128);
3820 memset(dst_str, 0x00, 257);
3821 memset(iv_str, 0x00, 128);
3822 memset(add_str, 0x00, 128);
3823 memset(tag_str, 0x00, 128);
3824 memset(output, 0x00, 128);
3825 memset(tag_output, 0x00, 16);
3827 key_len =
unhexify( key_str,
"0383849ed0db3e52743aa82fe8cd9173b457755be8bbd46c" );
3829 iv_len =
unhexify( iv_str,
"c6b8518346ec52c001697b7bd38dc795" );
3832 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3835 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3836 hexify( dst_str, output, pt_len );
3837 hexify( tag_str, tag_output, tag_len );
3839 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
3840 fct_chk( strcmp( (
char *) tag_str,
"48a1992549b627c8621e8fbaadacb16c" ) == 0 );
3846 FCT_TEST_BGN(gcm_nist_validation_aes_19212800128_2)
3848 unsigned char key_str[128];
3849 unsigned char src_str[128];
3850 unsigned char dst_str[257];
3851 unsigned char iv_str[128];
3852 unsigned char add_str[128];
3853 unsigned char tag_str[128];
3854 unsigned char output[128];
3855 unsigned char tag_output[16];
3857 unsigned int key_len;
3858 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
3860 memset(key_str, 0x00, 128);
3861 memset(src_str, 0x00, 128);
3862 memset(dst_str, 0x00, 257);
3863 memset(iv_str, 0x00, 128);
3864 memset(add_str, 0x00, 128);
3865 memset(tag_str, 0x00, 128);
3866 memset(output, 0x00, 128);
3867 memset(tag_output, 0x00, 16);
3869 key_len =
unhexify( key_str,
"936388053ee0116b3f783ae34f000d5fe2c5d712842d46f9" );
3871 iv_len =
unhexify( iv_str,
"c5426b20c014e472c7b85be2ed0f64c8" );
3874 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3877 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3878 hexify( dst_str, output, pt_len );
3879 hexify( tag_str, tag_output, tag_len );
3881 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
3882 fct_chk( strcmp( (
char *) tag_str,
"4cf0f6a45f3544e3d391375c8fe176b1" ) == 0 );
3888 FCT_TEST_BGN(gcm_nist_validation_aes_19212800120_0)
3890 unsigned char key_str[128];
3891 unsigned char src_str[128];
3892 unsigned char dst_str[257];
3893 unsigned char iv_str[128];
3894 unsigned char add_str[128];
3895 unsigned char tag_str[128];
3896 unsigned char output[128];
3897 unsigned char tag_output[16];
3899 unsigned int key_len;
3900 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
3902 memset(key_str, 0x00, 128);
3903 memset(src_str, 0x00, 128);
3904 memset(dst_str, 0x00, 257);
3905 memset(iv_str, 0x00, 128);
3906 memset(add_str, 0x00, 128);
3907 memset(tag_str, 0x00, 128);
3908 memset(output, 0x00, 128);
3909 memset(tag_output, 0x00, 16);
3911 key_len =
unhexify( key_str,
"40dfcb3151a8dab1cb79a6a1e6a24fb55024d0e256bd4b07" );
3913 iv_len =
unhexify( iv_str,
"b8495cc54653e7ad74206153ea64c3cb" );
3916 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3919 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3920 hexify( dst_str, output, pt_len );
3921 hexify( tag_str, tag_output, tag_len );
3923 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
3924 fct_chk( strcmp( (
char *) tag_str,
"1d3786412e0ceb383de3898ef2cffe" ) == 0 );
3930 FCT_TEST_BGN(gcm_nist_validation_aes_19212800120_1)
3932 unsigned char key_str[128];
3933 unsigned char src_str[128];
3934 unsigned char dst_str[257];
3935 unsigned char iv_str[128];
3936 unsigned char add_str[128];
3937 unsigned char tag_str[128];
3938 unsigned char output[128];
3939 unsigned char tag_output[16];
3941 unsigned int key_len;
3942 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
3944 memset(key_str, 0x00, 128);
3945 memset(src_str, 0x00, 128);
3946 memset(dst_str, 0x00, 257);
3947 memset(iv_str, 0x00, 128);
3948 memset(add_str, 0x00, 128);
3949 memset(tag_str, 0x00, 128);
3950 memset(output, 0x00, 128);
3951 memset(tag_output, 0x00, 16);
3953 key_len =
unhexify( key_str,
"83ca41d8b33c6134a14d8b30b0c36d5b799574dd925f3b8b" );
3955 iv_len =
unhexify( iv_str,
"fb9aca5b4932035c65b571d170fdf524" );
3958 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
3961 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
3962 hexify( dst_str, output, pt_len );
3963 hexify( tag_str, tag_output, tag_len );
3965 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
3966 fct_chk( strcmp( (
char *) tag_str,
"9787f7d68d2648963cb49fd7459121" ) == 0 );
3972 FCT_TEST_BGN(gcm_nist_validation_aes_19212800120_2)
3974 unsigned char key_str[128];
3975 unsigned char src_str[128];
3976 unsigned char dst_str[257];
3977 unsigned char iv_str[128];
3978 unsigned char add_str[128];
3979 unsigned char tag_str[128];
3980 unsigned char output[128];
3981 unsigned char tag_output[16];
3983 unsigned int key_len;
3984 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
3986 memset(key_str, 0x00, 128);
3987 memset(src_str, 0x00, 128);
3988 memset(dst_str, 0x00, 257);
3989 memset(iv_str, 0x00, 128);
3990 memset(add_str, 0x00, 128);
3991 memset(tag_str, 0x00, 128);
3992 memset(output, 0x00, 128);
3993 memset(tag_output, 0x00, 16);
3995 key_len =
unhexify( key_str,
"886e646688d573c2dcc8ca229a11b394b3400408dd801503" );
3997 iv_len =
unhexify( iv_str,
"c0744685722cb87717c76fd09a721dac" );
4000 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4003 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4004 hexify( dst_str, output, pt_len );
4005 hexify( tag_str, tag_output, tag_len );
4007 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4008 fct_chk( strcmp( (
char *) tag_str,
"794fe4df0084c21ffeaf959e5b0382" ) == 0 );
4014 FCT_TEST_BGN(gcm_nist_validation_aes_19212800112_0)
4016 unsigned char key_str[128];
4017 unsigned char src_str[128];
4018 unsigned char dst_str[257];
4019 unsigned char iv_str[128];
4020 unsigned char add_str[128];
4021 unsigned char tag_str[128];
4022 unsigned char output[128];
4023 unsigned char tag_output[16];
4025 unsigned int key_len;
4026 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
4028 memset(key_str, 0x00, 128);
4029 memset(src_str, 0x00, 128);
4030 memset(dst_str, 0x00, 257);
4031 memset(iv_str, 0x00, 128);
4032 memset(add_str, 0x00, 128);
4033 memset(tag_str, 0x00, 128);
4034 memset(output, 0x00, 128);
4035 memset(tag_output, 0x00, 16);
4037 key_len =
unhexify( key_str,
"0b845dc2c4e9e5a94bd3e8969300b16b45d3ad5eadb2e80a" );
4039 iv_len =
unhexify( iv_str,
"0900b3fa3cc9833d702655d285f904ed" );
4042 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4045 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4046 hexify( dst_str, output, pt_len );
4047 hexify( tag_str, tag_output, tag_len );
4049 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4050 fct_chk( strcmp( (
char *) tag_str,
"dc670518e150d326921bd5f43e80" ) == 0 );
4056 FCT_TEST_BGN(gcm_nist_validation_aes_19212800112_1)
4058 unsigned char key_str[128];
4059 unsigned char src_str[128];
4060 unsigned char dst_str[257];
4061 unsigned char iv_str[128];
4062 unsigned char add_str[128];
4063 unsigned char tag_str[128];
4064 unsigned char output[128];
4065 unsigned char tag_output[16];
4067 unsigned int key_len;
4068 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
4070 memset(key_str, 0x00, 128);
4071 memset(src_str, 0x00, 128);
4072 memset(dst_str, 0x00, 257);
4073 memset(iv_str, 0x00, 128);
4074 memset(add_str, 0x00, 128);
4075 memset(tag_str, 0x00, 128);
4076 memset(output, 0x00, 128);
4077 memset(tag_output, 0x00, 16);
4079 key_len =
unhexify( key_str,
"ac9fac2e32ab44a0774949d53a62c1cda04b132a3b07a211" );
4081 iv_len =
unhexify( iv_str,
"8cf6a81bfa21633ad95ffc690c737511" );
4084 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4087 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4088 hexify( dst_str, output, pt_len );
4089 hexify( tag_str, tag_output, tag_len );
4091 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4092 fct_chk( strcmp( (
char *) tag_str,
"4cd7a6e4f3ec3d41d086e6abf14c" ) == 0 );
4098 FCT_TEST_BGN(gcm_nist_validation_aes_19212800112_2)
4100 unsigned char key_str[128];
4101 unsigned char src_str[128];
4102 unsigned char dst_str[257];
4103 unsigned char iv_str[128];
4104 unsigned char add_str[128];
4105 unsigned char tag_str[128];
4106 unsigned char output[128];
4107 unsigned char tag_output[16];
4109 unsigned int key_len;
4110 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
4112 memset(key_str, 0x00, 128);
4113 memset(src_str, 0x00, 128);
4114 memset(dst_str, 0x00, 257);
4115 memset(iv_str, 0x00, 128);
4116 memset(add_str, 0x00, 128);
4117 memset(tag_str, 0x00, 128);
4118 memset(output, 0x00, 128);
4119 memset(tag_output, 0x00, 16);
4121 key_len =
unhexify( key_str,
"9f9721ef784980d03140490f760313cc8a56424affb01672" );
4123 iv_len =
unhexify( iv_str,
"c104bd8482e3fe7359c85e0e94fd4070" );
4126 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4129 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4130 hexify( dst_str, output, pt_len );
4131 hexify( tag_str, tag_output, tag_len );
4133 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4134 fct_chk( strcmp( (
char *) tag_str,
"3f682fc71989804ba74bdad04a97" ) == 0 );
4140 FCT_TEST_BGN(gcm_nist_validation_aes_19212800104_0)
4142 unsigned char key_str[128];
4143 unsigned char src_str[128];
4144 unsigned char dst_str[257];
4145 unsigned char iv_str[128];
4146 unsigned char add_str[128];
4147 unsigned char tag_str[128];
4148 unsigned char output[128];
4149 unsigned char tag_output[16];
4151 unsigned int key_len;
4152 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
4154 memset(key_str, 0x00, 128);
4155 memset(src_str, 0x00, 128);
4156 memset(dst_str, 0x00, 257);
4157 memset(iv_str, 0x00, 128);
4158 memset(add_str, 0x00, 128);
4159 memset(tag_str, 0x00, 128);
4160 memset(output, 0x00, 128);
4161 memset(tag_output, 0x00, 16);
4163 key_len =
unhexify( key_str,
"f7c935f56970678ab89f6d97315a33efae76148263e95f1e" );
4165 iv_len =
unhexify( iv_str,
"1a91965c5458f4a1fde309cd42a3f277" );
4168 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4171 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4172 hexify( dst_str, output, pt_len );
4173 hexify( tag_str, tag_output, tag_len );
4175 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4176 fct_chk( strcmp( (
char *) tag_str,
"ce266c6f0447623a3ef1f6f57c" ) == 0 );
4182 FCT_TEST_BGN(gcm_nist_validation_aes_19212800104_1)
4184 unsigned char key_str[128];
4185 unsigned char src_str[128];
4186 unsigned char dst_str[257];
4187 unsigned char iv_str[128];
4188 unsigned char add_str[128];
4189 unsigned char tag_str[128];
4190 unsigned char output[128];
4191 unsigned char tag_output[16];
4193 unsigned int key_len;
4194 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
4196 memset(key_str, 0x00, 128);
4197 memset(src_str, 0x00, 128);
4198 memset(dst_str, 0x00, 257);
4199 memset(iv_str, 0x00, 128);
4200 memset(add_str, 0x00, 128);
4201 memset(tag_str, 0x00, 128);
4202 memset(output, 0x00, 128);
4203 memset(tag_output, 0x00, 16);
4205 key_len =
unhexify( key_str,
"30ecea6cac70a9de4f4f7f441d6b9b5608cca39d07c0ded5" );
4207 iv_len =
unhexify( iv_str,
"361e5cd21c670de39b5f0b2b89437f99" );
4210 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4213 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4214 hexify( dst_str, output, pt_len );
4215 hexify( tag_str, tag_output, tag_len );
4217 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4218 fct_chk( strcmp( (
char *) tag_str,
"48a9621522a98bc6c0acf03429" ) == 0 );
4224 FCT_TEST_BGN(gcm_nist_validation_aes_19212800104_2)
4226 unsigned char key_str[128];
4227 unsigned char src_str[128];
4228 unsigned char dst_str[257];
4229 unsigned char iv_str[128];
4230 unsigned char add_str[128];
4231 unsigned char tag_str[128];
4232 unsigned char output[128];
4233 unsigned char tag_output[16];
4235 unsigned int key_len;
4236 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
4238 memset(key_str, 0x00, 128);
4239 memset(src_str, 0x00, 128);
4240 memset(dst_str, 0x00, 257);
4241 memset(iv_str, 0x00, 128);
4242 memset(add_str, 0x00, 128);
4243 memset(tag_str, 0x00, 128);
4244 memset(output, 0x00, 128);
4245 memset(tag_output, 0x00, 16);
4247 key_len =
unhexify( key_str,
"4fb80c4fd026c3f68ab8fcb8e28e144fdb3ba00d70295ebf" );
4249 iv_len =
unhexify( iv_str,
"ee552fb94a527d18d285d6c195ca7b2f" );
4252 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4255 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4256 hexify( dst_str, output, pt_len );
4257 hexify( tag_str, tag_output, tag_len );
4259 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4260 fct_chk( strcmp( (
char *) tag_str,
"5ec97630ce593e9d560136774c" ) == 0 );
4266 FCT_TEST_BGN(gcm_nist_validation_aes_1921280096_0)
4268 unsigned char key_str[128];
4269 unsigned char src_str[128];
4270 unsigned char dst_str[257];
4271 unsigned char iv_str[128];
4272 unsigned char add_str[128];
4273 unsigned char tag_str[128];
4274 unsigned char output[128];
4275 unsigned char tag_output[16];
4277 unsigned int key_len;
4278 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
4280 memset(key_str, 0x00, 128);
4281 memset(src_str, 0x00, 128);
4282 memset(dst_str, 0x00, 257);
4283 memset(iv_str, 0x00, 128);
4284 memset(add_str, 0x00, 128);
4285 memset(tag_str, 0x00, 128);
4286 memset(output, 0x00, 128);
4287 memset(tag_output, 0x00, 16);
4289 key_len =
unhexify( key_str,
"c0261023ee9f682789ce9ae970fb7601f07551259ef91945" );
4291 iv_len =
unhexify( iv_str,
"bffe4af76db75bc4a3d42b57c73c51b6" );
4294 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4297 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4298 hexify( dst_str, output, pt_len );
4299 hexify( tag_str, tag_output, tag_len );
4301 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4302 fct_chk( strcmp( (
char *) tag_str,
"bf827b4526da77ab2e21908c" ) == 0 );
4308 FCT_TEST_BGN(gcm_nist_validation_aes_1921280096_1)
4310 unsigned char key_str[128];
4311 unsigned char src_str[128];
4312 unsigned char dst_str[257];
4313 unsigned char iv_str[128];
4314 unsigned char add_str[128];
4315 unsigned char tag_str[128];
4316 unsigned char output[128];
4317 unsigned char tag_output[16];
4319 unsigned int key_len;
4320 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
4322 memset(key_str, 0x00, 128);
4323 memset(src_str, 0x00, 128);
4324 memset(dst_str, 0x00, 257);
4325 memset(iv_str, 0x00, 128);
4326 memset(add_str, 0x00, 128);
4327 memset(tag_str, 0x00, 128);
4328 memset(output, 0x00, 128);
4329 memset(tag_output, 0x00, 16);
4331 key_len =
unhexify( key_str,
"4fb4ab2071bff4ec239ac05c04800806df2c256a4845b13a" );
4333 iv_len =
unhexify( iv_str,
"3ee0e2e72eea437e46a873bd659b1c4a" );
4336 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4339 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4340 hexify( dst_str, output, pt_len );
4341 hexify( tag_str, tag_output, tag_len );
4343 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4344 fct_chk( strcmp( (
char *) tag_str,
"572d3ec2650ad57eec84fe00" ) == 0 );
4350 FCT_TEST_BGN(gcm_nist_validation_aes_1921280096_2)
4352 unsigned char key_str[128];
4353 unsigned char src_str[128];
4354 unsigned char dst_str[257];
4355 unsigned char iv_str[128];
4356 unsigned char add_str[128];
4357 unsigned char tag_str[128];
4358 unsigned char output[128];
4359 unsigned char tag_output[16];
4361 unsigned int key_len;
4362 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
4364 memset(key_str, 0x00, 128);
4365 memset(src_str, 0x00, 128);
4366 memset(dst_str, 0x00, 257);
4367 memset(iv_str, 0x00, 128);
4368 memset(add_str, 0x00, 128);
4369 memset(tag_str, 0x00, 128);
4370 memset(output, 0x00, 128);
4371 memset(tag_output, 0x00, 16);
4373 key_len =
unhexify( key_str,
"193d5ebeb466d3fe68754bba413c65112ae29c5ca5e450c4" );
4375 iv_len =
unhexify( iv_str,
"04e9d31b3b1205cae37c435d5a5579df" );
4378 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4381 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4382 hexify( dst_str, output, pt_len );
4383 hexify( tag_str, tag_output, tag_len );
4385 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4386 fct_chk( strcmp( (
char *) tag_str,
"71004356f266688374437aef" ) == 0 );
4392 FCT_TEST_BGN(gcm_nist_validation_aes_1921280064_0)
4394 unsigned char key_str[128];
4395 unsigned char src_str[128];
4396 unsigned char dst_str[257];
4397 unsigned char iv_str[128];
4398 unsigned char add_str[128];
4399 unsigned char tag_str[128];
4400 unsigned char output[128];
4401 unsigned char tag_output[16];
4403 unsigned int key_len;
4404 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
4406 memset(key_str, 0x00, 128);
4407 memset(src_str, 0x00, 128);
4408 memset(dst_str, 0x00, 257);
4409 memset(iv_str, 0x00, 128);
4410 memset(add_str, 0x00, 128);
4411 memset(tag_str, 0x00, 128);
4412 memset(output, 0x00, 128);
4413 memset(tag_output, 0x00, 16);
4415 key_len =
unhexify( key_str,
"9a455ea1d9a78425a41d43e293e88de40dd6ad9ab2a63ef0" );
4417 iv_len =
unhexify( iv_str,
"c108c56a1b3261042adc89046ad1ecf8" );
4420 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4423 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4424 hexify( dst_str, output, pt_len );
4425 hexify( tag_str, tag_output, tag_len );
4427 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4428 fct_chk( strcmp( (
char *) tag_str,
"213d77ed0534cc20" ) == 0 );
4434 FCT_TEST_BGN(gcm_nist_validation_aes_1921280064_1)
4436 unsigned char key_str[128];
4437 unsigned char src_str[128];
4438 unsigned char dst_str[257];
4439 unsigned char iv_str[128];
4440 unsigned char add_str[128];
4441 unsigned char tag_str[128];
4442 unsigned char output[128];
4443 unsigned char tag_output[16];
4445 unsigned int key_len;
4446 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
4448 memset(key_str, 0x00, 128);
4449 memset(src_str, 0x00, 128);
4450 memset(dst_str, 0x00, 257);
4451 memset(iv_str, 0x00, 128);
4452 memset(add_str, 0x00, 128);
4453 memset(tag_str, 0x00, 128);
4454 memset(output, 0x00, 128);
4455 memset(tag_output, 0x00, 16);
4457 key_len =
unhexify( key_str,
"d6fff8797db2f1884b7d71e3ef3e5983234a837dbd0c2cd6" );
4459 iv_len =
unhexify( iv_str,
"6be4417d7c00fe9c731e0932a7037a71" );
4462 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4465 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4466 hexify( dst_str, output, pt_len );
4467 hexify( tag_str, tag_output, tag_len );
4469 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4470 fct_chk( strcmp( (
char *) tag_str,
"68b6c28786a017e7" ) == 0 );
4476 FCT_TEST_BGN(gcm_nist_validation_aes_1921280064_2)
4478 unsigned char key_str[128];
4479 unsigned char src_str[128];
4480 unsigned char dst_str[257];
4481 unsigned char iv_str[128];
4482 unsigned char add_str[128];
4483 unsigned char tag_str[128];
4484 unsigned char output[128];
4485 unsigned char tag_output[16];
4487 unsigned int key_len;
4488 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
4490 memset(key_str, 0x00, 128);
4491 memset(src_str, 0x00, 128);
4492 memset(dst_str, 0x00, 257);
4493 memset(iv_str, 0x00, 128);
4494 memset(add_str, 0x00, 128);
4495 memset(tag_str, 0x00, 128);
4496 memset(output, 0x00, 128);
4497 memset(tag_output, 0x00, 16);
4499 key_len =
unhexify( key_str,
"86e6c451ea0ecaec9e365bc4831e7a6c092b65ee9bcf1b86" );
4501 iv_len =
unhexify( iv_str,
"6258168da407ce43cc18d6931497c1f3" );
4504 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4507 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4508 hexify( dst_str, output, pt_len );
4509 hexify( tag_str, tag_output, tag_len );
4511 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4512 fct_chk( strcmp( (
char *) tag_str,
"cbf20172e75a6316" ) == 0 );
4518 FCT_TEST_BGN(gcm_nist_validation_aes_1921280032_0)
4520 unsigned char key_str[128];
4521 unsigned char src_str[128];
4522 unsigned char dst_str[257];
4523 unsigned char iv_str[128];
4524 unsigned char add_str[128];
4525 unsigned char tag_str[128];
4526 unsigned char output[128];
4527 unsigned char tag_output[16];
4529 unsigned int key_len;
4530 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
4532 memset(key_str, 0x00, 128);
4533 memset(src_str, 0x00, 128);
4534 memset(dst_str, 0x00, 257);
4535 memset(iv_str, 0x00, 128);
4536 memset(add_str, 0x00, 128);
4537 memset(tag_str, 0x00, 128);
4538 memset(output, 0x00, 128);
4539 memset(tag_output, 0x00, 16);
4541 key_len =
unhexify( key_str,
"9295cc6458d907da5e7c356a7de51eb8e8d3031f72a05fb7" );
4543 iv_len =
unhexify( iv_str,
"c7eaad3389fc24a4ef96a711ffbfff9e" );
4546 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4549 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4550 hexify( dst_str, output, pt_len );
4551 hexify( tag_str, tag_output, tag_len );
4553 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4554 fct_chk( strcmp( (
char *) tag_str,
"12508e37" ) == 0 );
4560 FCT_TEST_BGN(gcm_nist_validation_aes_1921280032_1)
4562 unsigned char key_str[128];
4563 unsigned char src_str[128];
4564 unsigned char dst_str[257];
4565 unsigned char iv_str[128];
4566 unsigned char add_str[128];
4567 unsigned char tag_str[128];
4568 unsigned char output[128];
4569 unsigned char tag_output[16];
4571 unsigned int key_len;
4572 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
4574 memset(key_str, 0x00, 128);
4575 memset(src_str, 0x00, 128);
4576 memset(dst_str, 0x00, 257);
4577 memset(iv_str, 0x00, 128);
4578 memset(add_str, 0x00, 128);
4579 memset(tag_str, 0x00, 128);
4580 memset(output, 0x00, 128);
4581 memset(tag_output, 0x00, 16);
4583 key_len =
unhexify( key_str,
"308b6ee958f81a7fbf3bc386e167459206df9c1cb999d904" );
4585 iv_len =
unhexify( iv_str,
"2c61b991ce478d9aac818d7aa75ada36" );
4588 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4591 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4592 hexify( dst_str, output, pt_len );
4593 hexify( tag_str, tag_output, tag_len );
4595 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4596 fct_chk( strcmp( (
char *) tag_str,
"32ead170" ) == 0 );
4602 FCT_TEST_BGN(gcm_nist_validation_aes_1921280032_2)
4604 unsigned char key_str[128];
4605 unsigned char src_str[128];
4606 unsigned char dst_str[257];
4607 unsigned char iv_str[128];
4608 unsigned char add_str[128];
4609 unsigned char tag_str[128];
4610 unsigned char output[128];
4611 unsigned char tag_output[16];
4613 unsigned int key_len;
4614 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
4616 memset(key_str, 0x00, 128);
4617 memset(src_str, 0x00, 128);
4618 memset(dst_str, 0x00, 257);
4619 memset(iv_str, 0x00, 128);
4620 memset(add_str, 0x00, 128);
4621 memset(tag_str, 0x00, 128);
4622 memset(output, 0x00, 128);
4623 memset(tag_output, 0x00, 16);
4625 key_len =
unhexify( key_str,
"873d033773218387690c2871448578d8440ef36553583928" );
4627 iv_len =
unhexify( iv_str,
"02072ec745c856c6e86873a0523d603a" );
4630 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4633 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4634 hexify( dst_str, output, pt_len );
4635 hexify( tag_str, tag_output, tag_len );
4637 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4638 fct_chk( strcmp( (
char *) tag_str,
"e6a5726b" ) == 0 );
4644 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024128_0)
4646 unsigned char key_str[128];
4647 unsigned char src_str[128];
4648 unsigned char dst_str[257];
4649 unsigned char iv_str[128];
4650 unsigned char add_str[128];
4651 unsigned char tag_str[128];
4652 unsigned char output[128];
4653 unsigned char tag_output[16];
4655 unsigned int key_len;
4656 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
4658 memset(key_str, 0x00, 128);
4659 memset(src_str, 0x00, 128);
4660 memset(dst_str, 0x00, 257);
4661 memset(iv_str, 0x00, 128);
4662 memset(add_str, 0x00, 128);
4663 memset(tag_str, 0x00, 128);
4664 memset(output, 0x00, 128);
4665 memset(tag_output, 0x00, 16);
4667 key_len =
unhexify( key_str,
"cfd9c1375dfd19e64b5e4b75022fabaa049627d5238cba3a" );
4669 iv_len =
unhexify( iv_str,
"0a745c6910b23c78b1b44c02f1ce11b2" );
4670 add_len =
unhexify( add_str,
"0cc6724b9f3675619fbc70117bfcfb5871e903b0f01382e404793c1dfaff5a5b4131a7fc3041014941dc2c53871bee3ff18c08e9abbb13a8ea220cb89cf65bea1581eb8ac43d148203532dad8854616210ed7f1f9467e6b22071ccc8bb7e3bd89a0ed02a7058401aa4f2b5d0ce050092b650591282e66ee789bbf032dc105503" );
4672 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4675 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4676 hexify( dst_str, output, pt_len );
4677 hexify( tag_str, tag_output, tag_len );
4679 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4680 fct_chk( strcmp( (
char *) tag_str,
"8ec41e9c76e96c031c18621b00c33a13" ) == 0 );
4686 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024128_1)
4688 unsigned char key_str[128];
4689 unsigned char src_str[128];
4690 unsigned char dst_str[257];
4691 unsigned char iv_str[128];
4692 unsigned char add_str[128];
4693 unsigned char tag_str[128];
4694 unsigned char output[128];
4695 unsigned char tag_output[16];
4697 unsigned int key_len;
4698 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
4700 memset(key_str, 0x00, 128);
4701 memset(src_str, 0x00, 128);
4702 memset(dst_str, 0x00, 257);
4703 memset(iv_str, 0x00, 128);
4704 memset(add_str, 0x00, 128);
4705 memset(tag_str, 0x00, 128);
4706 memset(output, 0x00, 128);
4707 memset(tag_output, 0x00, 16);
4709 key_len =
unhexify( key_str,
"6c9f16c5dff4bd8d1855995dcad1c4253759b6e2a833995b" );
4711 iv_len =
unhexify( iv_str,
"3f25e3210d6d9caa8725eb55c6813cef" );
4712 add_len =
unhexify( add_str,
"7c6a66d930c95ce1028310cfa3670b77ffeb5e9b627a667859665c1dee8e69930c287fb1f1a3706ed1a0d35eb6d1becb236352a226a5b686bc27e1e1dce4ac6d5974d88b9812b39ba289b2490821319b5fd677da23fab3adbae4fb3630e2571ac887ed951a49051b0cc551e7ebe924c0cbb1c516f71db60e24773430dc34f47b" );
4714 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4717 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4718 hexify( dst_str, output, pt_len );
4719 hexify( tag_str, tag_output, tag_len );
4721 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4722 fct_chk( strcmp( (
char *) tag_str,
"5e000478b55ecb080c1b685f24f255a9" ) == 0 );
4728 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024128_2)
4730 unsigned char key_str[128];
4731 unsigned char src_str[128];
4732 unsigned char dst_str[257];
4733 unsigned char iv_str[128];
4734 unsigned char add_str[128];
4735 unsigned char tag_str[128];
4736 unsigned char output[128];
4737 unsigned char tag_output[16];
4739 unsigned int key_len;
4740 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
4742 memset(key_str, 0x00, 128);
4743 memset(src_str, 0x00, 128);
4744 memset(dst_str, 0x00, 257);
4745 memset(iv_str, 0x00, 128);
4746 memset(add_str, 0x00, 128);
4747 memset(tag_str, 0x00, 128);
4748 memset(output, 0x00, 128);
4749 memset(tag_output, 0x00, 16);
4751 key_len =
unhexify( key_str,
"a8e393e00714cd94de0347351b924ebd555003f3a297493f" );
4753 iv_len =
unhexify( iv_str,
"9c7eaf730fa8074acd372fdc53b726c0" );
4754 add_len =
unhexify( add_str,
"ce4cb46e67d85c5e68afe61ddecb1a36da4de42774d45250d0d52b328834385ce1ceba96f703daab81d7a981cd80c469855e14d834df41e4c0c98873f3dbb777fc0562f284c466b701a530f27fc4e6838cecbd162db34b8e8a23131d60d1f9dac6c14d32a2141173f59f057f38af51a89a9c783afd3410de3f2bbd07b90a4eb2" );
4756 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4759 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4760 hexify( dst_str, output, pt_len );
4761 hexify( tag_str, tag_output, tag_len );
4763 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4764 fct_chk( strcmp( (
char *) tag_str,
"66bb46adf7b981f7c7e39cfffc53390f" ) == 0 );
4770 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024120_0)
4772 unsigned char key_str[128];
4773 unsigned char src_str[128];
4774 unsigned char dst_str[257];
4775 unsigned char iv_str[128];
4776 unsigned char add_str[128];
4777 unsigned char tag_str[128];
4778 unsigned char output[128];
4779 unsigned char tag_output[16];
4781 unsigned int key_len;
4782 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
4784 memset(key_str, 0x00, 128);
4785 memset(src_str, 0x00, 128);
4786 memset(dst_str, 0x00, 257);
4787 memset(iv_str, 0x00, 128);
4788 memset(add_str, 0x00, 128);
4789 memset(tag_str, 0x00, 128);
4790 memset(output, 0x00, 128);
4791 memset(tag_output, 0x00, 16);
4793 key_len =
unhexify( key_str,
"bd356a8acd12b06de9f63825e93664cab1beae7f4112cc70" );
4795 iv_len =
unhexify( iv_str,
"72eaf459b8af0f787e91d117931e3cdd" );
4796 add_len =
unhexify( add_str,
"9295b227be3e1faf4e969be6c7f20d507431cf5da9e2a577c9b31538058472683bd52f0ad3f2fa9f68159c1df88e7dde40d6612f8abb0f11a0078419b34b558d9144ea6596a09e5d5548b275620e5a3096dceb2768d2f77a0b79e0b963387d3016ecc2f155d9182e3209d97c76329b830bb62df195cb2be11223565f496e751a" );
4798 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4801 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4802 hexify( dst_str, output, pt_len );
4803 hexify( tag_str, tag_output, tag_len );
4805 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4806 fct_chk( strcmp( (
char *) tag_str,
"2ff4aecc90e2de9a7d3d15eb314cc8" ) == 0 );
4812 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024120_1)
4814 unsigned char key_str[128];
4815 unsigned char src_str[128];
4816 unsigned char dst_str[257];
4817 unsigned char iv_str[128];
4818 unsigned char add_str[128];
4819 unsigned char tag_str[128];
4820 unsigned char output[128];
4821 unsigned char tag_output[16];
4823 unsigned int key_len;
4824 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
4826 memset(key_str, 0x00, 128);
4827 memset(src_str, 0x00, 128);
4828 memset(dst_str, 0x00, 257);
4829 memset(iv_str, 0x00, 128);
4830 memset(add_str, 0x00, 128);
4831 memset(tag_str, 0x00, 128);
4832 memset(output, 0x00, 128);
4833 memset(tag_output, 0x00, 16);
4835 key_len =
unhexify( key_str,
"80ecc9587bc2cec1ba87ab431c7ed03926169c01eba19729" );
4837 iv_len =
unhexify( iv_str,
"5a65f279f453572e169db33807d9b52d" );
4838 add_len =
unhexify( add_str,
"29520d9020efa1ecf514e39a286f398c7225b945608d4b57ec873ae8bfbdd40e4cbd75b9b535c9f171cd7913ed4b21e09d6bb030eaa27ca58b08131817113c852b6cbdf550d94dddfde8595e689470cf92f9c20960b936ac0692171158e54041155482f29e4acae41565d87f5641d1aac96b8cb763b7f1267ccdbce234d067d4" );
4840 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4843 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4844 hexify( dst_str, output, pt_len );
4845 hexify( tag_str, tag_output, tag_len );
4847 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4848 fct_chk( strcmp( (
char *) tag_str,
"83dec0fb36463b86270656681455a0" ) == 0 );
4854 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024120_2)
4856 unsigned char key_str[128];
4857 unsigned char src_str[128];
4858 unsigned char dst_str[257];
4859 unsigned char iv_str[128];
4860 unsigned char add_str[128];
4861 unsigned char tag_str[128];
4862 unsigned char output[128];
4863 unsigned char tag_output[16];
4865 unsigned int key_len;
4866 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
4868 memset(key_str, 0x00, 128);
4869 memset(src_str, 0x00, 128);
4870 memset(dst_str, 0x00, 257);
4871 memset(iv_str, 0x00, 128);
4872 memset(add_str, 0x00, 128);
4873 memset(tag_str, 0x00, 128);
4874 memset(output, 0x00, 128);
4875 memset(tag_output, 0x00, 16);
4877 key_len =
unhexify( key_str,
"94345293fb7733fea9c8b94be2f4fc26f8c3655f583e2b0e" );
4879 iv_len =
unhexify( iv_str,
"8bad4f3f289b9f4063ba39622ba2b7ee" );
4880 add_len =
unhexify( add_str,
"7e2b6520d7a554e612d01f462606c0e6d0181bafece1daf54f4316d707483a5dcd4275a08caecc1c20f3e32872fe3e57fa62d598949f5e49ef0efd53e918617e0a140338c007025493f2e0f8dbe5fca4a57d1db6333551bbca79243a73ae8a68dafb3089998359159df916ee6ba4f928a6a173390f15f2ee6045d578dd757bb1" );
4882 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4885 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4886 hexify( dst_str, output, pt_len );
4887 hexify( tag_str, tag_output, tag_len );
4889 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4890 fct_chk( strcmp( (
char *) tag_str,
"da305181a12517420c6f0d71fd3ee1" ) == 0 );
4896 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024112_0)
4898 unsigned char key_str[128];
4899 unsigned char src_str[128];
4900 unsigned char dst_str[257];
4901 unsigned char iv_str[128];
4902 unsigned char add_str[128];
4903 unsigned char tag_str[128];
4904 unsigned char output[128];
4905 unsigned char tag_output[16];
4907 unsigned int key_len;
4908 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
4910 memset(key_str, 0x00, 128);
4911 memset(src_str, 0x00, 128);
4912 memset(dst_str, 0x00, 257);
4913 memset(iv_str, 0x00, 128);
4914 memset(add_str, 0x00, 128);
4915 memset(tag_str, 0x00, 128);
4916 memset(output, 0x00, 128);
4917 memset(tag_output, 0x00, 16);
4919 key_len =
unhexify( key_str,
"a3915523031c3caa58ce02c2b1e6ee2eb42cdaf31332432c" );
4921 iv_len =
unhexify( iv_str,
"d5416986beb3131afd6b7967836d243b" );
4922 add_len =
unhexify( add_str,
"ba4e883147c8f07afc08735e6e439798bec60e00ed3f5982f66d6b82a9af7580934112a9858f83abbd71193190298f0683453d3f8388c475fbbc8f9b6a3d2c77046b73986a54cc4559c57cbb86330267e04bcf5fd583c6d2968a7971da64c99d98623676154b0ee413ba531ebf12fce5e06b4ee0617e43bdaeb408b54d1b4445" );
4924 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4927 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4928 hexify( dst_str, output, pt_len );
4929 hexify( tag_str, tag_output, tag_len );
4931 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4932 fct_chk( strcmp( (
char *) tag_str,
"f273fe664e5190a506da28ea8307" ) == 0 );
4938 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024112_1)
4940 unsigned char key_str[128];
4941 unsigned char src_str[128];
4942 unsigned char dst_str[257];
4943 unsigned char iv_str[128];
4944 unsigned char add_str[128];
4945 unsigned char tag_str[128];
4946 unsigned char output[128];
4947 unsigned char tag_output[16];
4949 unsigned int key_len;
4950 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
4952 memset(key_str, 0x00, 128);
4953 memset(src_str, 0x00, 128);
4954 memset(dst_str, 0x00, 257);
4955 memset(iv_str, 0x00, 128);
4956 memset(add_str, 0x00, 128);
4957 memset(tag_str, 0x00, 128);
4958 memset(output, 0x00, 128);
4959 memset(tag_output, 0x00, 16);
4961 key_len =
unhexify( key_str,
"799d3ff266644128f330ceb8c028297991b2a5593e4afa3b" );
4963 iv_len =
unhexify( iv_str,
"9d27061dd9d50817b3086f453f1f401a" );
4964 add_len =
unhexify( add_str,
"d3b5c420ac597daaac7503cd17f580e94ad779fae0d4199ada2c7da7c4a611228752375647a03241f29f810d3a6a74a140ef9651e4a6099259f7d41ec4e51a02917e8cc35edf7f60ffc473805f56f0ad51fcc767670157c050c3214d36f831a54bfeb7ab2039cb10f7919b89b0f623a572aaed313983b105fdff495d979b8a84" );
4966 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
4969 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
4970 hexify( dst_str, output, pt_len );
4971 hexify( tag_str, tag_output, tag_len );
4973 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
4974 fct_chk( strcmp( (
char *) tag_str,
"e690c9afdecea2494b6cf5a576bd" ) == 0 );
4980 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024112_2)
4982 unsigned char key_str[128];
4983 unsigned char src_str[128];
4984 unsigned char dst_str[257];
4985 unsigned char iv_str[128];
4986 unsigned char add_str[128];
4987 unsigned char tag_str[128];
4988 unsigned char output[128];
4989 unsigned char tag_output[16];
4991 unsigned int key_len;
4992 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
4994 memset(key_str, 0x00, 128);
4995 memset(src_str, 0x00, 128);
4996 memset(dst_str, 0x00, 257);
4997 memset(iv_str, 0x00, 128);
4998 memset(add_str, 0x00, 128);
4999 memset(tag_str, 0x00, 128);
5000 memset(output, 0x00, 128);
5001 memset(tag_output, 0x00, 16);
5003 key_len =
unhexify( key_str,
"7480905cee8be7f42b9490936041a19b060331712882da55" );
5005 iv_len =
unhexify( iv_str,
"27500a09506e0133c88f65e77721b547" );
5006 add_len =
unhexify( add_str,
"52832d4118fddf182b21513db25d54a19220335f8676ea35c0941d2a38a3aa536b8c9cbf093de83c6b24da3372baba2826289bb3cac415795b9bd3ea62bb9b48450978e79b936cd70cd551e580a6de3418a2be0f4c1f062954aed6adc94d805e59ff703d239fc2318b80cee45c57f916977b319a9ce884d7e02726fdb71c3287" );
5008 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5011 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5012 hexify( dst_str, output, pt_len );
5013 hexify( tag_str, tag_output, tag_len );
5015 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5016 fct_chk( strcmp( (
char *) tag_str,
"52a5721e98ba1a553d8e550f137c" ) == 0 );
5022 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024104_0)
5024 unsigned char key_str[128];
5025 unsigned char src_str[128];
5026 unsigned char dst_str[257];
5027 unsigned char iv_str[128];
5028 unsigned char add_str[128];
5029 unsigned char tag_str[128];
5030 unsigned char output[128];
5031 unsigned char tag_output[16];
5033 unsigned int key_len;
5034 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
5036 memset(key_str, 0x00, 128);
5037 memset(src_str, 0x00, 128);
5038 memset(dst_str, 0x00, 257);
5039 memset(iv_str, 0x00, 128);
5040 memset(add_str, 0x00, 128);
5041 memset(tag_str, 0x00, 128);
5042 memset(output, 0x00, 128);
5043 memset(tag_output, 0x00, 16);
5045 key_len =
unhexify( key_str,
"042db3f8af95ad68966bce9ca0297ed41b608683a37457f5" );
5047 iv_len =
unhexify( iv_str,
"32d3e97edd3f393da5abc3827cae1e67" );
5048 add_len =
unhexify( add_str,
"4d7c2ee6e024e95a6e684ded9898f5c7fae7da8658bdb40560dac6495e46a691e97c047e66046b55e8cf9b02d31d3caeebe3a9f8aeed756d6b0da1ac5d4ba2c5e7b54add22f681ab1d5a2ac1463e8447e08592e0c2f32605bd02f2f03c925a2159e5bdd880323f4ce18a826a00962ce418dbbd5c276e3ff30f1cbaa4795d1ce5" );
5050 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5053 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5054 hexify( dst_str, output, pt_len );
5055 hexify( tag_str, tag_output, tag_len );
5057 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5058 fct_chk( strcmp( (
char *) tag_str,
"e2afbb95a4944353ed21851f10" ) == 0 );
5064 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024104_1)
5066 unsigned char key_str[128];
5067 unsigned char src_str[128];
5068 unsigned char dst_str[257];
5069 unsigned char iv_str[128];
5070 unsigned char add_str[128];
5071 unsigned char tag_str[128];
5072 unsigned char output[128];
5073 unsigned char tag_output[16];
5075 unsigned int key_len;
5076 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
5078 memset(key_str, 0x00, 128);
5079 memset(src_str, 0x00, 128);
5080 memset(dst_str, 0x00, 257);
5081 memset(iv_str, 0x00, 128);
5082 memset(add_str, 0x00, 128);
5083 memset(tag_str, 0x00, 128);
5084 memset(output, 0x00, 128);
5085 memset(tag_output, 0x00, 16);
5087 key_len =
unhexify( key_str,
"7f5ea90f99fc76594f0f06448321bd4bb5e494a5e351e41b" );
5089 iv_len =
unhexify( iv_str,
"002a5da3c543ca56dd7e5b013b094f70" );
5090 add_len =
unhexify( add_str,
"b8150b50e36de85158a96d2096678f31f179c8765ae6ba5723ca655e890528eae96d438f9d9365575dadea3cebb4d7df3a9d5323f93696c40781a6661dd4849531e672f5cee7cdfc529416c9c3faa889d0f66ee4049c949c3c8459680f490bbb0a25e50af54de57d9e3241e0dff72604af55827b9c4d61b7d1a89f551cea2956" );
5092 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5095 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5096 hexify( dst_str, output, pt_len );
5097 hexify( tag_str, tag_output, tag_len );
5099 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5100 fct_chk( strcmp( (
char *) tag_str,
"db9fd90a0be35a29f805989410" ) == 0 );
5106 FCT_TEST_BGN(gcm_nist_validation_aes_19212801024104_2)
5108 unsigned char key_str[128];
5109 unsigned char src_str[128];
5110 unsigned char dst_str[257];
5111 unsigned char iv_str[128];
5112 unsigned char add_str[128];
5113 unsigned char tag_str[128];
5114 unsigned char output[128];
5115 unsigned char tag_output[16];
5117 unsigned int key_len;
5118 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
5120 memset(key_str, 0x00, 128);
5121 memset(src_str, 0x00, 128);
5122 memset(dst_str, 0x00, 257);
5123 memset(iv_str, 0x00, 128);
5124 memset(add_str, 0x00, 128);
5125 memset(tag_str, 0x00, 128);
5126 memset(output, 0x00, 128);
5127 memset(tag_output, 0x00, 16);
5129 key_len =
unhexify( key_str,
"da287d34379d56f542edb02ea673bac097150f87648a57b9" );
5131 iv_len =
unhexify( iv_str,
"6696034b1b362927b89ae1b7ab5297d7" );
5132 add_len =
unhexify( add_str,
"45818b7b69b05a121fe5c573c9903cb11477873b24a544ba919baec78d1565f4ad0766da58bfabfaa17ac3c628238a4d38b5c0b14b52e397bcac991408dd7b322ff614bd697ce2b5b94ca155a4442ddd9e502c4a5f81210c32dff33481f4211897db38f619b308f3708d554bdb6c7b8a4d2a80ccdfd5f70501c83502a312ca8a" );
5134 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5137 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5138 hexify( dst_str, output, pt_len );
5139 hexify( tag_str, tag_output, tag_len );
5141 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5142 fct_chk( strcmp( (
char *) tag_str,
"8e65d86edc071446454a1bef34" ) == 0 );
5148 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102496_0)
5150 unsigned char key_str[128];
5151 unsigned char src_str[128];
5152 unsigned char dst_str[257];
5153 unsigned char iv_str[128];
5154 unsigned char add_str[128];
5155 unsigned char tag_str[128];
5156 unsigned char output[128];
5157 unsigned char tag_output[16];
5159 unsigned int key_len;
5160 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
5162 memset(key_str, 0x00, 128);
5163 memset(src_str, 0x00, 128);
5164 memset(dst_str, 0x00, 257);
5165 memset(iv_str, 0x00, 128);
5166 memset(add_str, 0x00, 128);
5167 memset(tag_str, 0x00, 128);
5168 memset(output, 0x00, 128);
5169 memset(tag_output, 0x00, 16);
5171 key_len =
unhexify( key_str,
"1782ac334cbffc92769a170c3cd43915f735b4423ebb4dc3" );
5173 iv_len =
unhexify( iv_str,
"736f2f24cd04e26d38e69c55b38cca7a" );
5174 add_len =
unhexify( add_str,
"5827d391efec2f8f102e5f053ac496e2910248a0eb72e8a0b3bf377c6349df02ab0410a3d28bc27abc7cbe582a03000db57843565e4fb06c4078de75c3f1a21130d55befb7ecb919ad789a4de2816c3a42d4e9b32e38d980c06045987d03739cbe7710d839c42f04f5088072c1a1044c3b89809b780e74e54ec135fbe4129ee0" );
5176 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5179 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5180 hexify( dst_str, output, pt_len );
5181 hexify( tag_str, tag_output, tag_len );
5183 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5184 fct_chk( strcmp( (
char *) tag_str,
"c6dc3c4ae52f3948503d84a4" ) == 0 );
5190 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102496_1)
5192 unsigned char key_str[128];
5193 unsigned char src_str[128];
5194 unsigned char dst_str[257];
5195 unsigned char iv_str[128];
5196 unsigned char add_str[128];
5197 unsigned char tag_str[128];
5198 unsigned char output[128];
5199 unsigned char tag_output[16];
5201 unsigned int key_len;
5202 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
5204 memset(key_str, 0x00, 128);
5205 memset(src_str, 0x00, 128);
5206 memset(dst_str, 0x00, 257);
5207 memset(iv_str, 0x00, 128);
5208 memset(add_str, 0x00, 128);
5209 memset(tag_str, 0x00, 128);
5210 memset(output, 0x00, 128);
5211 memset(tag_output, 0x00, 16);
5213 key_len =
unhexify( key_str,
"20529c374f21c97b0a8f96f7bd5bdeb3fcd2b12db30b3ee4" );
5215 iv_len =
unhexify( iv_str,
"e6e45b7c28f7fbcae658acb533614e48" );
5216 add_len =
unhexify( add_str,
"b41290031906709ec8048f450a940eff0422a6ebc7b44666c05f17aec9debc1bfecce62d896d5df4618517fb57ce7b04ef1579ebb2636da0eead063bc74ec184b0a69ca3eba675fc7107bb52a49f93783608677565205ada7bf5a731441e44cede781120a026cc93cfe06a06fb3104a521c6987f1070823e5a880cbb3a8ecc88" );
5218 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5221 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5222 hexify( dst_str, output, pt_len );
5223 hexify( tag_str, tag_output, tag_len );
5225 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5226 fct_chk( strcmp( (
char *) tag_str,
"e9ec5ad57892ce18babfde73" ) == 0 );
5232 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102496_2)
5234 unsigned char key_str[128];
5235 unsigned char src_str[128];
5236 unsigned char dst_str[257];
5237 unsigned char iv_str[128];
5238 unsigned char add_str[128];
5239 unsigned char tag_str[128];
5240 unsigned char output[128];
5241 unsigned char tag_output[16];
5243 unsigned int key_len;
5244 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
5246 memset(key_str, 0x00, 128);
5247 memset(src_str, 0x00, 128);
5248 memset(dst_str, 0x00, 257);
5249 memset(iv_str, 0x00, 128);
5250 memset(add_str, 0x00, 128);
5251 memset(tag_str, 0x00, 128);
5252 memset(output, 0x00, 128);
5253 memset(tag_output, 0x00, 16);
5255 key_len =
unhexify( key_str,
"5634789b29e373760ecb9952f4b94ca76f40dda57ba363dd" );
5257 iv_len =
unhexify( iv_str,
"7cd1d2d6beef44a6d6155181dfca3dc6" );
5258 add_len =
unhexify( add_str,
"0130a67935e2df082a95d0bc6dab17093fb08746a809cc82da7893c97c5efc0065388bb85c9c2986a481cc4bbdeb6e0f62d6cd22b7785a1662c70ca92a796341e90a538fe6e072976d41f2f59787d5a23c24d95a4ca73ce92a1048f0b1c79e454fb446d16587737f7cc335124b0a8fb32205e66b93bc135ad310b35eea0f670e" );
5260 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5263 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5264 hexify( dst_str, output, pt_len );
5265 hexify( tag_str, tag_output, tag_len );
5267 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5268 fct_chk( strcmp( (
char *) tag_str,
"4006685e2d317a1c74ef5024" ) == 0 );
5274 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102464_0)
5276 unsigned char key_str[128];
5277 unsigned char src_str[128];
5278 unsigned char dst_str[257];
5279 unsigned char iv_str[128];
5280 unsigned char add_str[128];
5281 unsigned char tag_str[128];
5282 unsigned char output[128];
5283 unsigned char tag_output[16];
5285 unsigned int key_len;
5286 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
5288 memset(key_str, 0x00, 128);
5289 memset(src_str, 0x00, 128);
5290 memset(dst_str, 0x00, 257);
5291 memset(iv_str, 0x00, 128);
5292 memset(add_str, 0x00, 128);
5293 memset(tag_str, 0x00, 128);
5294 memset(output, 0x00, 128);
5295 memset(tag_output, 0x00, 16);
5297 key_len =
unhexify( key_str,
"f0072110572321ad9804efb5bcbc2ae7b271b1cbb0f4897b" );
5299 iv_len =
unhexify( iv_str,
"604ed8056666b17fd27b111afd419375" );
5300 add_len =
unhexify( add_str,
"97f68c00513b2247bc88a331a3ffa1208038736d6761b3b080884a8dd46e0596f2c00c1a93bceeeee814210e57d7f1cbdb4e0c2ea6a0834baf716945af9aa98e2826ae0eb5717b241ede2b9e873f94c1db9eb5e1b25f75827c25849a2c7b92098b54845ed81f52871a2b0d12d317846cec34defaaafc3bd3cc53a6ab812bd250" );
5302 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5305 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5306 hexify( dst_str, output, pt_len );
5307 hexify( tag_str, tag_output, tag_len );
5309 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5310 fct_chk( strcmp( (
char *) tag_str,
"64881eaf78aeaa7d" ) == 0 );
5316 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102464_1)
5318 unsigned char key_str[128];
5319 unsigned char src_str[128];
5320 unsigned char dst_str[257];
5321 unsigned char iv_str[128];
5322 unsigned char add_str[128];
5323 unsigned char tag_str[128];
5324 unsigned char output[128];
5325 unsigned char tag_output[16];
5327 unsigned int key_len;
5328 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
5330 memset(key_str, 0x00, 128);
5331 memset(src_str, 0x00, 128);
5332 memset(dst_str, 0x00, 257);
5333 memset(iv_str, 0x00, 128);
5334 memset(add_str, 0x00, 128);
5335 memset(tag_str, 0x00, 128);
5336 memset(output, 0x00, 128);
5337 memset(tag_output, 0x00, 16);
5339 key_len =
unhexify( key_str,
"e91e8c2d6928bbaf870e141ee34d3a56d00dacc8c7e50514" );
5341 iv_len =
unhexify( iv_str,
"6f3d661a3e321844d1fc12d5ec2becf6" );
5342 add_len =
unhexify( add_str,
"fc8e5b45ad1647f9dbdbb6b437abecf0a8ac66065d0e250aa2ae75525455ee13adce8c59d643b96de9002d780db64f1eb9d823c6b9a4238171db26bf5d05153d1e3c839b93495084363b845fed75671ace0c009800454596674217b19832751252f051f3995776a89209c1636b4f4b28a364bccdedb78ad36876745c1a438406" );
5344 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5347 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5348 hexify( dst_str, output, pt_len );
5349 hexify( tag_str, tag_output, tag_len );
5351 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5352 fct_chk( strcmp( (
char *) tag_str,
"1f4f495adfed6c1e" ) == 0 );
5358 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102464_2)
5360 unsigned char key_str[128];
5361 unsigned char src_str[128];
5362 unsigned char dst_str[257];
5363 unsigned char iv_str[128];
5364 unsigned char add_str[128];
5365 unsigned char tag_str[128];
5366 unsigned char output[128];
5367 unsigned char tag_output[16];
5369 unsigned int key_len;
5370 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
5372 memset(key_str, 0x00, 128);
5373 memset(src_str, 0x00, 128);
5374 memset(dst_str, 0x00, 257);
5375 memset(iv_str, 0x00, 128);
5376 memset(add_str, 0x00, 128);
5377 memset(tag_str, 0x00, 128);
5378 memset(output, 0x00, 128);
5379 memset(tag_output, 0x00, 16);
5381 key_len =
unhexify( key_str,
"138ff9c8c556ffe7637f7602cae428d7e20dff882d44ddc3" );
5383 iv_len =
unhexify( iv_str,
"38d7005fadee55b5a0434d924d971491" );
5384 add_len =
unhexify( add_str,
"3facceb047e486998c945839ee5eddd67054bbb28308365b2909dabaed29fd5b7b34644043fa443165e07b20214710cd652fecd816d9273c700d6828d216db8f3ceaa9eed0e251585f4ee5ba4beb3c0582b8128a3ecc01f4b29cab099ba2a8931e56120802fdf6004a6c02e6dd00257a83adc95b3acb270e8000fd2126b8eb83" );
5386 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5389 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5390 hexify( dst_str, output, pt_len );
5391 hexify( tag_str, tag_output, tag_len );
5393 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5394 fct_chk( strcmp( (
char *) tag_str,
"fa8aed1987868388" ) == 0 );
5400 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102432_0)
5402 unsigned char key_str[128];
5403 unsigned char src_str[128];
5404 unsigned char dst_str[257];
5405 unsigned char iv_str[128];
5406 unsigned char add_str[128];
5407 unsigned char tag_str[128];
5408 unsigned char output[128];
5409 unsigned char tag_output[16];
5411 unsigned int key_len;
5412 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
5414 memset(key_str, 0x00, 128);
5415 memset(src_str, 0x00, 128);
5416 memset(dst_str, 0x00, 257);
5417 memset(iv_str, 0x00, 128);
5418 memset(add_str, 0x00, 128);
5419 memset(tag_str, 0x00, 128);
5420 memset(output, 0x00, 128);
5421 memset(tag_output, 0x00, 16);
5423 key_len =
unhexify( key_str,
"1187a34ccb75fc06dafeca0235186c64ba929adac6cf6e49" );
5425 iv_len =
unhexify( iv_str,
"9dd515d3481f21efbe43198f623b34f7" );
5426 add_len =
unhexify( add_str,
"8a1b00ea5d1f4e451cea71b3d2fc9bb03b9790a8ae8ae262b3e97ebf34911f9d865c8810b9fe779fff701c72f3639654e60898d1f57eb93381749f0e2cecb4ee342f5f34473215d5c46818338ff688637217fdfa8b7ee552db01973fdb6084c3c20b530863eeb1ce798046890994f5625df2a56042d62742097cc10d512a543a" );
5428 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5431 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5432 hexify( dst_str, output, pt_len );
5433 hexify( tag_str, tag_output, tag_len );
5435 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5436 fct_chk( strcmp( (
char *) tag_str,
"83f45529" ) == 0 );
5442 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102432_1)
5444 unsigned char key_str[128];
5445 unsigned char src_str[128];
5446 unsigned char dst_str[257];
5447 unsigned char iv_str[128];
5448 unsigned char add_str[128];
5449 unsigned char tag_str[128];
5450 unsigned char output[128];
5451 unsigned char tag_output[16];
5453 unsigned int key_len;
5454 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
5456 memset(key_str, 0x00, 128);
5457 memset(src_str, 0x00, 128);
5458 memset(dst_str, 0x00, 257);
5459 memset(iv_str, 0x00, 128);
5460 memset(add_str, 0x00, 128);
5461 memset(tag_str, 0x00, 128);
5462 memset(output, 0x00, 128);
5463 memset(tag_output, 0x00, 16);
5465 key_len =
unhexify( key_str,
"4c1052610d05fb77543b6b517eb64b487ed902f9969a420f" );
5467 iv_len =
unhexify( iv_str,
"90f4c93301371158271a8f46df1c86c9" );
5468 add_len =
unhexify( add_str,
"83d009a1238f8aa40e36cbddf08a5f3d96403a03f7d079359cd6d3d0c719bf79c908654882919dbc6c27db34007b6732cb344a0f4babd26b1209ce6b134a8d2318f9a38af034b265562097b63794d7efee306e97c6ac0a991b3764ecd936c87000fa58e6689e302f12c2851b1ffc950dad7a553c8c67e01a2270e1e5e9caf30a" );
5470 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5473 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5474 hexify( dst_str, output, pt_len );
5475 hexify( tag_str, tag_output, tag_len );
5477 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5478 fct_chk( strcmp( (
char *) tag_str,
"30b3fd85" ) == 0 );
5484 FCT_TEST_BGN(gcm_nist_validation_aes_1921280102432_2)
5486 unsigned char key_str[128];
5487 unsigned char src_str[128];
5488 unsigned char dst_str[257];
5489 unsigned char iv_str[128];
5490 unsigned char add_str[128];
5491 unsigned char tag_str[128];
5492 unsigned char output[128];
5493 unsigned char tag_output[16];
5495 unsigned int key_len;
5496 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
5498 memset(key_str, 0x00, 128);
5499 memset(src_str, 0x00, 128);
5500 memset(dst_str, 0x00, 257);
5501 memset(iv_str, 0x00, 128);
5502 memset(add_str, 0x00, 128);
5503 memset(tag_str, 0x00, 128);
5504 memset(output, 0x00, 128);
5505 memset(tag_output, 0x00, 16);
5507 key_len =
unhexify( key_str,
"3dc62e54957bdd1968be71b7d205fedaa291349d69f2854f" );
5509 iv_len =
unhexify( iv_str,
"b8bce0f9263688ca41c4cefb26e79453" );
5510 add_len =
unhexify( add_str,
"22b6d92d8908bbdbcd0ff35299eddaf0cfb039befa2d2d83c896f373b92091d145f1771c58d60f94d3548d0cbbeabeb796d7632b5da3c66ef75cb41a35e7d1b032ccfbddbb9423e0ee054bd56b6288bdf1b616492c85393e4134ff9c066b23f3f626eac63a5fe191ce61810379c698de62922d3bdbe30697a3e3e78190756c3d" );
5512 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5515 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5516 hexify( dst_str, output, pt_len );
5517 hexify( tag_str, tag_output, tag_len );
5519 fct_chk( strcmp( (
char *) dst_str,
"" ) == 0 );
5520 fct_chk( strcmp( (
char *) tag_str,
"67887aeb" ) == 0 );
5526 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240128_0)
5528 unsigned char key_str[128];
5529 unsigned char src_str[128];
5530 unsigned char dst_str[257];
5531 unsigned char iv_str[128];
5532 unsigned char add_str[128];
5533 unsigned char tag_str[128];
5534 unsigned char output[128];
5535 unsigned char tag_output[16];
5537 unsigned int key_len;
5538 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
5540 memset(key_str, 0x00, 128);
5541 memset(src_str, 0x00, 128);
5542 memset(dst_str, 0x00, 257);
5543 memset(iv_str, 0x00, 128);
5544 memset(add_str, 0x00, 128);
5545 memset(tag_str, 0x00, 128);
5546 memset(output, 0x00, 128);
5547 memset(tag_output, 0x00, 16);
5549 key_len =
unhexify( key_str,
"f170a6a761090355592968d67fb3514b8bfdb41cbf121341" );
5550 pt_len =
unhexify( src_str,
"a050f858c87d56dfcba3ac1ccf5ba60628b3ab1b89845682a95b7f291c80f6eb1cbced4fa21e3584e21528746231e7311ec319a0fcecc329e1a7aaed0a8548e613e51db78c86c8d0cefa15e30b745b952809f87d8a4a7bbefc76a8eb824827d4334201bda7743dc497ef5fffa2812e67f2a04e5c10bf464179c6178db932ecd3" );
5551 iv_len =
unhexify( iv_str,
"e02ef73aee414041b137dd3cae8f2765" );
5554 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5557 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5558 hexify( dst_str, output, pt_len );
5559 hexify( tag_str, tag_output, tag_len );
5561 fct_chk( strcmp( (
char *) dst_str,
"c08c9bccf298c8a352cd72e9174f57dc9bf64d65191a9e97b43ce70afacfe76feb5b2695d72ea4635fa94144de02a54333a77c7d4adcde17c166b303f1d664e6edb081a85433a7496f91ce640f113935cdd4e7ad14c95247506ddc6620913b5c67422f599ca00b95d62a9371e44c5af5295bf96743d0f1228c96e95af3b4d366" ) == 0 );
5562 fct_chk( strcmp( (
char *) tag_str,
"d64d9ac91548dc1bad618509633e0c25" ) == 0 );
5568 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240128_1)
5570 unsigned char key_str[128];
5571 unsigned char src_str[128];
5572 unsigned char dst_str[257];
5573 unsigned char iv_str[128];
5574 unsigned char add_str[128];
5575 unsigned char tag_str[128];
5576 unsigned char output[128];
5577 unsigned char tag_output[16];
5579 unsigned int key_len;
5580 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
5582 memset(key_str, 0x00, 128);
5583 memset(src_str, 0x00, 128);
5584 memset(dst_str, 0x00, 257);
5585 memset(iv_str, 0x00, 128);
5586 memset(add_str, 0x00, 128);
5587 memset(tag_str, 0x00, 128);
5588 memset(output, 0x00, 128);
5589 memset(tag_output, 0x00, 16);
5591 key_len =
unhexify( key_str,
"2ce5a40618b8bb2d9fc1d87a3333a9cd4945cfa838c8e0c6" );
5592 pt_len =
unhexify( src_str,
"4ad4d103da3fb2ef8adcd1e0e823f4a857f1d6fa6273bb66574033c18ba2f760951ee0fdbe06c5cd3a0a30bd11142450f2d7e71af2fa7b9556b663fc30766508aa24e1fb2219f30ec23a6cd48b58944541d1f3e3fbf596e2ef263bddf789e7a666a68638081f0ec1a6cb3cb7feb0fddbe323b307675324ebceb25cba6d9002d4" );
5593 iv_len =
unhexify( iv_str,
"0c4b6c940d091efee98bf27fad79b04e" );
5596 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5599 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5600 hexify( dst_str, output, pt_len );
5601 hexify( tag_str, tag_output, tag_len );
5603 fct_chk( strcmp( (
char *) dst_str,
"ad611dd6ebaeb5a634d4bfba9f965948ea79d16294b976b7c8bb57240c5d13e10a9fe7a5b5d39143000b4f24fc331cc4988685c8d6401593a420c12e6cbd7cded06504d6a1034f70153f7b5019084a66ce818761841cab52d5bcb2a579a4acd9df50caf582bc6da2b94d4b3b78922850993ccec560795417016e55cfab651473" ) == 0 );
5604 fct_chk( strcmp( (
char *) tag_str,
"317596eefdc011081f1dda6dae748a53" ) == 0 );
5610 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240128_2)
5612 unsigned char key_str[128];
5613 unsigned char src_str[128];
5614 unsigned char dst_str[257];
5615 unsigned char iv_str[128];
5616 unsigned char add_str[128];
5617 unsigned char tag_str[128];
5618 unsigned char output[128];
5619 unsigned char tag_output[16];
5621 unsigned int key_len;
5622 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
5624 memset(key_str, 0x00, 128);
5625 memset(src_str, 0x00, 128);
5626 memset(dst_str, 0x00, 257);
5627 memset(iv_str, 0x00, 128);
5628 memset(add_str, 0x00, 128);
5629 memset(tag_str, 0x00, 128);
5630 memset(output, 0x00, 128);
5631 memset(tag_output, 0x00, 16);
5633 key_len =
unhexify( key_str,
"f71d789a63213bbe17aa14f2956e9da2496a1efd1a63f6a5" );
5634 pt_len =
unhexify( src_str,
"f5bf20dc6a11ce5142ff34d6c4771dbee4e74790c4ccd3cb5af408a5c7bd706bac550d7ed56805f550efc7648ab501fbbc63a1070402626c5788f076ae40e6bef2b9aab9a4bd8550fe38f7cdb0fcca2657ca26f1f729074326f45ae932182905d849b1534d3effe20dbfc3fc26dc6453d6544d481e58891405dbf876d0f254e8" );
5635 iv_len =
unhexify( iv_str,
"17327996f18c7096fc5b8e375ed86f47" );
5638 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5641 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5642 hexify( dst_str, output, pt_len );
5643 hexify( tag_str, tag_output, tag_len );
5645 fct_chk( strcmp( (
char *) dst_str,
"fed961a497502b2e49043ff29b9426a1e864a7fe0a88281a1572fbe62203f071710ea1d77873906369b195919a7bd5b44cbabab6eee23c3692cb8b9e4db7ee595b8d4b063d209b11d64150c45545b7eda984144e1d336a3bd3f187834bbc6950b3e7cd84895a3a5e27f8394a9aa9b657fba77181c9040b741c12fc40e849ba4b" ) == 0 );
5646 fct_chk( strcmp( (
char *) tag_str,
"9dba8faf9d12905970ba0e29bc7e9dc4" ) == 0 );
5652 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240120_0)
5654 unsigned char key_str[128];
5655 unsigned char src_str[128];
5656 unsigned char dst_str[257];
5657 unsigned char iv_str[128];
5658 unsigned char add_str[128];
5659 unsigned char tag_str[128];
5660 unsigned char output[128];
5661 unsigned char tag_output[16];
5663 unsigned int key_len;
5664 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
5666 memset(key_str, 0x00, 128);
5667 memset(src_str, 0x00, 128);
5668 memset(dst_str, 0x00, 257);
5669 memset(iv_str, 0x00, 128);
5670 memset(add_str, 0x00, 128);
5671 memset(tag_str, 0x00, 128);
5672 memset(output, 0x00, 128);
5673 memset(tag_output, 0x00, 16);
5675 key_len =
unhexify( key_str,
"83182ba753ac16554e873281599113b7620bdb042704bce8" );
5676 pt_len =
unhexify( src_str,
"6915d46189fcb0f9ab9b838da2124ce06398d638fec9c1c53f07a43fa0ea09feb2bf868fd1dd521f301f9f38e2e76716038f34cc0d18ab9bf27ac282dc349002427ca774e211027baacb9f6bfad6fd7885a665e508f654bb018f0323215153cd3a5b3e7b83482c08cf07ee5ef91d64a671b3ef22801ff21cfae95d6843ccdc16" );
5677 iv_len =
unhexify( iv_str,
"805c6b736d62f69a4c2cd4aa3745a615" );
5680 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5683 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5684 hexify( dst_str, output, pt_len );
5685 hexify( tag_str, tag_output, tag_len );
5687 fct_chk( strcmp( (
char *) dst_str,
"76dcefca6305ded697be4488513cc3fd3d9f08f06a7c1a9133b9b3fb0f44badf5c7544881b5babcb873cab912cc8a00337fc36100e6a5ad998eac5d8568795b41166377c5114757044b9b73206d19fc34b6378a06d55b5d5e9498c7693e818dd962af9b9da2345f4ebf152f33fe85f3398a65ad7dec823a1b1155c38cf67df84" ) == 0 );
5688 fct_chk( strcmp( (
char *) tag_str,
"746c9972aa8481253d0d54db77398a" ) == 0 );
5694 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240120_1)
5696 unsigned char key_str[128];
5697 unsigned char src_str[128];
5698 unsigned char dst_str[257];
5699 unsigned char iv_str[128];
5700 unsigned char add_str[128];
5701 unsigned char tag_str[128];
5702 unsigned char output[128];
5703 unsigned char tag_output[16];
5705 unsigned int key_len;
5706 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
5708 memset(key_str, 0x00, 128);
5709 memset(src_str, 0x00, 128);
5710 memset(dst_str, 0x00, 257);
5711 memset(iv_str, 0x00, 128);
5712 memset(add_str, 0x00, 128);
5713 memset(tag_str, 0x00, 128);
5714 memset(output, 0x00, 128);
5715 memset(tag_output, 0x00, 16);
5717 key_len =
unhexify( key_str,
"b176e7a68da4c74aeb91760448c0257b1e17101299e1405c" );
5718 pt_len =
unhexify( src_str,
"691c436811f82e747468571f80fa8502ef5f25936fca58a8fb6b619a7a95f4938da558a3b26a2f09c8fc1f5bd347c7724d9fa377d0a52094bfaac88f3fa9b3dacc2f56d880e825809533da5980a63e01d6199fbea07f3d070e29c5d50e1013224f0ea86e7c008e3a2e63df394ef6ad93ea97d73fd4429feee495b144ef3a0d6c" );
5719 iv_len =
unhexify( iv_str,
"42e2e70b0096ebd489bfcf4d6ac0f2a4" );
5722 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5725 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5726 hexify( dst_str, output, pt_len );
5727 hexify( tag_str, tag_output, tag_len );
5729 fct_chk( strcmp( (
char *) dst_str,
"81f9c34c5b0668fd58ec8822c6ba75bd7eb0d1741260fad6ad5e637903aa29d5f5facaccb4b885f62e10b7371f9b6b43e3aeb69bc5093bcccd49f3ee744e49f87cd2a2c36c808c47e4687194cbfd4faec4da66b99e3d4ced9cb8ac6ffb94d7fef3ae2b92b9f613f2bda3ca6c8efa9c6df8bec998e455f6eb48519e8f8ce4e526" ) == 0 );
5730 fct_chk( strcmp( (
char *) tag_str,
"26d0921dbb7987ef4eb428c04a583d" ) == 0 );
5736 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240120_2)
5738 unsigned char key_str[128];
5739 unsigned char src_str[128];
5740 unsigned char dst_str[257];
5741 unsigned char iv_str[128];
5742 unsigned char add_str[128];
5743 unsigned char tag_str[128];
5744 unsigned char output[128];
5745 unsigned char tag_output[16];
5747 unsigned int key_len;
5748 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
5750 memset(key_str, 0x00, 128);
5751 memset(src_str, 0x00, 128);
5752 memset(dst_str, 0x00, 257);
5753 memset(iv_str, 0x00, 128);
5754 memset(add_str, 0x00, 128);
5755 memset(tag_str, 0x00, 128);
5756 memset(output, 0x00, 128);
5757 memset(tag_output, 0x00, 16);
5759 key_len =
unhexify( key_str,
"8bab5bf1cd8f259129ce358cc56ace2bbbbaefa79727f66e" );
5760 pt_len =
unhexify( src_str,
"57385955b9909a0856bf54ad25d00779cd7d3dea78e1ae8965c4b7a568934d15ba1a7b2ab899f69fb1b864bd4d529319b51bf85a9b63de9cd51997ee4b2f015307cc42be9257e1b0a84e1c9e55a370476bff0a5325b21850f5b686a3bd4f1599f36d0772c406047b8ef29245c42ade862cb9d25b1e108db4f33a42dccf45c985" );
5761 iv_len =
unhexify( iv_str,
"ca5beea7dac2d9d24d548463977d5956" );
5764 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5767 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5768 hexify( dst_str, output, pt_len );
5769 hexify( tag_str, tag_output, tag_len );
5771 fct_chk( strcmp( (
char *) dst_str,
"67deff1accc4f279ec2eb4c2a515c17886371bc4847bdaff4aa70e170775b64855a6fb0d347baf39bb53d7239b7a63ce451effc69e8d8c3e544b77c75170a68cbc45dc96ad238aabeb5ebec159f38089b08dfbbe94e1d3934a95bd70f0b799fd84a8f563d629a5bfbb4eb3d4886b04e7dba5137d9255268dac36cbb5b5c8d35a" ) == 0 );
5772 fct_chk( strcmp( (
char *) tag_str,
"f212eaad0e2616a02c1ec475c039e0" ) == 0 );
5778 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240112_0)
5780 unsigned char key_str[128];
5781 unsigned char src_str[128];
5782 unsigned char dst_str[257];
5783 unsigned char iv_str[128];
5784 unsigned char add_str[128];
5785 unsigned char tag_str[128];
5786 unsigned char output[128];
5787 unsigned char tag_output[16];
5789 unsigned int key_len;
5790 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
5792 memset(key_str, 0x00, 128);
5793 memset(src_str, 0x00, 128);
5794 memset(dst_str, 0x00, 257);
5795 memset(iv_str, 0x00, 128);
5796 memset(add_str, 0x00, 128);
5797 memset(tag_str, 0x00, 128);
5798 memset(output, 0x00, 128);
5799 memset(tag_output, 0x00, 16);
5801 key_len =
unhexify( key_str,
"bd0e0d0c7907bdb4b4e60510f73d8ab2a30700349206ce22" );
5802 pt_len =
unhexify( src_str,
"e6835a650047033a4940f72029857fae6fff2773f2aa0e4f7cb0a4abe86b6e8cb0c3e468637057f7eb20d1d30723e3c3107d0f579e31a4c3e6fa8133e1b1b51fd21a8aa80ec657c4f674c032bc4a2d3e1389cb877883317c4451ab90692337bd8aa6e9312388a0acddb508fa477cc30eb33a886e8fbced97492c9d3733cf3fc2" );
5803 iv_len =
unhexify( iv_str,
"1f183eea676c7ed2ead9a31928f4df5c" );
5806 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5809 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5810 hexify( dst_str, output, pt_len );
5811 hexify( tag_str, tag_output, tag_len );
5813 fct_chk( strcmp( (
char *) dst_str,
"9f1a3017d16024dbfea4ba9df5154a6a2c794f00da070043c17f0204f06f637c8fffc760424187dce4fef044faccadefa1b1bd818522915e389d307caa481af0f1f767c38216fa048f621d46880afca5c8fc582853dec95d19d19cc943e9a1861597c99041c59e8bf8e7245f9e30b1f6607843a978d0ae7a4e0f716dabc9d9f6" ) == 0 );
5814 fct_chk( strcmp( (
char *) tag_str,
"4ceea20bf9616eb73cac15fe7e2f" ) == 0 );
5820 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240112_1)
5822 unsigned char key_str[128];
5823 unsigned char src_str[128];
5824 unsigned char dst_str[257];
5825 unsigned char iv_str[128];
5826 unsigned char add_str[128];
5827 unsigned char tag_str[128];
5828 unsigned char output[128];
5829 unsigned char tag_output[16];
5831 unsigned int key_len;
5832 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
5834 memset(key_str, 0x00, 128);
5835 memset(src_str, 0x00, 128);
5836 memset(dst_str, 0x00, 257);
5837 memset(iv_str, 0x00, 128);
5838 memset(add_str, 0x00, 128);
5839 memset(tag_str, 0x00, 128);
5840 memset(output, 0x00, 128);
5841 memset(tag_output, 0x00, 16);
5843 key_len =
unhexify( key_str,
"d59c476dcef60a45be253d5cfbb24742de9e3879bdfe6949" );
5844 pt_len =
unhexify( src_str,
"144696d85126c682f8446fcc2724fabe4b8840d46f3de6ae2ceacb2f06a1a80fed430e3a0242f4f7c308611c802c8b8e9c992b78a5cf401fe7a4671bf081f97520919f02b66e8bffd4fe3f4a69cf3d16667e7724890cc4b66c6ae487d2d987bfacec424fdc9865af4474b04cce03fffc828b2df66d99087e63f35eca52abe864" );
5845 iv_len =
unhexify( iv_str,
"9bca808f02295477f2aa7f6ac1a7bfe5" );
5848 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5851 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5852 hexify( dst_str, output, pt_len );
5853 hexify( tag_str, tag_output, tag_len );
5855 fct_chk( strcmp( (
char *) dst_str,
"9d23989edd8dd9911a3f5a80de051ec7812c6ce018e683751380ff990a079f3502ec0fabfcdacf6c1fb2503094124c39ec531b5d29ee8e4e46c324fc10dbe0f31e9aa56522bcc7085ccf768425227cbab6db4127671a4cab7bc65dc1d3d9d81469493329e29a9a1cb7e5e088e84eb243493cdf1a49b16fc8d4ea2f142aa9ad23" ) == 0 );
5856 fct_chk( strcmp( (
char *) tag_str,
"d8b20d72d95a44dfb899bc6aea25" ) == 0 );
5862 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240112_2)
5864 unsigned char key_str[128];
5865 unsigned char src_str[128];
5866 unsigned char dst_str[257];
5867 unsigned char iv_str[128];
5868 unsigned char add_str[128];
5869 unsigned char tag_str[128];
5870 unsigned char output[128];
5871 unsigned char tag_output[16];
5873 unsigned int key_len;
5874 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
5876 memset(key_str, 0x00, 128);
5877 memset(src_str, 0x00, 128);
5878 memset(dst_str, 0x00, 257);
5879 memset(iv_str, 0x00, 128);
5880 memset(add_str, 0x00, 128);
5881 memset(tag_str, 0x00, 128);
5882 memset(output, 0x00, 128);
5883 memset(tag_output, 0x00, 16);
5885 key_len =
unhexify( key_str,
"2f1594e840375405a682dbc1836344be8c6b3f3199ee7fd6" );
5886 pt_len =
unhexify( src_str,
"9bc6b715c65347a383f77000b3efb33b16019d01605159e09c116ded52d20721bcdde3796b6f4dc33cb29ce1c48438e95d4db6102465440cecaa50ca33ebce470d8986663652e069079f9d92ff167b3f7ae568218fc62ff5a7be50b3b987dab4fc7979e5967bb0574de4bc51e774ba05f9780a49ac7b3ea46fdf35804e740812" );
5887 iv_len =
unhexify( iv_str,
"7f1f4a80210bcc243877fccd3e7cd42e" );
5890 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5893 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5894 hexify( dst_str, output, pt_len );
5895 hexify( tag_str, tag_output, tag_len );
5897 fct_chk( strcmp( (
char *) dst_str,
"773d6901ea64d6840ded9a05a7351c0c74737ad27e7c3dbd38dedcdede94722ae67e88851ee471aefc1f80b29a7312fa2a6f178ef2c9dde729717977e85783e2e49a1fa2e847d830fac181e95fe30077b338b9ac5d2cfa22ff9348a0771054322bc717343b9a686dafda02d6354cf9b53c932da1712b9bb352b2380de3208530" ) == 0 );
5898 fct_chk( strcmp( (
char *) tag_str,
"fc3e0ca7de8fb79eb6851b7bca16" ) == 0 );
5904 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240104_0)
5906 unsigned char key_str[128];
5907 unsigned char src_str[128];
5908 unsigned char dst_str[257];
5909 unsigned char iv_str[128];
5910 unsigned char add_str[128];
5911 unsigned char tag_str[128];
5912 unsigned char output[128];
5913 unsigned char tag_output[16];
5915 unsigned int key_len;
5916 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
5918 memset(key_str, 0x00, 128);
5919 memset(src_str, 0x00, 128);
5920 memset(dst_str, 0x00, 257);
5921 memset(iv_str, 0x00, 128);
5922 memset(add_str, 0x00, 128);
5923 memset(tag_str, 0x00, 128);
5924 memset(output, 0x00, 128);
5925 memset(tag_output, 0x00, 16);
5927 key_len =
unhexify( key_str,
"88a6d441c1b7472aecf92c294f56f3c1da1702d174eff431" );
5928 pt_len =
unhexify( src_str,
"eecc12fbd00c636a7ff897c244593239d2dbca9d1f370660c9bf9759cc41dc6e95075516f8d7fc06fa91ff68701777725171c2dc0767a1953fac13008d77065cce8ee329283d3f64adb8a298aa100c42e75d62e47fbf5134a21b826fcc89ebb18707c0f4d54f6e93220484706a23a737341c601b56f6a28cc8659da56b6b51b1" );
5929 iv_len =
unhexify( iv_str,
"058a37eaee052daf7d1cd0e618f69a6c" );
5932 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5935 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5936 hexify( dst_str, output, pt_len );
5937 hexify( tag_str, tag_output, tag_len );
5939 fct_chk( strcmp( (
char *) dst_str,
"0f5e889deff370810ed2911f349481dfb34e8a9623abd657a9a2dc14df43dc8917451ddeee5f967af832296b148d6a5d267be4443e54cef2e21c06da74f9a614cf29ead3ca4f267068716a9fd208aefa6a9f4a8a40deee8c9fa7da76a70fcb4e6db8abc566ccdf97688aaad1a889ac505792b5ede95c57422dfec785c5e471b0" ) == 0 );
5940 fct_chk( strcmp( (
char *) tag_str,
"5fa75148886e255a4833850d7f" ) == 0 );
5946 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240104_1)
5948 unsigned char key_str[128];
5949 unsigned char src_str[128];
5950 unsigned char dst_str[257];
5951 unsigned char iv_str[128];
5952 unsigned char add_str[128];
5953 unsigned char tag_str[128];
5954 unsigned char output[128];
5955 unsigned char tag_output[16];
5957 unsigned int key_len;
5958 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
5960 memset(key_str, 0x00, 128);
5961 memset(src_str, 0x00, 128);
5962 memset(dst_str, 0x00, 257);
5963 memset(iv_str, 0x00, 128);
5964 memset(add_str, 0x00, 128);
5965 memset(tag_str, 0x00, 128);
5966 memset(output, 0x00, 128);
5967 memset(tag_output, 0x00, 16);
5969 key_len =
unhexify( key_str,
"abb4c4f8d3c44f07d5a57acba6ccf7852030daa84d09e13a" );
5970 pt_len =
unhexify( src_str,
"24d82903e5074beb9a769f24a99b18c7b53c160a3c3ae4065335bec1c4170aa4c656bd7c87a8a13c0ffc6653c045445bf8a135d25a13b2d44a32c219adc6ea2695fb9e8c65f3c454dc0e2772f4a4ce51ff62ad34064b31b0f664f635de0c46530c966b54e8a081042309afb8cf1f337625fa27c0cc9e628c4ae402cbf57b813a" );
5971 iv_len =
unhexify( iv_str,
"c9489a51152eec2f8f1699f733dc98f5" );
5974 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
5977 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
5978 hexify( dst_str, output, pt_len );
5979 hexify( tag_str, tag_output, tag_len );
5981 fct_chk( strcmp( (
char *) dst_str,
"3e5528ab16aed5be8d016fe07f2ff7ac4d393439c4fe0d55437a68967d685815e359fdb8f77d68241940ce7b1947c5a98f515216254ac29977cc2a591fc8e580241442d08facbdbee9a9ff7cfbde7004346772b4607dafb91c8f66f712abee557d3da675bb3130e978a1e692fa75236676b9205341ead5277cc306f05e4eaea0" ) == 0 );
5982 fct_chk( strcmp( (
char *) tag_str,
"fecca951ba45f5a7829be8421e" ) == 0 );
5988 FCT_TEST_BGN(gcm_nist_validation_aes_19212810240104_2)
5990 unsigned char key_str[128];
5991 unsigned char src_str[128];
5992 unsigned char dst_str[257];
5993 unsigned char iv_str[128];
5994 unsigned char add_str[128];
5995 unsigned char tag_str[128];
5996 unsigned char output[128];
5997 unsigned char tag_output[16];
5999 unsigned int key_len;
6000 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
6002 memset(key_str, 0x00, 128);
6003 memset(src_str, 0x00, 128);
6004 memset(dst_str, 0x00, 257);
6005 memset(iv_str, 0x00, 128);
6006 memset(add_str, 0x00, 128);
6007 memset(tag_str, 0x00, 128);
6008 memset(output, 0x00, 128);
6009 memset(tag_output, 0x00, 16);
6011 key_len =
unhexify( key_str,
"cbce5e6d0fdcd3ab08ccd86115149b5569584dfadf40256d" );
6012 pt_len =
unhexify( src_str,
"3974339a1b90b19fd3857d812a0e59dcf43f9b0f360839940b99834ddedead79785396ab8fd0fc0e523c06f0555371fd5bc857a95c3ead26536e6deb1faabdc776ac7cfec4b60d9c24b0856ecf381efd98f941d5b2a38108922d9cf1113d1e484354b55f9c0f09d95a77fd30ec9cc04d19199931e187c56fd231f96fce5e1eb4" );
6013 iv_len =
unhexify( iv_str,
"ae3a25be73876b6e9dc88573d617653a" );
6016 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6019 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6020 hexify( dst_str, output, pt_len );
6021 hexify( tag_str, tag_output, tag_len );
6023 fct_chk( strcmp( (
char *) dst_str,
"4f57be0de00ca2c7c52c54b931c235fecb4ee1e5a30e29bf68f57248bafad87e484cc68465d9f64bbf502cefd2c84e5596c3c8e58a9fb51a8c8b132579a94bc32e92f7c7247dc5f69fda98727c423de5430f01b37d77e3ae6bcd06eaf5625e5c7c9c228b9dca5aad8f571369fe0964731bf1f143f2f709c7ed51641ecfc88ebc" ) == 0 );
6024 fct_chk( strcmp( (
char *) tag_str,
"33375e21fd8df9f0196198b4b1" ) == 0 );
6030 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024096_0)
6032 unsigned char key_str[128];
6033 unsigned char src_str[128];
6034 unsigned char dst_str[257];
6035 unsigned char iv_str[128];
6036 unsigned char add_str[128];
6037 unsigned char tag_str[128];
6038 unsigned char output[128];
6039 unsigned char tag_output[16];
6041 unsigned int key_len;
6042 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
6044 memset(key_str, 0x00, 128);
6045 memset(src_str, 0x00, 128);
6046 memset(dst_str, 0x00, 257);
6047 memset(iv_str, 0x00, 128);
6048 memset(add_str, 0x00, 128);
6049 memset(tag_str, 0x00, 128);
6050 memset(output, 0x00, 128);
6051 memset(tag_output, 0x00, 16);
6053 key_len =
unhexify( key_str,
"96779eaa8699469e2a3bfae8a03fd4bff7abc62d427ff985" );
6054 pt_len =
unhexify( src_str,
"a343fd32fc513e0e9772acbf99feafe9de4b54e404807999b02e921e0914b2d64d0d402ef06f31e1db852899fb6db231ad4465af015b0c16407fa3666ef5c2a6d52d5b4f60b0f7fbcb13574b2aa5183393f3a91b455a85b3ed99d619bc9c5c2dbcc4f0a61a7b03e5ab98a99cee086be408ce394203f02d6d23a1e75df44a4a20" );
6055 iv_len =
unhexify( iv_str,
"cd7dca2969872581d51b24af40f22c6f" );
6058 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6061 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6062 hexify( dst_str, output, pt_len );
6063 hexify( tag_str, tag_output, tag_len );
6065 fct_chk( strcmp( (
char *) dst_str,
"74422abbde6e4ab674025735874d95d9fe3015620a8f748dbed63ef0e2271063b6c0d65e00d41bcf4ea86ac8b922b4d475f904c0724f0adebc2eef4a3abd0f9efd75408cc054cbd400436e0545e09e6b0bc83a9c7d1c1717589d180c7b1d4fe4ca18bde4d9b6bc98481b7971c7eb81c391ac4dd79cdefeabb5bbc210d914d30c" ) == 0 );
6066 fct_chk( strcmp( (
char *) tag_str,
"b0e425435fd2c8a911808ba5" ) == 0 );
6072 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024096_1)
6074 unsigned char key_str[128];
6075 unsigned char src_str[128];
6076 unsigned char dst_str[257];
6077 unsigned char iv_str[128];
6078 unsigned char add_str[128];
6079 unsigned char tag_str[128];
6080 unsigned char output[128];
6081 unsigned char tag_output[16];
6083 unsigned int key_len;
6084 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
6086 memset(key_str, 0x00, 128);
6087 memset(src_str, 0x00, 128);
6088 memset(dst_str, 0x00, 257);
6089 memset(iv_str, 0x00, 128);
6090 memset(add_str, 0x00, 128);
6091 memset(tag_str, 0x00, 128);
6092 memset(output, 0x00, 128);
6093 memset(tag_output, 0x00, 16);
6095 key_len =
unhexify( key_str,
"39bfb4cf533d71c02932e1cd7b800dca9ce9bca843886962" );
6096 pt_len =
unhexify( src_str,
"de76f63ecf9c8d4643599f4dc3f9ed837924915ce4216759013cdb46daa0a508e06bcdb77437b0a58c40a0bd30a05ca41433218c6869f1ecd26318aff27999a2ebbb651de8e03061b8ffe3e14060720eb35a8e4dfd8c870aa4562291e3758cc1ea6c4b0fafcf210e10b31f8521bb0f6b29e8450b0cd6f8c8196ca2f7acb807a3" );
6097 iv_len =
unhexify( iv_str,
"d2b937bb5d2ea7d54d2b96826433f297" );
6100 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6103 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6104 hexify( dst_str, output, pt_len );
6105 hexify( tag_str, tag_output, tag_len );
6107 fct_chk( strcmp( (
char *) dst_str,
"0b0b4c92f06b17103ed581fb32d46e874fea2a2171d32aac331daa4d6c863f844fbbad72e455cd5a3ef941d8cf667fed5855da6df0ccd0c61d99b2e40a0d697368138be510a2bf2e08a7648850d2410e4a179a6d0193e49a135524092ab1f842ed4057611daaeb93e7aa46e5618b354a1091a9e77fb92a8c3c0e8e017f72deb3" ) == 0 );
6108 fct_chk( strcmp( (
char *) tag_str,
"a188107e506c91484e632229" ) == 0 );
6114 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024096_2)
6116 unsigned char key_str[128];
6117 unsigned char src_str[128];
6118 unsigned char dst_str[257];
6119 unsigned char iv_str[128];
6120 unsigned char add_str[128];
6121 unsigned char tag_str[128];
6122 unsigned char output[128];
6123 unsigned char tag_output[16];
6125 unsigned int key_len;
6126 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
6128 memset(key_str, 0x00, 128);
6129 memset(src_str, 0x00, 128);
6130 memset(dst_str, 0x00, 257);
6131 memset(iv_str, 0x00, 128);
6132 memset(add_str, 0x00, 128);
6133 memset(tag_str, 0x00, 128);
6134 memset(output, 0x00, 128);
6135 memset(tag_output, 0x00, 16);
6137 key_len =
unhexify( key_str,
"41b7d80ae487ac35aa498e5939a0f27baeedf48a494c8e91" );
6138 pt_len =
unhexify( src_str,
"c26d4b918a0c967141fb5712a28698d16640d200b2934187b81ec58486b706ea1caaeb654e5fbbc0d078215aceed7d66939e0fb54d6131d8948cf58ec9571646ca75a051c2b5c98fe16f7733d42e5897b0263272015042f3134143ea3b08bc65292d8d31f30f2ed9830ccbfca2d33d290c28f4dad07c7137a4ca05f432a457c2" );
6139 iv_len =
unhexify( iv_str,
"626e1d936b38cf9c4c3a44ee669936ed" );
6142 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6145 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6146 hexify( dst_str, output, pt_len );
6147 hexify( tag_str, tag_output, tag_len );
6149 fct_chk( strcmp( (
char *) dst_str,
"8998e799985890d0f7e8b0fc12a8a9c63171e456ef5cb211f836a2dc7c9e3f4d1cd6280f9b0c469b703c55876b57cd1d8cef70dc745e3af8438d878cb2fe9fb1c5b2d9a2d90edf3bc5702ef3630d316574c07b5629f0db1510460af8e537dcf28d9c5b5cec6996eaa3dcde3354e39f60d5d896d8bb92718a758adb5cb9cc17d5" ) == 0 );
6150 fct_chk( strcmp( (
char *) tag_str,
"69901cbafe637de5963e7331" ) == 0 );
6156 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024064_0)
6158 unsigned char key_str[128];
6159 unsigned char src_str[128];
6160 unsigned char dst_str[257];
6161 unsigned char iv_str[128];
6162 unsigned char add_str[128];
6163 unsigned char tag_str[128];
6164 unsigned char output[128];
6165 unsigned char tag_output[16];
6167 unsigned int key_len;
6168 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
6170 memset(key_str, 0x00, 128);
6171 memset(src_str, 0x00, 128);
6172 memset(dst_str, 0x00, 257);
6173 memset(iv_str, 0x00, 128);
6174 memset(add_str, 0x00, 128);
6175 memset(tag_str, 0x00, 128);
6176 memset(output, 0x00, 128);
6177 memset(tag_output, 0x00, 16);
6179 key_len =
unhexify( key_str,
"2ecce8fb50a28a085af744b44bc0ea59d6bc2c8ff1f2ff8e" );
6180 pt_len =
unhexify( src_str,
"54300bfd55b227b4758cf64d8a3f56cb49b436adb4b927afa8c4b70d2584a6cba425af4fbc3840dd6f2e313f793cbc7aca8219f171c809cf1eb9b4ae8a9d0cf1a7aa203d38d67cf7719ce2248d751e8605548118e5bb9ce364349944a2205e1b77137270b83555d5d804edba2f74400f26d2d0d28eb29d7beb91e80ad66b60be" );
6181 iv_len =
unhexify( iv_str,
"b7e43d859697efe6681e8d0c66096d50" );
6184 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6187 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6188 hexify( dst_str, output, pt_len );
6189 hexify( tag_str, tag_output, tag_len );
6191 fct_chk( strcmp( (
char *) dst_str,
"45dac078c05e6a2c480543d406c23f3dda63f2b616007d08fbfb075a90eefab8dfbc26d334266f5d72fbc52800cf457f2bbc8062a895f75e86df7b8d87112386c9bad85573431ccfcef6a5e96d717fc37b08673bf4a5eecedf1a8215a8538e1ddb11d31a24cb1497c7b5ba380576acb9d641d71412a675f29d7abd750d84dfd1" ) == 0 );
6192 fct_chk( strcmp( (
char *) tag_str,
"2dfe162c577dc410" ) == 0 );
6198 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024064_1)
6200 unsigned char key_str[128];
6201 unsigned char src_str[128];
6202 unsigned char dst_str[257];
6203 unsigned char iv_str[128];
6204 unsigned char add_str[128];
6205 unsigned char tag_str[128];
6206 unsigned char output[128];
6207 unsigned char tag_output[16];
6209 unsigned int key_len;
6210 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
6212 memset(key_str, 0x00, 128);
6213 memset(src_str, 0x00, 128);
6214 memset(dst_str, 0x00, 257);
6215 memset(iv_str, 0x00, 128);
6216 memset(add_str, 0x00, 128);
6217 memset(tag_str, 0x00, 128);
6218 memset(output, 0x00, 128);
6219 memset(tag_output, 0x00, 16);
6221 key_len =
unhexify( key_str,
"6773e627f6c49a1687a3a75d2ee6754ebfc2628bdfceba28" );
6222 pt_len =
unhexify( src_str,
"eb0a64ad510968c68a816550d9fe2eccab3bd8409ab5a685a8638f81b4b50a9a96318bff4e86f7f6e9076960be8eef60e72cee4ea81f3ba269d8ab4c9581a54638421520a6411a83e9dc83b6981a9dcdd9e4a367d57f156d131cf385c01a736b327218e6b6468d317ff78a01f1588c359a3a9b188bbe5d3ffad6b57483a976d0" );
6223 iv_len =
unhexify( iv_str,
"ad85becb03a05caa4533b88940ca141a" );
6226 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6229 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6230 hexify( dst_str, output, pt_len );
6231 hexify( tag_str, tag_output, tag_len );
6233 fct_chk( strcmp( (
char *) dst_str,
"959658fdff5fd802fca5c5a79d59536ba8ef1359ac7bfff81264c7827bd31b8f02ecb54f309b442a54a5a57c588ace4b49463f030b325880e7e334b43ab6a2fce469907055e548caffa2fe4679edbe291377c16c7096a48aef5659ad37702aed774188cb4426c3b727878755d683ed8c163a98a05f069a0a3c22085600759170" ) == 0 );
6234 fct_chk( strcmp( (
char *) tag_str,
"4c0f4621b04b5667" ) == 0 );
6240 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024064_2)
6242 unsigned char key_str[128];
6243 unsigned char src_str[128];
6244 unsigned char dst_str[257];
6245 unsigned char iv_str[128];
6246 unsigned char add_str[128];
6247 unsigned char tag_str[128];
6248 unsigned char output[128];
6249 unsigned char tag_output[16];
6251 unsigned int key_len;
6252 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
6254 memset(key_str, 0x00, 128);
6255 memset(src_str, 0x00, 128);
6256 memset(dst_str, 0x00, 257);
6257 memset(iv_str, 0x00, 128);
6258 memset(add_str, 0x00, 128);
6259 memset(tag_str, 0x00, 128);
6260 memset(output, 0x00, 128);
6261 memset(tag_output, 0x00, 16);
6263 key_len =
unhexify( key_str,
"1c086f7404c14160f33d6efde231eda610f92fa55ac147b4" );
6264 pt_len =
unhexify( src_str,
"fc8e5cd81755e489de7e3ddd2b587149ee013bffa2ce198c514641b0e1659261edd60bdbfd873e30e399869748bfe56ba543ceb9bf5fd0e7ba2b4dc175c52f28a8a02b4816f2056648e90faf654368c64f54fd50b41ea7ca199d766728980e2ebd11246c28cfc9a0a1e11cf0df7765819af23c70f920c3efb5e2663949aaa301" );
6265 iv_len =
unhexify( iv_str,
"71f154f1dc19bae34b58f3d160bb432a" );
6268 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6271 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6272 hexify( dst_str, output, pt_len );
6273 hexify( tag_str, tag_output, tag_len );
6275 fct_chk( strcmp( (
char *) dst_str,
"6d60da2fd060d2aec35faf989d8df33f2413ba14842b0406e38a6a847e191eac9f4570cea647c3988faaa5505ea20f99132df2a8799cf0543e204962da1fd4f60523d7149e0dee77c16590d7e114ac5d8f88fa371dcdd254eccaa8316ee922ba23a0a07b289739413ddffc2c709c391afee9289252ddf3ddb62a4532a5515e35" ) == 0 );
6276 fct_chk( strcmp( (
char *) tag_str,
"f47bae6488f038fe" ) == 0 );
6282 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024032_0)
6284 unsigned char key_str[128];
6285 unsigned char src_str[128];
6286 unsigned char dst_str[257];
6287 unsigned char iv_str[128];
6288 unsigned char add_str[128];
6289 unsigned char tag_str[128];
6290 unsigned char output[128];
6291 unsigned char tag_output[16];
6293 unsigned int key_len;
6294 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
6296 memset(key_str, 0x00, 128);
6297 memset(src_str, 0x00, 128);
6298 memset(dst_str, 0x00, 257);
6299 memset(iv_str, 0x00, 128);
6300 memset(add_str, 0x00, 128);
6301 memset(tag_str, 0x00, 128);
6302 memset(output, 0x00, 128);
6303 memset(tag_output, 0x00, 16);
6305 key_len =
unhexify( key_str,
"bae1b3eef91ba79032117c60fb847d46f18175565d0ed10c" );
6306 pt_len =
unhexify( src_str,
"9b71eeccdc91cb5f7a567a9189774f4c30d96477b88ac553df66b78a56e5c9e0986a17d80c811116d31985acfbf9d7a9bed291aa2fb6329457a836b3f8f11c16416f0a3b86dd9c717c8a050c6ceb5c27d8e2ee0dbe63f3e1e4f0aff4809e1f6f6ed64d31d494b7399cfa0dd9446321bd4256a49d0793a10a670e3f086408428e" );
6307 iv_len =
unhexify( iv_str,
"cec8b66a657e4bdf693f48ac52e60770" );
6310 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6313 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6314 hexify( dst_str, output, pt_len );
6315 hexify( tag_str, tag_output, tag_len );
6317 fct_chk( strcmp( (
char *) dst_str,
"015a318acb6198189ce908ab1af28578a37a48beeed772c6ed4dceb0a3bcb092df85f653234c56a25c075c8e028d4a8d90d974fb0477834ae2de8d5df53d0d03a979450b6e7a66fdc9b11f879ea9072699837f2de7192156f8e5d9411fd83d97d31fe63ece4e4326ff50a24fc75004a5ba2bd4845b29e0794696943dff1e5d6e" ) == 0 );
6318 fct_chk( strcmp( (
char *) tag_str,
"9cf6f90a" ) == 0 );
6324 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024032_1)
6326 unsigned char key_str[128];
6327 unsigned char src_str[128];
6328 unsigned char dst_str[257];
6329 unsigned char iv_str[128];
6330 unsigned char add_str[128];
6331 unsigned char tag_str[128];
6332 unsigned char output[128];
6333 unsigned char tag_output[16];
6335 unsigned int key_len;
6336 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
6338 memset(key_str, 0x00, 128);
6339 memset(src_str, 0x00, 128);
6340 memset(dst_str, 0x00, 257);
6341 memset(iv_str, 0x00, 128);
6342 memset(add_str, 0x00, 128);
6343 memset(tag_str, 0x00, 128);
6344 memset(output, 0x00, 128);
6345 memset(tag_output, 0x00, 16);
6347 key_len =
unhexify( key_str,
"7c1582240ad301f831902c66334546dd681c12308add0870" );
6348 pt_len =
unhexify( src_str,
"d4b716b49858a23aad478581cbb6dfd015ae550d76497229b5b1776e83f2ded8542675c63ca6a007a204b497ed2ef71ca125d91f386be9b4213cd352a797a5d78a1373f00916bb993de14e1a0af67524acfcc9fd71daa32e5def9a3f2dab5b3bba4d2f9f2cfc5f52768b41157fe79d95229d0611944e8308ec76425a966b21ec" );
6349 iv_len =
unhexify( iv_str,
"b6f4f3959914df413b849d559dd43055" );
6352 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6355 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6356 hexify( dst_str, output, pt_len );
6357 hexify( tag_str, tag_output, tag_len );
6359 fct_chk( strcmp( (
char *) dst_str,
"79964f8775c78009bca1b218c03056b659e5382e25e43759c8adfa78aec48d70b32ffd56b230fc1ce8c21636a80a8c150e5dbb2bd3f51607d97ed097617963dc6e7653126fe40cb36a7f71051d77e4f3b768a85ee707c45d33cc67473f94c31da3e8b4c21859002331b5f7350e3e8f9806209255ceac7089176e9d6b70abd484" ) == 0 );
6360 fct_chk( strcmp( (
char *) tag_str,
"79e5a00b" ) == 0 );
6366 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024032_2)
6368 unsigned char key_str[128];
6369 unsigned char src_str[128];
6370 unsigned char dst_str[257];
6371 unsigned char iv_str[128];
6372 unsigned char add_str[128];
6373 unsigned char tag_str[128];
6374 unsigned char output[128];
6375 unsigned char tag_output[16];
6377 unsigned int key_len;
6378 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
6380 memset(key_str, 0x00, 128);
6381 memset(src_str, 0x00, 128);
6382 memset(dst_str, 0x00, 257);
6383 memset(iv_str, 0x00, 128);
6384 memset(add_str, 0x00, 128);
6385 memset(tag_str, 0x00, 128);
6386 memset(output, 0x00, 128);
6387 memset(tag_output, 0x00, 16);
6389 key_len =
unhexify( key_str,
"fd55a356943824d20630b1539627ad1a9dcd8ee2cb4dbf49" );
6390 pt_len =
unhexify( src_str,
"b8d8d6dd0631f9183ca858033a31dd583d3ee3b9510fcc69d8cd412016bf854b9edcf65c2831e63d72f4cb61a99f6f4e6dab0c2ce9c5a8cdbc179ae93aaca2c8a5b848a15309be9b34e5226aa9a5908f543fdda983fec02e4073edcc3985da5222b53f8c84b9c54c78dd8b2712b59209463595c7552e28f2a45f51cb882c0354" );
6391 iv_len =
unhexify( iv_str,
"aa89a122c68e997d0326984fa5bef805" );
6394 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6397 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6398 hexify( dst_str, output, pt_len );
6399 hexify( tag_str, tag_output, tag_len );
6401 fct_chk( strcmp( (
char *) dst_str,
"107a9ed561e6c45c375d31dea321c7b4a4b7641024d2c9eef6a103a750ba15e1acacbcae121510b4f56f19d29e6fb3e6fc06950b1daa521528f42284130a40e5a6c1b58b3b28003673511abcf59a4b9df1548a00f769d8681978b632f75e5da2cf21b499a24fbdd4f7efe053d4a1b20b240856d3ae27948e35098aa617def5bd" ) == 0 );
6402 fct_chk( strcmp( (
char *) tag_str,
"7f9c886a" ) == 0 );
6408 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024128_0)
6410 unsigned char key_str[128];
6411 unsigned char src_str[128];
6412 unsigned char dst_str[257];
6413 unsigned char iv_str[128];
6414 unsigned char add_str[128];
6415 unsigned char tag_str[128];
6416 unsigned char output[128];
6417 unsigned char tag_output[16];
6419 unsigned int key_len;
6420 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
6422 memset(key_str, 0x00, 128);
6423 memset(src_str, 0x00, 128);
6424 memset(dst_str, 0x00, 257);
6425 memset(iv_str, 0x00, 128);
6426 memset(add_str, 0x00, 128);
6427 memset(tag_str, 0x00, 128);
6428 memset(output, 0x00, 128);
6429 memset(tag_output, 0x00, 16);
6431 key_len =
unhexify( key_str,
"4cddc8f525640fc0a0875c65b788ea75c673f84f4aacaed4" );
6432 pt_len =
unhexify( src_str,
"55e3ccb855c1fd6d33e28d308485fd85abbd8ade1299936996851d44dde063ddc37962f9f67e95df02eaf3d877516240771c469be2abf2ef6c8dcbb79eb1976f825b109f752079957a7c981faa2fcea599cc52e262b84f4c2031821619f0be6fa3c38d660e9eb3e0d5de2da6b83de9866eb3efbc6a2dff27e52587c6f79e1c26" );
6433 iv_len =
unhexify( iv_str,
"1b883a89413f62dd6d507cd70c048855" );
6434 add_len =
unhexify( add_str,
"eeaf21bc317660b0e2afb9cd5bd450ff0bfa6cfa7e49edad600f71b971347e93b9712a6e895540c665a1d8338f61b51da9e0a4a9122409824287ba4bc06bdbba10290a40b31b5eae9dfeb6471f4a0a0c15c52a2c677c4d472630d4078ecf36dc6008faa0235a688ebbe2662e46a49b1dd58cbee82f285f3cdebda1dc54673195" );
6436 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6439 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6440 hexify( dst_str, output, pt_len );
6441 hexify( tag_str, tag_output, tag_len );
6443 fct_chk( strcmp( (
char *) dst_str,
"18d11513661296035f6f42d264e0b4cc7ec47f43b758c6dac95e5e3b3834362eb64447d923e107a60cd66ac359cf3a203f9070eab9fe61ae64a86606c9b50a97a19e12f731de28719fe178c9713edbb4525b221f656a340c867405c41bed3bbcb9c6da5cc6a4d37acd7a55f251a50fa15ea8f9b8955606eaa645c759ef2481e8" ) == 0 );
6444 fct_chk( strcmp( (
char *) tag_str,
"dec3edc19fd39f29e67c9e78211c71ce" ) == 0 );
6450 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024128_1)
6452 unsigned char key_str[128];
6453 unsigned char src_str[128];
6454 unsigned char dst_str[257];
6455 unsigned char iv_str[128];
6456 unsigned char add_str[128];
6457 unsigned char tag_str[128];
6458 unsigned char output[128];
6459 unsigned char tag_output[16];
6461 unsigned int key_len;
6462 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
6464 memset(key_str, 0x00, 128);
6465 memset(src_str, 0x00, 128);
6466 memset(dst_str, 0x00, 257);
6467 memset(iv_str, 0x00, 128);
6468 memset(add_str, 0x00, 128);
6469 memset(tag_str, 0x00, 128);
6470 memset(output, 0x00, 128);
6471 memset(tag_output, 0x00, 16);
6473 key_len =
unhexify( key_str,
"3b8c31830b1139a60425f6a34387f5ca2be6f5a5074adf13" );
6474 pt_len =
unhexify( src_str,
"95f4ea90729de0f0b890fdf697948053f656bddf57e3d461e7ee1770161904bb2cbc8c2f801481bb54145af760e91c8b30cb22faa87efcc6f01e3f798af0bd460475754726514d53f419af2f2c373c76f05bf57d3fc1b763f72ba0fd2682d9d1d76f6ce8d55b56fc7ba883fad94f59d502244804bb87bd06f1217a4a6c5055b5" );
6475 iv_len =
unhexify( iv_str,
"ab5bf317ad1d6bec9cac8bc520a37b1d" );
6476 add_len =
unhexify( add_str,
"5a47d7474be6c48fa4bdbb090f4b6da494f153a4c9c8561cae4fe883000b81769b46cd65f4ce34abc3e5c6880a21d12c186974b0c933a16ba33d511e79b5f994c38e383b93eea1259d38f9fb955480792206461dd29d6d3b8ff239ea6788c8e09c15be99f094d2d5980c6c1a8efe0f97f58f7725a972111daeb87d862a90a7d0" );
6478 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6481 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6482 hexify( dst_str, output, pt_len );
6483 hexify( tag_str, tag_output, tag_len );
6485 fct_chk( strcmp( (
char *) dst_str,
"1d0211d7d7bc891e4fba1ba7d47ac5a4f3b7ba49df69fcfde64bf8689b0eab379d2f5567fcff691836601b96c0a3b0ec14c03bc00e9682ef0043071507988cf1453603d2aa3dc9fa490cdb0dd263b12733adb4d68a098e1ccd27c92fe1bb82fa4a94f8a1cc045a975ac368e3224ba8f57800455cc4047901bba6bf67d6e41f94" ) == 0 );
6486 fct_chk( strcmp( (
char *) tag_str,
"23681228c722295c480397fc04c848a1" ) == 0 );
6492 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024128_2)
6494 unsigned char key_str[128];
6495 unsigned char src_str[128];
6496 unsigned char dst_str[257];
6497 unsigned char iv_str[128];
6498 unsigned char add_str[128];
6499 unsigned char tag_str[128];
6500 unsigned char output[128];
6501 unsigned char tag_output[16];
6503 unsigned int key_len;
6504 size_t pt_len, iv_len, add_len, tag_len = 128 / 8;
6506 memset(key_str, 0x00, 128);
6507 memset(src_str, 0x00, 128);
6508 memset(dst_str, 0x00, 257);
6509 memset(iv_str, 0x00, 128);
6510 memset(add_str, 0x00, 128);
6511 memset(tag_str, 0x00, 128);
6512 memset(output, 0x00, 128);
6513 memset(tag_output, 0x00, 16);
6515 key_len =
unhexify( key_str,
"9c2386b948f59ce651888451021772287f14a92d807d88a8" );
6516 pt_len =
unhexify( src_str,
"44f00c8a7c84e8207ec15a7be0b79c88fa347e2c3d5e8d07234536d86513bc39bebfff02efb9ff27280eb37f7e8a60a426538bc1e3830bca0e76faa33b30719fab51578d15df77893bce8740f50c491b8b9f1739a695c78406b5ee4d56f80d8d564b586b0f22ffa86eca46a9d8134a9507c5b9ad82757ec51b18741abc61f23b" );
6517 iv_len =
unhexify( iv_str,
"7a1f7d0be4c7f8869432cb8b13527670" );
6518 add_len =
unhexify( add_str,
"f76ea9d6e976616689709700a9638204e616f4c1c3a54a27fb0dc852990d81dfd6787aa5a83b9be5087d3f7dfcd522044911fa4186511de1957b80338025c6c4aa72058aa3160047cf42166aa0089e2ec1ac8ea6d9f5f2c057f9f838a72319dbd7bb4948da3bc87fc2036a0e7b5e8cee7f045463152ff80a1711ef1096e75463" );
6520 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6523 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6524 hexify( dst_str, output, pt_len );
6525 hexify( tag_str, tag_output, tag_len );
6527 fct_chk( strcmp( (
char *) dst_str,
"666c4d6d3f1bec49ba936eea90d864e8ecbe0ccc7b23872a4ad7596afaec628a8165a70397289a10c67d62942e1c158f1489a9de44443ac4181e74ebf2562995c9182b57bc960f4b5d3e33fb7cf7a0c32a59c716de23639de9bc430712524d74a087647e27ff1af87a2aa0cf0b58978ad8ed616b566225d3aef2ef460be7393d" ) == 0 );
6528 fct_chk( strcmp( (
char *) tag_str,
"53d926af7bbf7fba9798f895d182b09e" ) == 0 );
6534 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024120_0)
6536 unsigned char key_str[128];
6537 unsigned char src_str[128];
6538 unsigned char dst_str[257];
6539 unsigned char iv_str[128];
6540 unsigned char add_str[128];
6541 unsigned char tag_str[128];
6542 unsigned char output[128];
6543 unsigned char tag_output[16];
6545 unsigned int key_len;
6546 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
6548 memset(key_str, 0x00, 128);
6549 memset(src_str, 0x00, 128);
6550 memset(dst_str, 0x00, 257);
6551 memset(iv_str, 0x00, 128);
6552 memset(add_str, 0x00, 128);
6553 memset(tag_str, 0x00, 128);
6554 memset(output, 0x00, 128);
6555 memset(tag_output, 0x00, 16);
6557 key_len =
unhexify( key_str,
"5852b4bbfa623e5e2f83b888f5eb6cbe06b57299e29a518c" );
6558 pt_len =
unhexify( src_str,
"8cc85e520b45a85c69cd80072642ef1500b1e0a409c435d685544a6b96d3224cc40e5fe8a21c4959b2891d4a53bbff03db9939c655e6e92222c6b44c95204827bd800c74666db64907894bc4e3043fab318aa55a011ab9397592ced73f07a06282c22d9a57dd7a37eadb02f59b879b030d0a5005226c461281ce3061bf26de56" );
6559 iv_len =
unhexify( iv_str,
"b96f4bda25857c28fdfa42bfe598f11a" );
6560 add_len =
unhexify( add_str,
"0bfdc1b16eeae85d550a97a20211216a66b496c8c19030a263f896958e4d1decc310b955523e314647edcbe3f69970cda8e07f8b81f9074434fd86b8ec5b3fa8b155377ad28050b50523d3d185e5869bc9651d97c56ec6b8047c20d671f6dc657f4cdf73fd7d3caf4b872f3fb6376eda11b80d99cf0e85c4957607a767642da6" );
6562 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6565 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6566 hexify( dst_str, output, pt_len );
6567 hexify( tag_str, tag_output, tag_len );
6569 fct_chk( strcmp( (
char *) dst_str,
"b148312074ecfc8f118e3800dbd17226d55fc2c91bcbceeae2a7ca3b376f6d568dd7fcb5c0d09ce424868f1544097a0f966d354455e129096ec803a9435bbbf8f16432d30991384b88d14bcad1191b82273157d646f7a98507dc0c95c33d22e0b721c046f1c13545f4ed2df631fd2b8fc4940e10e3e66c0a4af089941a8ad94a" ) == 0 );
6570 fct_chk( strcmp( (
char *) tag_str,
"e3f548e24a189dbbfd6ae6b9ee44c2" ) == 0 );
6576 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024120_1)
6578 unsigned char key_str[128];
6579 unsigned char src_str[128];
6580 unsigned char dst_str[257];
6581 unsigned char iv_str[128];
6582 unsigned char add_str[128];
6583 unsigned char tag_str[128];
6584 unsigned char output[128];
6585 unsigned char tag_output[16];
6587 unsigned int key_len;
6588 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
6590 memset(key_str, 0x00, 128);
6591 memset(src_str, 0x00, 128);
6592 memset(dst_str, 0x00, 257);
6593 memset(iv_str, 0x00, 128);
6594 memset(add_str, 0x00, 128);
6595 memset(tag_str, 0x00, 128);
6596 memset(output, 0x00, 128);
6597 memset(tag_output, 0x00, 16);
6599 key_len =
unhexify( key_str,
"2bd897e969ccee405ba9becf24787a1e1be17a571442c6da" );
6600 pt_len =
unhexify( src_str,
"50b8ade5e6547c350c3f43a35a3cb641459c5ef902afc706ce2fb980b275fda62e8974d1577ef65ce9fd854d88caa10295d1045ed7563e9391d60700b5d2a4a7ba5f3de7a7d1541780b95a08eb3f0996d96aac7ee838b67ee869447617684c08566647a4991e31829907ebe4b32cfa46c0433a64f864b8b9316cb0ec2578ccee" );
6601 iv_len =
unhexify( iv_str,
"fef6a08d92b5b9bdae4c368fcd0cf9e8" );
6602 add_len =
unhexify( add_str,
"fb3144ec6d93704d625aa9e95be96351c6e25bccf1eaaaf9a1d405e679efe0f2da07510ab07533295a52cdc1f5a15ef5bec9e72b199625730e1baf5c1482f362f485d74233fbf764d0b6363075cebd676920a0b315d680e899733d6da05d78765db159c4f942a31d115d53f1d89cd948bc99c03adad1eee8adcef7543f9dea39" );
6604 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6607 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6608 hexify( dst_str, output, pt_len );
6609 hexify( tag_str, tag_output, tag_len );
6611 fct_chk( strcmp( (
char *) dst_str,
"e65ed5b6d0f51f8876f483f3d8ab8fed78ab6c2e1cf50693c8511e1cc9823e1030740ac33f05a5aa0d88205bb3071a087655f28eee7d0a07945d25e3dc00221a1dade4170cab9084c47b82376d5d439bed99150811843b176543f7944b1dd9684fa9a52117c2335dda750d9de0d9b3ef718123b6534cb012080f6ef8eda8d4d6" ) == 0 );
6612 fct_chk( strcmp( (
char *) tag_str,
"468546d4199b9d923a607a78fa4b40" ) == 0 );
6618 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024120_2)
6620 unsigned char key_str[128];
6621 unsigned char src_str[128];
6622 unsigned char dst_str[257];
6623 unsigned char iv_str[128];
6624 unsigned char add_str[128];
6625 unsigned char tag_str[128];
6626 unsigned char output[128];
6627 unsigned char tag_output[16];
6629 unsigned int key_len;
6630 size_t pt_len, iv_len, add_len, tag_len = 120 / 8;
6632 memset(key_str, 0x00, 128);
6633 memset(src_str, 0x00, 128);
6634 memset(dst_str, 0x00, 257);
6635 memset(iv_str, 0x00, 128);
6636 memset(add_str, 0x00, 128);
6637 memset(tag_str, 0x00, 128);
6638 memset(output, 0x00, 128);
6639 memset(tag_output, 0x00, 16);
6641 key_len =
unhexify( key_str,
"12141d5834b8ca48b57e0892b6027c997669dac12fe60411" );
6642 pt_len =
unhexify( src_str,
"cf475b50672fd8cc4ba84d17ab1b733fee2073a584d5427155f144ddd945d4901d5a9d76e3d6ae55ab3f9514861c83bca7d53868f35bdc8606a167ac83591be30ddb954ee173ee172e8d7742a71c0fee04ccd16fb5d54a45820640405209e20f8494f08d791a2a15f5cb848df689296a04e4b01e2c19bd8d9ca8b4525853549a" );
6643 iv_len =
unhexify( iv_str,
"b6dcb39939a31df176dcec87eb8db90f" );
6644 add_len =
unhexify( add_str,
"daf4e0cd0b29343defb65562594b2b6fd3f005e6255500330f77a0550c1cfbade5f5973e836ce7046bc2b2ab8bb7983830ce6ce148d0998116183d1aed320d28adef9ffab48e0f6d6451c98eb83fafc75fb054991d123965dbddcf74a2c01c746bbbc8276b77f6732cf364d8a4a5dbf5aedbbe16793e8c406ba609c90f0e7669" );
6646 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6649 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6650 hexify( dst_str, output, pt_len );
6651 hexify( tag_str, tag_output, tag_len );
6653 fct_chk( strcmp( (
char *) dst_str,
"4c2d979b9c2dc9cbbd6d4ed04094285a44df92e7ebcdee7feccf04c66c45137a7df12110b8af805f5cae9b4a225c3f8dcfd8f401e05c6ce937cbfc5620acdf3a4917c5b857bff76f3d728cf6a82a5b356fb95d144125d53e568b313cef11c11585d310ca0f7f1234090b1b62536885e9e39b969060ad3893e476e88941fe2cdd" ) == 0 );
6654 fct_chk( strcmp( (
char *) tag_str,
"99cec94a68d3e2d21e30cb25d03cd2" ) == 0 );
6660 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024112_0)
6662 unsigned char key_str[128];
6663 unsigned char src_str[128];
6664 unsigned char dst_str[257];
6665 unsigned char iv_str[128];
6666 unsigned char add_str[128];
6667 unsigned char tag_str[128];
6668 unsigned char output[128];
6669 unsigned char tag_output[16];
6671 unsigned int key_len;
6672 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
6674 memset(key_str, 0x00, 128);
6675 memset(src_str, 0x00, 128);
6676 memset(dst_str, 0x00, 257);
6677 memset(iv_str, 0x00, 128);
6678 memset(add_str, 0x00, 128);
6679 memset(tag_str, 0x00, 128);
6680 memset(output, 0x00, 128);
6681 memset(tag_output, 0x00, 16);
6683 key_len =
unhexify( key_str,
"14b9197b7980d95b71ce1a1de6577ce769d6af4cb45f7c8f" );
6684 pt_len =
unhexify( src_str,
"03b37942f12435f1c19dbcff496738207dc92edf1ab6935b564e693da1865da67fb51e8a838559ae1640da441f22ee79787f1e909cf3c32187b41a48fbc595df1c097fb37881b329fd7b30dd1e05d6052fe81edf2e10786acc8aeeb4fac636aac9432c3be3dafb55c76ec85cc13881735609773350b95eedbdb695b2de071a03" );
6685 iv_len =
unhexify( iv_str,
"cad0cfa7924e1e5cff90d749cfadf9f8" );
6686 add_len =
unhexify( add_str,
"283c8a38c7fc9dce071d4ff9ed79002a6862f9718678b435534e43657a94178353b9ec7e5bb877db5e4f62a2ca6bd557562989363c6fdedbd7f0f3eeec5445c41a2a8bc98117a1443ad4d5dd63a07806622cca8ea6f9f6019bd511634db28651b916e2399bbd84b03f8ec696ed5846f30320adef22ae6d164aed09edcfa25027" );
6688 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6691 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6692 hexify( dst_str, output, pt_len );
6693 hexify( tag_str, tag_output, tag_len );
6695 fct_chk( strcmp( (
char *) dst_str,
"83940097301e9867623c107d4447b250bf6db7d06f9e07b8d8bc6b72b079b725ea1f4b5f79bb80c518bc69a2bd73cf3aa7b88162773ac5b27a2dcccecce66e158ec0875937910e0b6f396cc7d7cac5d53b0fddf3cd70b570a647245a5264927be1b2d9c46fbc6a630b21fead46c4f35af1d163268e49a16083590893e6df4671" ) == 0 );
6696 fct_chk( strcmp( (
char *) tag_str,
"3e3f677e68208208e5315b681b73" ) == 0 );
6702 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024112_1)
6704 unsigned char key_str[128];
6705 unsigned char src_str[128];
6706 unsigned char dst_str[257];
6707 unsigned char iv_str[128];
6708 unsigned char add_str[128];
6709 unsigned char tag_str[128];
6710 unsigned char output[128];
6711 unsigned char tag_output[16];
6713 unsigned int key_len;
6714 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
6716 memset(key_str, 0x00, 128);
6717 memset(src_str, 0x00, 128);
6718 memset(dst_str, 0x00, 257);
6719 memset(iv_str, 0x00, 128);
6720 memset(add_str, 0x00, 128);
6721 memset(tag_str, 0x00, 128);
6722 memset(output, 0x00, 128);
6723 memset(tag_output, 0x00, 16);
6725 key_len =
unhexify( key_str,
"80e2eaa70362203b7561b135db581cf32e9cd816464f0b2e" );
6726 pt_len =
unhexify( src_str,
"62cc2db32584a8d90f348be32224bfdcefd1fd25c5cb05c7e74becb4b40ea09d6495f73adc1fd23d148c11849bd825efdf15e144587f785770d2aef2788b748c338373a0ea43882141bc9f7c693a291c512cdcdea6d5defb2efa2324736df7fc4b434d7f4d423fb1b8853ec3fdf2c1c2881610a8d81da5de5e761f814ed38e35" );
6727 iv_len =
unhexify( iv_str,
"3d7e99ddea0baa45e2f9f2289d2182a3" );
6728 add_len =
unhexify( add_str,
"71663fab717ec4d9da34d4851437f4504dbd71b65b0d04eccc513282c351925c23892958b4c9dc023c5a34944ef507e0b40857d8b508ab7104d13c2fbfce2d086d466291aaa449ad36977837216a496ff375959afe4dd50dc2620a062c926b939ffdb144a656bc04bcca8d1d4fa0a9cb0a5d713721accef2d2c9688a77bb42bc" );
6730 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6733 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6734 hexify( dst_str, output, pt_len );
6735 hexify( tag_str, tag_output, tag_len );
6737 fct_chk( strcmp( (
char *) dst_str,
"1c56b492f50fc362c5bf70622f817e1814ae0b69db7e3055fc9e690d2adb940f9a78cfd7e08044671913baec663d9f9af6dede42fe16d200e8421d22066009535704b05b3775ac41359d7c2697e2f4bec40df69b242392eb30e2d8a664d84cf95ec21797f1ccddb72926cfdff22848d14e373f5e6c3dd349196464c98dc38365" ) == 0 );
6738 fct_chk( strcmp( (
char *) tag_str,
"e0c1b140cd7bc4ded916aab8780e" ) == 0 );
6744 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024112_2)
6746 unsigned char key_str[128];
6747 unsigned char src_str[128];
6748 unsigned char dst_str[257];
6749 unsigned char iv_str[128];
6750 unsigned char add_str[128];
6751 unsigned char tag_str[128];
6752 unsigned char output[128];
6753 unsigned char tag_output[16];
6755 unsigned int key_len;
6756 size_t pt_len, iv_len, add_len, tag_len = 112 / 8;
6758 memset(key_str, 0x00, 128);
6759 memset(src_str, 0x00, 128);
6760 memset(dst_str, 0x00, 257);
6761 memset(iv_str, 0x00, 128);
6762 memset(add_str, 0x00, 128);
6763 memset(tag_str, 0x00, 128);
6764 memset(output, 0x00, 128);
6765 memset(tag_output, 0x00, 16);
6767 key_len =
unhexify( key_str,
"4b7aa649cb1488a658b4387451bf59852e845ec7d2273c69" );
6768 pt_len =
unhexify( src_str,
"245251595d10d719d8d00610d391735fad377b60d7430c7db488488c1ec25c12ee0dee3aac3d7dc19aa602924a1f27a2cfa8f6354315db93b5e4d2b6e8402c4254921e683ca681dfb3c7f433a97f119e01f2acb20988dced8494e086395351f2af356b11832472cbcb109c13ff92f10a4c8fe69bd264c8933cded19a980bdbd2" );
6769 iv_len =
unhexify( iv_str,
"07b50b1aacdadeb03e7488458db03aaf" );
6770 add_len =
unhexify( add_str,
"2a7970ee97d612b63d2a0c29e5045ddfc6621c237bc270b3147fc0191de199b6923947e3bd3750de5155e1df29caf96ac702f948c38619e218138945595156cc5f1dcfde0d1d6a5aec48ff37c9ff2b2209a904c59593779820ea68ad95898c7ca0d0d81583c44feb0fec30665cc56620a8c9408e4275e60f5284ed7c0e58285d" );
6772 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6775 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6776 hexify( dst_str, output, pt_len );
6777 hexify( tag_str, tag_output, tag_len );
6779 fct_chk( strcmp( (
char *) dst_str,
"6bd53e4415765f387239c6664f837371b39f6d7ff22453211e91de5dd14272784fffb4f6b2c0bb8c6b7d1cafc55133aa0d54d410ae383008fdd87645655062322fbaa06df0a2d7ccf4cc170d1f98ec6a7ad524a3e5b07761f8ae53c9c8297faa5b5621c3854643e0085410daf5bf6c7e1f92bbbfc3691eeff1c5241d2307bbc2" ) == 0 );
6780 fct_chk( strcmp( (
char *) tag_str,
"78d37215234f9a32571d0d8b1e51" ) == 0 );
6786 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024104_0)
6788 unsigned char key_str[128];
6789 unsigned char src_str[128];
6790 unsigned char dst_str[257];
6791 unsigned char iv_str[128];
6792 unsigned char add_str[128];
6793 unsigned char tag_str[128];
6794 unsigned char output[128];
6795 unsigned char tag_output[16];
6797 unsigned int key_len;
6798 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
6800 memset(key_str, 0x00, 128);
6801 memset(src_str, 0x00, 128);
6802 memset(dst_str, 0x00, 257);
6803 memset(iv_str, 0x00, 128);
6804 memset(add_str, 0x00, 128);
6805 memset(tag_str, 0x00, 128);
6806 memset(output, 0x00, 128);
6807 memset(tag_output, 0x00, 16);
6809 key_len =
unhexify( key_str,
"512bbb490d062fe5ecc8e5ad95920a9e9b78bec6a7694dc2" );
6810 pt_len =
unhexify( src_str,
"862f2724ad82a53e0574c0a2a0515bd86c5ed0b5ae92278a78ea1a90c03059d08a91d1a46678aef862b56d0320e970b7f941b784841b4d8a38d056f2bd352d48c0028086a36426bbc1436da9e021dcac705b6e03649b426cebd7a235f6d060ab6302d777fc9316db4a85e8c1387648a8f5ce2398a247413cb9374124449e498d" );
6811 iv_len =
unhexify( iv_str,
"2d14fb3e058f97b7c9e9edd1d97cac7e" );
6812 add_len =
unhexify( add_str,
"290078e63c81abfe99010b8344ff1a03dac095e2473d7a31888102e838768892e8216439dc3355aedd073892f4449d9d4d3ea6c25a9152c329d24cc73eaa0004832691740e60f17581201c8f7f4023d8e55faa3942ad725d21dade4c03c790b5370d4cad3923527c20ca925a2ce534a652ed7e032cb1c7906aebbdc24e6b39a4" );
6814 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6817 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6818 hexify( dst_str, output, pt_len );
6819 hexify( tag_str, tag_output, tag_len );
6821 fct_chk( strcmp( (
char *) dst_str,
"44e78cf3a2ce4a5e498315cb8d5e841f926408921f3665d533caebe0a7fa6c164b3d2c0b21ff3a608a7194e3194fda165ada8d5fc2e924316aa4ce201531b857877c5519f875eb49e5908d8d81b69472d03d08c785ee374c5fe91b16aee173761af7ff244571fd40aadabb360f38d301463e9da8cf8dc44d20848688ab3be47b" ) == 0 );
6822 fct_chk( strcmp( (
char *) tag_str,
"6037cb18f8478630bc9d8090e2" ) == 0 );
6828 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024104_1)
6830 unsigned char key_str[128];
6831 unsigned char src_str[128];
6832 unsigned char dst_str[257];
6833 unsigned char iv_str[128];
6834 unsigned char add_str[128];
6835 unsigned char tag_str[128];
6836 unsigned char output[128];
6837 unsigned char tag_output[16];
6839 unsigned int key_len;
6840 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
6842 memset(key_str, 0x00, 128);
6843 memset(src_str, 0x00, 128);
6844 memset(dst_str, 0x00, 257);
6845 memset(iv_str, 0x00, 128);
6846 memset(add_str, 0x00, 128);
6847 memset(tag_str, 0x00, 128);
6848 memset(output, 0x00, 128);
6849 memset(tag_output, 0x00, 16);
6851 key_len =
unhexify( key_str,
"d3964ee03ec5e500f2f8c05313b78615420183fe2950be32" );
6852 pt_len =
unhexify( src_str,
"b9424e4a79a08a7937da1da15061c1eb9a873748691ec9c1fc76aaa164bd34873d07437d203c92c0e89c0c5befedfbb17f721f576473253617547206fb2b340945536cd7a049864d099419cf3f7a9154c0ac8d676b0e9ec02947caa4057560af347ddb46002703f3531f27b2197790ba135e3d3c0709c86f4781890deb50f3ba" );
6853 iv_len =
unhexify( iv_str,
"d3d4e5fdf6e36ac75b4d51c47ce5b8f9" );
6854 add_len =
unhexify( add_str,
"6146a97a2a1c709458bef5049088fdf339e4fe29cbdf519c93d525b71c9fb501c4b58bef49d43cc7699b18fc89cee1a4a45834f517214a77fb3b91d741977308e1585c474245802118d0e2c7003057c4a19752a143195ec2a57102cb2a127d2dbefe1168492e072e74c5f6ee102a0c371b1fe2ddfd8ecbc04c6f42befecd7d46" );
6856 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6859 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6860 hexify( dst_str, output, pt_len );
6861 hexify( tag_str, tag_output, tag_len );
6863 fct_chk( strcmp( (
char *) dst_str,
"a2ae334bac969072e754c0e37765ca6253744941a35587bb4feda54233a7a59f037e971d254c67948b16e4c35f306c0984f00465399405ce701ba554419a736cdff5a1b4ae5ab05e625c91651f74aa64c96ab628243d31021ad56f535eae33a885b45730268f900b6df0aff18a433e2823ddb0628a7026b86b3835160e5121b0" ) == 0 );
6864 fct_chk( strcmp( (
char *) tag_str,
"817be7dcf7adef064161b6c42d" ) == 0 );
6870 FCT_TEST_BGN(gcm_nist_validation_aes_19212810241024104_2)
6872 unsigned char key_str[128];
6873 unsigned char src_str[128];
6874 unsigned char dst_str[257];
6875 unsigned char iv_str[128];
6876 unsigned char add_str[128];
6877 unsigned char tag_str[128];
6878 unsigned char output[128];
6879 unsigned char tag_output[16];
6881 unsigned int key_len;
6882 size_t pt_len, iv_len, add_len, tag_len = 104 / 8;
6884 memset(key_str, 0x00, 128);
6885 memset(src_str, 0x00, 128);
6886 memset(dst_str, 0x00, 257);
6887 memset(iv_str, 0x00, 128);
6888 memset(add_str, 0x00, 128);
6889 memset(tag_str, 0x00, 128);
6890 memset(output, 0x00, 128);
6891 memset(tag_output, 0x00, 16);
6893 key_len =
unhexify( key_str,
"7a8049f521fe9a00f7bf566369e540a48ab59d83305e2829" );
6894 pt_len =
unhexify( src_str,
"67243a336a10b82a0a8638b35dc147c14ac63b20977922a13de459ae2cfbdb262a79004c3a656dfbc073ec8878595e24998dc44b9435439af117c9635c479676f6edb8f522cf01571be5aa5b5bc7d1cc3264436566f8d3c684973d1e88d46282b53836a1ab5a698560e5bf7629ec12cb141867f684b369546a1d8bf48315b6c7" );
6895 iv_len =
unhexify( iv_str,
"e4d81f71e1de8cf4689bfe66a4647f15" );
6896 add_len =
unhexify( add_str,
"4cf6733482c218af832e99970d0717ac942ebace0fed4ce4dfa1f710b9e131a21cc03dd3ced25b78bccd1991a30bb53b463c1440b6543b19af91e31c18866c2acebb78c2a340b930518e61a63ff8d6a6e8e7960523de40a178614dad4ce5ab253e1090a097f8ec00dfeecb46aa0e8f772f01c4e706de7e824386a13944600542" );
6898 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6901 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6902 hexify( dst_str, output, pt_len );
6903 hexify( tag_str, tag_output, tag_len );
6905 fct_chk( strcmp( (
char *) dst_str,
"cfa8ba247ada9e6b3e5ab7dd0a7108574cc811c2986cad951168559ff697b77684880ec266f0b7d87a2ff559e368a85846becee312bb2991692d928a7c191cfdb7f1468f8b84be4bb592ea640743443bd4941a8b856c57be21eb22fcb3f6c0a80728ddc9dc5fab1c77dfceb91699009054c5a4eb0714a10b74cf0e09fa630299" ) == 0 );
6906 fct_chk( strcmp( (
char *) tag_str,
"1dcee251cda10b2ea8f2bfe6a0" ) == 0 );
6912 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102496_0)
6914 unsigned char key_str[128];
6915 unsigned char src_str[128];
6916 unsigned char dst_str[257];
6917 unsigned char iv_str[128];
6918 unsigned char add_str[128];
6919 unsigned char tag_str[128];
6920 unsigned char output[128];
6921 unsigned char tag_output[16];
6923 unsigned int key_len;
6924 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
6926 memset(key_str, 0x00, 128);
6927 memset(src_str, 0x00, 128);
6928 memset(dst_str, 0x00, 257);
6929 memset(iv_str, 0x00, 128);
6930 memset(add_str, 0x00, 128);
6931 memset(tag_str, 0x00, 128);
6932 memset(output, 0x00, 128);
6933 memset(tag_output, 0x00, 16);
6935 key_len =
unhexify( key_str,
"657567a56e585c84e4033268f08f712aa280015b77cd657f" );
6936 pt_len =
unhexify( src_str,
"96d889651c4f3f5120bee233f6395fa0bbba1f6548b109be568ff96f11d24e34d67beb6c20268feba89240674b0b4552d0a6455d43e8edf943da3d8d785a5221df8ddb3a98d2fc611ac7362aef71f8f004eb455a16d1dcac488ee83d4f11c4a00c29d9990c5a2a97b897d67e51faa40999b1e510ac62fa4859123cdb37d202ae" );
6937 iv_len =
unhexify( iv_str,
"94dc757b6bdbfe925b762923cd0a08ed" );
6938 add_len =
unhexify( add_str,
"a2c54e8da7dca49c73550bd1f5e68449295f062d5dfe5aa4201bdf353a2a1ac9c3c61f2b5482184cef481fa378a1ea990ce203c2c7d76993c62b415ece06b9b7caacec0c4147c0cbf292e528d97c1a176fcb1ca6147cfa4bcce92cbdfe617738a92273282c7a65fcb997bceb867ce01ec74541582d3961dddf3a2af21cad3ce6" );
6940 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6943 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6944 hexify( dst_str, output, pt_len );
6945 hexify( tag_str, tag_output, tag_len );
6947 fct_chk( strcmp( (
char *) dst_str,
"55a5d07a77fc37090c4206f19483aa3cc03815194ded71c2b2806ad9563edfebfcf962806ba829373947e3e93f4f39794514ad7b6dbc626e29fbc35f90f573da33ab6afb5c94383fd0fdd1ee074d650d192f6d08fbd1e24a6966a81a2ffd83fab644ee914952de77e9427262314ac47c11a44bf7d2890f9b9980499bb6a1f692" ) == 0 );
6948 fct_chk( strcmp( (
char *) tag_str,
"41c72043f6116ee6f7c11986" ) == 0 );
6954 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102496_1)
6956 unsigned char key_str[128];
6957 unsigned char src_str[128];
6958 unsigned char dst_str[257];
6959 unsigned char iv_str[128];
6960 unsigned char add_str[128];
6961 unsigned char tag_str[128];
6962 unsigned char output[128];
6963 unsigned char tag_output[16];
6965 unsigned int key_len;
6966 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
6968 memset(key_str, 0x00, 128);
6969 memset(src_str, 0x00, 128);
6970 memset(dst_str, 0x00, 257);
6971 memset(iv_str, 0x00, 128);
6972 memset(add_str, 0x00, 128);
6973 memset(tag_str, 0x00, 128);
6974 memset(output, 0x00, 128);
6975 memset(tag_output, 0x00, 16);
6977 key_len =
unhexify( key_str,
"61159242d48c2ca0c30377ec2ad701135adb62d113c9f9ba" );
6978 pt_len =
unhexify( src_str,
"8ae40603f6cdae4b63ac7b18b4bcbb83c65867c2ae270102efb6f00aa8af5d0400dc95085910a50a16cbcf71f06c3f3eab71345d59c6054aaac02971111c7146add8c072158e0b374d481bb540036a136ccb91523f96f24ea237940ab011ad38f2a3095c0785df91604be1fe7734cc4119b27aa784875d0a251c678900334a0b" );
6979 iv_len =
unhexify( iv_str,
"4fda7236bd6ebe0b316feeea31cb5ebc" );
6980 add_len =
unhexify( add_str,
"ed28e9954634ec2c9e2df493062abf3ea3e199299053a15ce8d6fe051d1076287e4e7c0b2bab0a599b763a29d0aab680626f280c4f5ad94b7792d9af532681f6e4eb2672781f2342304daff902d03b396853eaf585af4d3bf5078d064e9eea6e94e667722f15c004f4cf52253a5c65b75319b07ba539558d8a2b552390a21577" );
6982 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
6985 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
6986 hexify( dst_str, output, pt_len );
6987 hexify( tag_str, tag_output, tag_len );
6989 fct_chk( strcmp( (
char *) dst_str,
"dba251e35422f60f902f594bb58dce37131e8ae06b5f40ad23c4a70a5e25fe24c76982c9bc11a7f4e3cc62d8c1326170432633eba1634972a9bcd093b08e1c63ece07c4be79cadc888b0408e40c09636e1cf1e5e9a6f2ea44eea5409a2ffe9c3ac9a18ad7aa9041f08eb109c01ed90732a8afe0694319ef98a0269685b4d16b1" ) == 0 );
6990 fct_chk( strcmp( (
char *) tag_str,
"b0feebfc8324fd1e9e40f7f0" ) == 0 );
6996 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102496_2)
6998 unsigned char key_str[128];
6999 unsigned char src_str[128];
7000 unsigned char dst_str[257];
7001 unsigned char iv_str[128];
7002 unsigned char add_str[128];
7003 unsigned char tag_str[128];
7004 unsigned char output[128];
7005 unsigned char tag_output[16];
7007 unsigned int key_len;
7008 size_t pt_len, iv_len, add_len, tag_len = 96 / 8;
7010 memset(key_str, 0x00, 128);
7011 memset(src_str, 0x00, 128);
7012 memset(dst_str, 0x00, 257);
7013 memset(iv_str, 0x00, 128);
7014 memset(add_str, 0x00, 128);
7015 memset(tag_str, 0x00, 128);
7016 memset(output, 0x00, 128);
7017 memset(tag_output, 0x00, 16);
7019 key_len =
unhexify( key_str,
"5b4c37150f8bf0e14e0bfd37ac14e606dd273577007f24b4" );
7020 pt_len =
unhexify( src_str,
"48c6486b2691b86f5f107e8fe0122a821248206d2dd3ce898a2bb3772202ffe97292852bc61513529ad95faf6383b5f6c5a7c16c4cbe33cb02e5e50f32db95ee2962aae1c9c0f5470b3baa216cc19be5ab86b53316beef14397effb8afba5b5159074e26bf5dd3b700f4ea5abd43e93ca18494e1779b8c48fcd51f46664dd262" );
7021 iv_len =
unhexify( iv_str,
"664f553a14dcd4dcba42f06e10b186aa" );
7022 add_len =
unhexify( add_str,
"4386e28ebd16d8276c6e84e1d7a3d9f1283e12cb177478ab46acb256b71df5a2da868134ed72ef43f73e8226df1f34e350b7f936bd43caff84a317b1e5b2e9a2b92ccab1e3e817f93222dd1e2cf870d45a8458e57948a649360c6e2439bbcc682383b50bcd3d8b000592c3ca599e598a03b9953af485f1ecc22501dcacb7110e" );
7024 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
7027 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
7028 hexify( dst_str, output, pt_len );
7029 hexify( tag_str, tag_output, tag_len );
7031 fct_chk( strcmp( (
char *) dst_str,
"05fdbb5ad403d64011e15d27cd6f5a2247e018e479e58ad3fee1e0e8ddd9e114c0e82f2c947ff9af525ce752f4aea959463899542b85c9b413d065ea175103c3b3c35f56eea52af2c54ec08a1d5b7cd5ee4f59de8be86512b770e42ab176b6b70ccbcd264d6d5cfdd2e52e618dc24251ac339ea38cdc446c778d2db3c7c3e93d" ) == 0 );
7032 fct_chk( strcmp( (
char *) tag_str,
"77f32401db21adb775e7f1d0" ) == 0 );
7038 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102464_0)
7040 unsigned char key_str[128];
7041 unsigned char src_str[128];
7042 unsigned char dst_str[257];
7043 unsigned char iv_str[128];
7044 unsigned char add_str[128];
7045 unsigned char tag_str[128];
7046 unsigned char output[128];
7047 unsigned char tag_output[16];
7049 unsigned int key_len;
7050 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
7052 memset(key_str, 0x00, 128);
7053 memset(src_str, 0x00, 128);
7054 memset(dst_str, 0x00, 257);
7055 memset(iv_str, 0x00, 128);
7056 memset(add_str, 0x00, 128);
7057 memset(tag_str, 0x00, 128);
7058 memset(output, 0x00, 128);
7059 memset(tag_output, 0x00, 16);
7061 key_len =
unhexify( key_str,
"531a380b109098eafd997bd25bfde4868d2a1ca781795e9a" );
7062 pt_len =
unhexify( src_str,
"466237db78d4c770a658b9693420a2e087c978fcc434c9ac82f3e2447b2fa08be32d2ce6da25846555ffe5764234b07b35dd1d1bcb710e8a49f918f2c873681f32765b092a836e9418faba61dc59a254c923159be16f585e526616fedd3acfe2748ce19ee03868ea9836bee2c6acb1b821e231eb2d30d300387c93390d51e3a5" );
7063 iv_len =
unhexify( iv_str,
"ad079d0b958f09732aaa2158f6215573" );
7064 add_len =
unhexify( add_str,
"09e002c2c48beaf1122411e8624522a9e90cc3f2a040c52ffcb91136519277c39fd6a79292b8835e0fbcaef2279218106aaf75036590f8a46f6b6912053a3b391849f7e204f096288d6141d5f80c7f91dd2f2b6ebc1ced6af8216e0a594814b56bd592df800299b29e26ed7461ba3f6f3cf151b9c10ad634a01d9c5e578aa372" );
7066 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
7069 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
7070 hexify( dst_str, output, pt_len );
7071 hexify( tag_str, tag_output, tag_len );
7073 fct_chk( strcmp( (
char *) dst_str,
"d1f49f94e6fbef7e21abad23e16c06fcdfa75a8c342be67baea8e0e57dbcd2971276e993faa124ac81e6be18f68af303518efd926513cee9dbcc5ef6cf5e9c068a1210e53fdd56776148d51597e359dbaa0570b4fe15476ccc9aa79f7c765755b6f694af4269b9e18fc62a0d47708bca67dcf080e200718c22bac256f641e7a2" ) == 0 );
7074 fct_chk( strcmp( (
char *) tag_str,
"01ec395c99a17db6" ) == 0 );
7080 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102464_1)
7082 unsigned char key_str[128];
7083 unsigned char src_str[128];
7084 unsigned char dst_str[257];
7085 unsigned char iv_str[128];
7086 unsigned char add_str[128];
7087 unsigned char tag_str[128];
7088 unsigned char output[128];
7089 unsigned char tag_output[16];
7091 unsigned int key_len;
7092 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
7094 memset(key_str, 0x00, 128);
7095 memset(src_str, 0x00, 128);
7096 memset(dst_str, 0x00, 257);
7097 memset(iv_str, 0x00, 128);
7098 memset(add_str, 0x00, 128);
7099 memset(tag_str, 0x00, 128);
7100 memset(output, 0x00, 128);
7101 memset(tag_output, 0x00, 16);
7103 key_len =
unhexify( key_str,
"fbd7a92120ff973ec69b6a8189c6ea827ca20743a8781518" );
7104 pt_len =
unhexify( src_str,
"1583c1578a8c8d272a970f05d875f199e497c55f03f10f7bc934fee21c30379dad3c580b3f99304a5747b61fd43428506439ede2c57f5229e13da9cb7cd6174cccbb397e98fb90455ccf3ea3b1304f432a070a2eb5205ed863326b3b86d4eb7f54ee2ffcd50ed6ef01b3ee216c53f4f2659a88fb6343396b2ded0b389c6266c5" );
7105 iv_len =
unhexify( iv_str,
"57658c71b2c45f6ae2d1b6775a9731cf" );
7106 add_len =
unhexify( add_str,
"45ca8a168ecca7a42847b779ef152766b902192db621d2770b56c7d592207afaf52d19a6059feb76e96b90628995bd6517af3f114e97af8d602a493b77405e93095fee6761877dc292fab696a4303102dece60951cca20cacb171abdcfd0ef6da6c90b44edba63b9b6087d876b3fff24dea909899ebd0d0371c424f51a9a84b8" );
7108 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
7111 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
7112 hexify( dst_str, output, pt_len );
7113 hexify( tag_str, tag_output, tag_len );
7115 fct_chk( strcmp( (
char *) dst_str,
"58a290cf0e774293d1b55f5ef8a305f68605c0c81668b8a1ba95fceeaa65229404e18fa54dd811a6af085c98b8854d0f956adc2aaad742cafa9ed53d7cb445451ee7a4dc1e8399ec7e5b4d004ecd22496565bf444b2e3d82ddf6a6d5e6256c5095a699d7ff3f8cf2addec73e21013ee6f3dfc0a3abf316ea5ee1d6943bc394e1" ) == 0 );
7116 fct_chk( strcmp( (
char *) tag_str,
"af737ec3512da2b4" ) == 0 );
7122 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102464_2)
7124 unsigned char key_str[128];
7125 unsigned char src_str[128];
7126 unsigned char dst_str[257];
7127 unsigned char iv_str[128];
7128 unsigned char add_str[128];
7129 unsigned char tag_str[128];
7130 unsigned char output[128];
7131 unsigned char tag_output[16];
7133 unsigned int key_len;
7134 size_t pt_len, iv_len, add_len, tag_len = 64 / 8;
7136 memset(key_str, 0x00, 128);
7137 memset(src_str, 0x00, 128);
7138 memset(dst_str, 0x00, 257);
7139 memset(iv_str, 0x00, 128);
7140 memset(add_str, 0x00, 128);
7141 memset(tag_str, 0x00, 128);
7142 memset(output, 0x00, 128);
7143 memset(tag_output, 0x00, 16);
7145 key_len =
unhexify( key_str,
"54bfc8379e0a8180b931c5188c95ab3ed3461d6e9004d182" );
7146 pt_len =
unhexify( src_str,
"93327664eb576bbb64e4ff061874346b4e80a779cdeb1fbe630bf5e4307d4f2c5d5ecc94aa8bdea755c1af165fc8925bfcdf128c1ee6571e9f8344b22dfc90ed893316031661a9438b305396f3a80452c9b11924163b7fc4422b00dc58ee0e674710239975a2cf3253bf2601cd155e09547a5f3be1adda84a4b29631a8e13161" );
7147 iv_len =
unhexify( iv_str,
"9d15df8de4150f44d342f2031de3611c" );
7148 add_len =
unhexify( add_str,
"63331936d2972abd44c1c9f62e42bfa932dff8cc75d9f555f5a7847d08558e76f5393e08909760edbef8d2922a7ca8e1c0c505ca627c02af73253791bb35ff080b4db7dddf4c8b304999ff645227cd79f13ac87f9c963b93a79a0e946e5781cdbf1b4b1967a75314f19c7219e3b69dc2c24ba09fbbdf7184278f82818bdd0958" );
7150 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
7153 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
7154 hexify( dst_str, output, pt_len );
7155 hexify( tag_str, tag_output, tag_len );
7157 fct_chk( strcmp( (
char *) dst_str,
"18ff87dccbc24c396190c7b37c4a77f86e609db7fb2b326802714d0f196b00b84af887f1b3bd30ee0b0b192d0801ac4e59ac40e5c652b3da32aa024da3acf648da0253674c391d260c0674853c7821861059772c9a7f2775a7ef77d1d31a6ec1c51c5f3089bb516f8cf52d5a15724281086abd92a74d255b7cc84b5051be4e5b" ) == 0 );
7158 fct_chk( strcmp( (
char *) tag_str,
"bf0f7f8084e79da5" ) == 0 );
7164 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102432_0)
7166 unsigned char key_str[128];
7167 unsigned char src_str[128];
7168 unsigned char dst_str[257];
7169 unsigned char iv_str[128];
7170 unsigned char add_str[128];
7171 unsigned char tag_str[128];
7172 unsigned char output[128];
7173 unsigned char tag_output[16];
7175 unsigned int key_len;
7176 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
7178 memset(key_str, 0x00, 128);
7179 memset(src_str, 0x00, 128);
7180 memset(dst_str, 0x00, 257);
7181 memset(iv_str, 0x00, 128);
7182 memset(add_str, 0x00, 128);
7183 memset(tag_str, 0x00, 128);
7184 memset(output, 0x00, 128);
7185 memset(tag_output, 0x00, 16);
7187 key_len =
unhexify( key_str,
"21b775ef8c40a5387d6c8eda4e90d0a00c795681a2887dfc" );
7188 pt_len =
unhexify( src_str,
"6346f84301d6d83e1c5bad44fa7e0821f35723713ee8d4a9e2bf15abf953425b09bd77b2360f4e62e82bf9e14e2b56be51d032aa8a96e894f19f3e84630f9eae831b329f7638b09de7210cd29778059ef1d0bc039c1e10405f3ae5e4ca33216adcfc21869d9f825344d62b50bab03f7aa7b92fdb94951a68acd01f1dee75e428" );
7189 iv_len =
unhexify( iv_str,
"9763e6187d4b96b1801d1f6efe7e80a5" );
7190 add_len =
unhexify( add_str,
"3bd523c16a0022b780ae8318a28f001502120bb26e2f65f4fe94019686f9d1df330e70cef1b2ba4b6ce1f7ef37750f47e602843cbc5f13ff2ceadc5091eb3601604b70bd4acad3d61950b9dd2cbfd83a391223c8e09fddd4020c0f8a8a7057139fd92f3bbe034f03cc48afdde064c8b13ea942ec0d621db959ec9d5fa95afe45" );
7192 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
7195 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
7196 hexify( dst_str, output, pt_len );
7197 hexify( tag_str, tag_output, tag_len );
7199 fct_chk( strcmp( (
char *) dst_str,
"f25408848bc27ab087b3ea053762837a534c3702dd8be01d79f075f61d76ac1d6557d392e1fab475cc7d13a5f6be6f0718bad71c3c85b5996bd3c0159e264930988e3ed506bcc94fabecfb58caaf56e2e4315bb50817cba765636d1faa91147b3880815eeb90d0934180e49132833abfa6279247d9dd4048dff851e9a551ee1c" ) == 0 );
7200 fct_chk( strcmp( (
char *) tag_str,
"d1fb9aed" ) == 0 );
7206 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102432_1)
7208 unsigned char key_str[128];
7209 unsigned char src_str[128];
7210 unsigned char dst_str[257];
7211 unsigned char iv_str[128];
7212 unsigned char add_str[128];
7213 unsigned char tag_str[128];
7214 unsigned char output[128];
7215 unsigned char tag_output[16];
7217 unsigned int key_len;
7218 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
7220 memset(key_str, 0x00, 128);
7221 memset(src_str, 0x00, 128);
7222 memset(dst_str, 0x00, 257);
7223 memset(iv_str, 0x00, 128);
7224 memset(add_str, 0x00, 128);
7225 memset(tag_str, 0x00, 128);
7226 memset(output, 0x00, 128);
7227 memset(tag_output, 0x00, 16);
7229 key_len =
unhexify( key_str,
"8a7d8197d9ceebd8e3f6b3bfb74877ccf649ac91d7057af5" );
7230 pt_len =
unhexify( src_str,
"37b01df357561f5aa43b5b4b0081148213f7b74babc80f4b3c6dd78ad17687f11443cd4a57f8d7a74ca3080e2a229f78d8e6db276c1142d5f4ee764eaf09cfd70c596d7a2cad5360c2de20d5e17ec6e06a9b049bb10f8742a30a94270cc6d7709b2f09f3cb8347e41117b7ddb99e4a939f3094c016330a8f170ccccb9d3651fb" );
7231 iv_len =
unhexify( iv_str,
"db5144951a9f1721397b7321713a723e" );
7232 add_len =
unhexify( add_str,
"ad72fa5a05adc40fb38245da019cbf50958ccfe26abf67dfdd49f4c4af6bda8bfc99d557913b2634c5c65d33ca909360adf598b703db1dbcc29481b17ca42fce3315ea1454693b5843e751fafd78158fc040c1cbe607063ba9c0ac02ae4b88989e3cc63adda8427032c70560349e1a8ec847906a9a7b0422a694a1f9eb2b3b72" );
7234 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
7237 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
7238 hexify( dst_str, output, pt_len );
7239 hexify( tag_str, tag_output, tag_len );
7241 fct_chk( strcmp( (
char *) dst_str,
"6985ec525cfe869e1709751eb6f1ff0aabcb39ae3aa708adc452ce1a8cad8ab4f1739f660b2841566f1f5c9e15e846de7f86ca1dc085188fcaa4a3f839ab2a5f0cfd36e36965ae519fe14f98899ccb07a3ca15ec705e3160df6dbc37ab89c882012eefe51e4da8d6d6b84b3144ca87a90864ff5390abfb92992e44c46807b3c8" ) == 0 );
7242 fct_chk( strcmp( (
char *) tag_str,
"c51604f5" ) == 0 );
7248 FCT_TEST_BGN(gcm_nist_validation_aes_1921281024102432_2)
7250 unsigned char key_str[128];
7251 unsigned char src_str[128];
7252 unsigned char dst_str[257];
7253 unsigned char iv_str[128];
7254 unsigned char add_str[128];
7255 unsigned char tag_str[128];
7256 unsigned char output[128];
7257 unsigned char tag_output[16];
7259 unsigned int key_len;
7260 size_t pt_len, iv_len, add_len, tag_len = 32 / 8;
7262 memset(key_str, 0x00, 128);
7263 memset(src_str, 0x00, 128);
7264 memset(dst_str, 0x00, 257);
7265 memset(iv_str, 0x00, 128);
7266 memset(add_str, 0x00, 128);
7267 memset(tag_str, 0x00, 128);
7268 memset(output, 0x00, 128);
7269 memset(tag_output, 0x00, 16);
7271 key_len =
unhexify( key_str,
"713358e746dd84ab27b8adb3b17ea59cd75fa6cb0c13d1a8" );
7272 pt_len =
unhexify( src_str,
"35b8b655efdf2d09f5ed0233c9eeb0b6f85e513834848cd594dba3c6e64f78e7af4a7a6d53bba7b43764334d6373360ae3b73b1e765978dffa7dbd805fda7825b8e317e8d3f1314aa97f877be815439c5da845028d1686283735aefac79cdb9e02ec3590091cb507089b9174cd9a6111f446feead91f19b80fd222fc6299fd1c" );
7273 iv_len =
unhexify( iv_str,
"26ed909f5851961dd57fa950b437e17c" );
7274 add_len =
unhexify( add_str,
"c9469ad408764cb7d417f800d3d84f03080cee9bbd53f652763accde5fba13a53a12d990094d587345da2cdc99357b9afd63945ca07b760a2c2d4948dbadb1312670ccde87655a6a68edb5982d2fcf733bb4101d38cdb1a4942a5d410f4c45f5ddf00889bc1fe5ec69b40ae8aaee60ee97bea096eeef0ea71736efdb0d8a5ec9" );
7276 fct_chk(
gcm_init( &ctx, key_str, key_len * 8 ) == 0 );
7279 fct_chk(
gcm_crypt_and_tag( &ctx,
GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 );
7280 hexify( dst_str, output, pt_len );
7281 hexify( tag_str, tag_output, tag_len );
7283 fct_chk( strcmp( (
char *) dst_str,
"cc3f9983e1d673ec2c86ae4c1e1b04e30f9f395f67c36838e15ce825b05d37e9cd40041470224da345aa2da5dfb3e0c561dd05ba7984a1332541d58e8f9160e7e8457e717bab203de3161a72b7aedfa53616b16ca77fd28d566fbf7431be559caa1a129b2f29b9c5bbf3eaba594d6650c62907eb28e176f27c3be7a3aa24cef6" ) == 0 );
7284 fct_chk( strcmp( (
char *) tag_str,
"5be7611b" ) == 0 );