summaryrefslogtreecommitdiff
path: root/src/regress/lib
diff options
context:
space:
mode:
authorjoshua <>2023-07-19 15:06:57 +0000
committerjoshua <>2023-07-19 15:06:57 +0000
commit29625083093c8eb6452d2267244882bde94a21e1 (patch)
tree770bca07e3fce22ebf70241f5147788080c14b82 /src/regress/lib
parentf56289cbe3d008038d4ff3feae24c868158a1a09 (diff)
downloadopenbsd-29625083093c8eb6452d2267244882bde94a21e1.tar.gz
openbsd-29625083093c8eb6452d2267244882bde94a21e1.tar.bz2
openbsd-29625083093c8eb6452d2267244882bde94a21e1.zip
Add test coverage for SHA3
ok tb@
Diffstat (limited to 'src/regress/lib')
-rw-r--r--src/regress/lib/libcrypto/sha/sha_test.c371
1 files changed, 344 insertions, 27 deletions
diff --git a/src/regress/lib/libcrypto/sha/sha_test.c b/src/regress/lib/libcrypto/sha/sha_test.c
index a04120e4d6..3137c234c5 100644
--- a/src/regress/lib/libcrypto/sha/sha_test.c
+++ b/src/regress/lib/libcrypto/sha/sha_test.c
@@ -1,6 +1,6 @@
1/* $OpenBSD: sha_test.c,v 1.4 2022/09/02 13:23:05 tb Exp $ */ 1/* $OpenBSD: sha_test.c,v 1.5 2023/07/19 15:06:57 joshua Exp $ */
2/* 2/*
3 * Copyright (c) 2022 Joshua Sing <joshua@hypera.dev> 3 * Copyright (c) 2022, 2023 Joshua Sing <joshua@hypera.dev>
4 * 4 *
5 * Permission to use, copy, modify, and distribute this software for any 5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above 6 * purpose with or without fee is hereby granted, provided that the above
@@ -303,6 +303,234 @@ static const struct sha_test sha_tests[] = {
303 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09, 303 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09,
304 } 304 }
305 }, 305 },
306
307 /* SHA3-224 */
308 {
309 .algorithm = NID_sha3_224,
310 .in = "abc",
311 .in_len = 3,
312 .out = {
313 0xe6, 0x42, 0x82, 0x4c, 0x3f, 0x8c, 0xf2, 0x4a,
314 0xd0, 0x92, 0x34, 0xee, 0x7d, 0x3c, 0x76, 0x6f,
315 0xc9, 0xa3, 0xa5, 0x16, 0x8d, 0x0c, 0x94, 0xad,
316 0x73, 0xb4, 0x6f, 0xdf,
317 },
318 },
319 {
320 .algorithm = NID_sha3_224,
321 .in = "",
322 .in_len = 0,
323 .out = {
324 0x6b, 0x4e, 0x03, 0x42, 0x36, 0x67, 0xdb, 0xb7,
325 0x3b, 0x6e, 0x15, 0x45, 0x4f, 0x0e, 0xb1, 0xab,
326 0xd4, 0x59, 0x7f, 0x9a, 0x1b, 0x07, 0x8e, 0x3f,
327 0x5b, 0x5a, 0x6b, 0xc7,
328 },
329 },
330 {
331 .algorithm = NID_sha3_224,
332 .in =
333 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmno"
334 "mnopnopq",
335 .in_len = 56,
336 .out = {
337 0x8a, 0x24, 0x10, 0x8b, 0x15, 0x4a, 0xda, 0x21,
338 0xc9, 0xfd, 0x55, 0x74, 0x49, 0x44, 0x79, 0xba,
339 0x5c, 0x7e, 0x7a, 0xb7, 0x6e, 0xf2, 0x64, 0xea,
340 0xd0, 0xfc, 0xce, 0x33,
341 },
342 },
343 {
344 .algorithm = NID_sha3_224,
345 .in =
346 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklm"
347 "ghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrs"
348 "mnopqrstnopqrstu",
349 .in_len = 112,
350 .out = {
351 0x54, 0x3e, 0x68, 0x68, 0xe1, 0x66, 0x6c, 0x1a,
352 0x64, 0x36, 0x30, 0xdf, 0x77, 0x36, 0x7a, 0xe5,
353 0xa6, 0x2a, 0x85, 0x07, 0x0a, 0x51, 0xc1, 0x4c,
354 0xbf, 0x66, 0x5c, 0xbc,
355 },
356 },
357
358 /* SHA3-256 */
359 {
360 .algorithm = NID_sha3_256,
361 .in = "abc",
362 .in_len = 3,
363 .out = {
364 0x3a, 0x98, 0x5d, 0xa7, 0x4f, 0xe2, 0x25, 0xb2,
365 0x04, 0x5c, 0x17, 0x2d, 0x6b, 0xd3, 0x90, 0xbd,
366 0x85, 0x5f, 0x08, 0x6e, 0x3e, 0x9d, 0x52, 0x5b,
367 0x46, 0xbf, 0xe2, 0x45, 0x11, 0x43, 0x15, 0x32,
368 },
369 },
370 {
371 .algorithm = NID_sha3_256,
372 .in = "",
373 .in_len = 0,
374 .out = {
375 0xa7, 0xff, 0xc6, 0xf8, 0xbf, 0x1e, 0xd7, 0x66,
376 0x51, 0xc1, 0x47, 0x56, 0xa0, 0x61, 0xd6, 0x62,
377 0xf5, 0x80, 0xff, 0x4d, 0xe4, 0x3b, 0x49, 0xfa,
378 0x82, 0xd8, 0x0a, 0x4b, 0x80, 0xf8, 0x43, 0x4a,
379 },
380 },
381 {
382 .algorithm = NID_sha3_256,
383 .in =
384 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmno"
385 "mnopnopq",
386 .in_len = 56,
387 .out = {
388 0x41, 0xc0, 0xdb, 0xa2, 0xa9, 0xd6, 0x24, 0x08,
389 0x49, 0x10, 0x03, 0x76, 0xa8, 0x23, 0x5e, 0x2c,
390 0x82, 0xe1, 0xb9, 0x99, 0x8a, 0x99, 0x9e, 0x21,
391 0xdb, 0x32, 0xdd, 0x97, 0x49, 0x6d, 0x33, 0x76,
392 },
393 },
394 {
395 .algorithm = NID_sha3_256,
396 .in =
397 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklm"
398 "ghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrs"
399 "mnopqrstnopqrstu",
400 .in_len = 112,
401 .out = {
402 0x91, 0x6f, 0x60, 0x61, 0xfe, 0x87, 0x97, 0x41,
403 0xca, 0x64, 0x69, 0xb4, 0x39, 0x71, 0xdf, 0xdb,
404 0x28, 0xb1, 0xa3, 0x2d, 0xc3, 0x6c, 0xb3, 0x25,
405 0x4e, 0x81, 0x2b, 0xe2, 0x7a, 0xad, 0x1d, 0x18,
406 },
407 },
408
409 /* SHA3-384 */
410 {
411 .algorithm = NID_sha3_384,
412 .in = "abc",
413 .in_len = 3,
414 .out = {
415 0xec, 0x01, 0x49, 0x82, 0x88, 0x51, 0x6f, 0xc9,
416 0x26, 0x45, 0x9f, 0x58, 0xe2, 0xc6, 0xad, 0x8d,
417 0xf9, 0xb4, 0x73, 0xcb, 0x0f, 0xc0, 0x8c, 0x25,
418 0x96, 0xda, 0x7c, 0xf0, 0xe4, 0x9b, 0xe4, 0xb2,
419 0x98, 0xd8, 0x8c, 0xea, 0x92, 0x7a, 0xc7, 0xf5,
420 0x39, 0xf1, 0xed, 0xf2, 0x28, 0x37, 0x6d, 0x25,
421 },
422 },
423 {
424 .algorithm = NID_sha3_384,
425 .in = "",
426 .in_len = 0,
427 .out = {
428 0x0c, 0x63, 0xa7, 0x5b, 0x84, 0x5e, 0x4f, 0x7d,
429 0x01, 0x10, 0x7d, 0x85, 0x2e, 0x4c, 0x24, 0x85,
430 0xc5, 0x1a, 0x50, 0xaa, 0xaa, 0x94, 0xfc, 0x61,
431 0x99, 0x5e, 0x71, 0xbb, 0xee, 0x98, 0x3a, 0x2a,
432 0xc3, 0x71, 0x38, 0x31, 0x26, 0x4a, 0xdb, 0x47,
433 0xfb, 0x6b, 0xd1, 0xe0, 0x58, 0xd5, 0xf0, 0x04,
434 },
435 },
436 {
437 .algorithm = NID_sha3_384,
438 .in =
439 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmno"
440 "mnopnopq",
441 .in_len = 56,
442 .out = {
443 0x99, 0x1c, 0x66, 0x57, 0x55, 0xeb, 0x3a, 0x4b,
444 0x6b, 0xbd, 0xfb, 0x75, 0xc7, 0x8a, 0x49, 0x2e,
445 0x8c, 0x56, 0xa2, 0x2c, 0x5c, 0x4d, 0x7e, 0x42,
446 0x9b, 0xfd, 0xbc, 0x32, 0xb9, 0xd4, 0xad, 0x5a,
447 0xa0, 0x4a, 0x1f, 0x07, 0x6e, 0x62, 0xfe, 0xa1,
448 0x9e, 0xef, 0x51, 0xac, 0xd0, 0x65, 0x7c, 0x22,
449 },
450 },
451 {
452 .algorithm = NID_sha3_384,
453 .in =
454 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklm"
455 "ghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrs"
456 "mnopqrstnopqrstu",
457 .in_len = 112,
458 .out = {
459 0x79, 0x40, 0x7d, 0x3b, 0x59, 0x16, 0xb5, 0x9c,
460 0x3e, 0x30, 0xb0, 0x98, 0x22, 0x97, 0x47, 0x91,
461 0xc3, 0x13, 0xfb, 0x9e, 0xcc, 0x84, 0x9e, 0x40,
462 0x6f, 0x23, 0x59, 0x2d, 0x04, 0xf6, 0x25, 0xdc,
463 0x8c, 0x70, 0x9b, 0x98, 0xb4, 0x3b, 0x38, 0x52,
464 0xb3, 0x37, 0x21, 0x61, 0x79, 0xaa, 0x7f, 0xc7,
465 },
466 },
467
468 /* SHA3-512 */
469 {
470 .algorithm = NID_sha3_512,
471 .in = "abc",
472 .in_len = 3,
473 .out = {
474 0xb7, 0x51, 0x85, 0x0b, 0x1a, 0x57, 0x16, 0x8a,
475 0x56, 0x93, 0xcd, 0x92, 0x4b, 0x6b, 0x09, 0x6e,
476 0x08, 0xf6, 0x21, 0x82, 0x74, 0x44, 0xf7, 0x0d,
477 0x88, 0x4f, 0x5d, 0x02, 0x40, 0xd2, 0x71, 0x2e,
478 0x10, 0xe1, 0x16, 0xe9, 0x19, 0x2a, 0xf3, 0xc9,
479 0x1a, 0x7e, 0xc5, 0x76, 0x47, 0xe3, 0x93, 0x40,
480 0x57, 0x34, 0x0b, 0x4c, 0xf4, 0x08, 0xd5, 0xa5,
481 0x65, 0x92, 0xf8, 0x27, 0x4e, 0xec, 0x53, 0xf0,
482 },
483 },
484 {
485 .algorithm = NID_sha3_512,
486 .in = "",
487 .in_len = 0,
488 .out = {
489 0xa6, 0x9f, 0x73, 0xcc, 0xa2, 0x3a, 0x9a, 0xc5,
490 0xc8, 0xb5, 0x67, 0xdc, 0x18, 0x5a, 0x75, 0x6e,
491 0x97, 0xc9, 0x82, 0x16, 0x4f, 0xe2, 0x58, 0x59,
492 0xe0, 0xd1, 0xdc, 0xc1, 0x47, 0x5c, 0x80, 0xa6,
493 0x15, 0xb2, 0x12, 0x3a, 0xf1, 0xf5, 0xf9, 0x4c,
494 0x11, 0xe3, 0xe9, 0x40, 0x2c, 0x3a, 0xc5, 0x58,
495 0xf5, 0x00, 0x19, 0x9d, 0x95, 0xb6, 0xd3, 0xe3,
496 0x01, 0x75, 0x85, 0x86, 0x28, 0x1d, 0xcd, 0x26,
497 },
498 },
499 {
500 .algorithm = NID_sha3_512,
501 .in =
502 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmno"
503 "mnopnopq",
504 .in_len = 56,
505 .out = {
506 0x04, 0xa3, 0x71, 0xe8, 0x4e, 0xcf, 0xb5, 0xb8,
507 0xb7, 0x7c, 0xb4, 0x86, 0x10, 0xfc, 0xa8, 0x18,
508 0x2d, 0xd4, 0x57, 0xce, 0x6f, 0x32, 0x6a, 0x0f,
509 0xd3, 0xd7, 0xec, 0x2f, 0x1e, 0x91, 0x63, 0x6d,
510 0xee, 0x69, 0x1f, 0xbe, 0x0c, 0x98, 0x53, 0x02,
511 0xba, 0x1b, 0x0d, 0x8d, 0xc7, 0x8c, 0x08, 0x63,
512 0x46, 0xb5, 0x33, 0xb4, 0x9c, 0x03, 0x0d, 0x99,
513 0xa2, 0x7d, 0xaf, 0x11, 0x39, 0xd6, 0xe7, 0x5e,
514 },
515 },
516 {
517 .algorithm = NID_sha3_512,
518 .in =
519 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklm"
520 "ghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrs"
521 "mnopqrstnopqrstu",
522 .in_len = 112,
523 .out = {
524 0xaf, 0xeb, 0xb2, 0xef, 0x54, 0x2e, 0x65, 0x79,
525 0xc5, 0x0c, 0xad, 0x06, 0xd2, 0xe5, 0x78, 0xf9,
526 0xf8, 0xdd, 0x68, 0x81, 0xd7, 0xdc, 0x82, 0x4d,
527 0x26, 0x36, 0x0f, 0xee, 0xbf, 0x18, 0xa4, 0xfa,
528 0x73, 0xe3, 0x26, 0x11, 0x22, 0x94, 0x8e, 0xfc,
529 0xfd, 0x49, 0x2e, 0x74, 0xe8, 0x2e, 0x21, 0x89,
530 0xed, 0x0f, 0xb4, 0x40, 0xd1, 0x87, 0xf3, 0x82,
531 0x27, 0x0c, 0xb4, 0x55, 0xf2, 0x1d, 0xd1, 0x85,
532 },
533 },
306}; 534};
307 535
308struct sha_repetition_test { 536struct sha_repetition_test {
@@ -382,6 +610,64 @@ static const struct sha_repetition_test sha_repetition_tests[] = {
382 0x4e, 0xad, 0xb2, 0x17, 0xad, 0x8c, 0xc0, 0x9b, 610 0x4e, 0xad, 0xb2, 0x17, 0xad, 0x8c, 0xc0, 0x9b,
383 } 611 }
384 }, 612 },
613
614 /* SHA3-224 */
615 {
616 .algorithm = NID_sha3_224,
617 .in = 'a',
618 .in_repetitions = 1000000,
619 .out = {
620 0xd6, 0x93, 0x35, 0xb9, 0x33, 0x25, 0x19, 0x2e,
621 0x51, 0x6a, 0x91, 0x2e, 0x6d, 0x19, 0xa1, 0x5c,
622 0xb5, 0x1c, 0x6e, 0xd5, 0xc1, 0x52, 0x43, 0xe7,
623 0xa7, 0xfd, 0x65, 0x3c,
624 },
625 },
626
627 /* SHA3-256 */
628 {
629 .algorithm = NID_sha3_256,
630 .in = 'a',
631 .in_repetitions = 1000000,
632 .out = {
633 0x5c, 0x88, 0x75, 0xae, 0x47, 0x4a, 0x36, 0x34,
634 0xba, 0x4f, 0xd5, 0x5e, 0xc8, 0x5b, 0xff, 0xd6,
635 0x61, 0xf3, 0x2a, 0xca, 0x75, 0xc6, 0xd6, 0x99,
636 0xd0, 0xcd, 0xcb, 0x6c, 0x11, 0x58, 0x91, 0xc1,
637 },
638 },
639
640 /* SHA3-384 */
641 {
642 .algorithm = NID_sha3_384,
643 .in = 'a',
644 .in_repetitions = 1000000,
645 .out = {
646 0xee, 0xe9, 0xe2, 0x4d, 0x78, 0xc1, 0x85, 0x53,
647 0x37, 0x98, 0x34, 0x51, 0xdf, 0x97, 0xc8, 0xad,
648 0x9e, 0xed, 0xf2, 0x56, 0xc6, 0x33, 0x4f, 0x8e,
649 0x94, 0x8d, 0x25, 0x2d, 0x5e, 0x0e, 0x76, 0x84,
650 0x7a, 0xa0, 0x77, 0x4d, 0xdb, 0x90, 0xa8, 0x42,
651 0x19, 0x0d, 0x2c, 0x55, 0x8b, 0x4b, 0x83, 0x40,
652 },
653 },
654
655 /* SHA3-512 */
656 {
657 .algorithm = NID_sha3_512,
658 .in = 'a',
659 .in_repetitions = 1000000,
660 .out = {
661 0x3c, 0x3a, 0x87, 0x6d, 0xa1, 0x40, 0x34, 0xab,
662 0x60, 0x62, 0x7c, 0x07, 0x7b, 0xb9, 0x8f, 0x7e,
663 0x12, 0x0a, 0x2a, 0x53, 0x70, 0x21, 0x2d, 0xff,
664 0xb3, 0x38, 0x5a, 0x18, 0xd4, 0xf3, 0x88, 0x59,
665 0xed, 0x31, 0x1d, 0x0a, 0x9d, 0x51, 0x41, 0xce,
666 0x9c, 0xc5, 0xc6, 0x6e, 0xe6, 0x89, 0xb2, 0x66,
667 0xa8, 0xaa, 0x18, 0xac, 0xe8, 0x28, 0x2a, 0x0e,
668 0x0d, 0xb5, 0x96, 0xc9, 0x0b, 0x0a, 0x7b, 0x87,
669 },
670 },
385}; 671};
386 672
387#define N_SHA_TESTS (sizeof(sha_tests) / sizeof(sha_tests[0])) 673#define N_SHA_TESTS (sizeof(sha_tests) / sizeof(sha_tests[0]))
@@ -430,6 +716,30 @@ sha_hash_from_algorithm(int algorithm, const char **out_label,
430 md = EVP_sha512(); 716 md = EVP_sha512();
431 len = SHA512_DIGEST_LENGTH; 717 len = SHA512_DIGEST_LENGTH;
432 break; 718 break;
719 case NID_sha3_224:
720 label = SN_sha3_224;
721 sha_func = NULL;
722 md = EVP_sha3_224();
723 len = 224 / 8;
724 break;
725 case NID_sha3_256:
726 label = SN_sha3_256;
727 sha_func = NULL;
728 md = EVP_sha3_256();
729 len = 256 / 8;
730 break;
731 case NID_sha3_384:
732 label = SN_sha3_384;
733 sha_func = NULL;
734 md = EVP_sha3_384();
735 len = 384 / 8;
736 break;
737 case NID_sha3_512:
738 label = SN_sha3_512;
739 sha_func = NULL;
740 md = EVP_sha3_512();
741 len = 512 / 8;
742 break;
433 default: 743 default:
434 fprintf(stderr, "FAIL: unknown algorithm (%d)\n", 744 fprintf(stderr, "FAIL: unknown algorithm (%d)\n",
435 algorithm); 745 algorithm);
@@ -473,60 +783,66 @@ sha_test(void)
473 goto failed; 783 goto failed;
474 784
475 /* Digest */ 785 /* Digest */
476 memset(out, 0, sizeof(out)); 786 if (sha_func != NULL) {
477 sha_func(st->in, st->in_len, out); 787 memset(out, 0, sizeof(out));
478 if (memcmp(st->out, out, out_len) != 0) { 788 sha_func(st->in, st->in_len, out);
479 fprintf(stderr, "FAIL (%s): mismatch\n", label); 789 if (memcmp(st->out, out, out_len) != 0) {
480 goto failed; 790 fprintf(stderr, "FAIL (%s:%zu): mismatch\n",
791 label, i);
792 goto failed;
793 }
481 } 794 }
482 795
483 /* EVP single-shot digest */ 796 /* EVP single-shot digest */
484 memset(out, 0, sizeof(out)); 797 memset(out, 0, sizeof(out));
485 if (!EVP_Digest(st->in, st->in_len, out, NULL, md, NULL)) { 798 if (!EVP_Digest(st->in, st->in_len, out, NULL, md, NULL)) {
486 fprintf(stderr, "FAIL (%s): EVP_Digest failed\n", 799 fprintf(stderr, "FAIL (%s:%zu): EVP_Digest failed\n",
487 label); 800 label, i);
488 goto failed; 801 goto failed;
489 } 802 }
490 803
491 if (memcmp(st->out, out, out_len) != 0) { 804 if (memcmp(st->out, out, out_len) != 0) {
492 fprintf(stderr, "FAIL (%s): EVP single-shot mismatch\n", 805 fprintf(stderr,
493 label); 806 "FAIL (%s:%zu): EVP single-shot mismatch\n",
807 label, i);
494 goto failed; 808 goto failed;
495 } 809 }
496 810
497 /* EVP digest */ 811 /* EVP digest */
498 memset(out, 0, sizeof(out)); 812 memset(out, 0, sizeof(out));
499 if (!EVP_DigestInit_ex(hash, md, NULL)) { 813 if (!EVP_DigestInit_ex(hash, md, NULL)) {
500 fprintf(stderr, "FAIL (%s): EVP_DigestInit_ex failed\n", 814 fprintf(stderr,
501 label); 815 "FAIL (%s:%zu): EVP_DigestInit_ex failed\n",
816 label, i);
502 goto failed; 817 goto failed;
503 } 818 }
504 819
505 in_len = st->in_len / 2; 820 in_len = st->in_len / 2;
506 if (!EVP_DigestUpdate(hash, st->in, in_len)) { 821 if (!EVP_DigestUpdate(hash, st->in, in_len)) {
507 fprintf(stderr, 822 fprintf(stderr,
508 "FAIL (%s): EVP_DigestUpdate first half failed\n", 823 "FAIL (%s:%zu): EVP_DigestUpdate first half "
509 label); 824 "failed\n", label, i);
510 goto failed; 825 goto failed;
511 } 826 }
512 827
513 if (!EVP_DigestUpdate(hash, st->in + in_len, 828 if (!EVP_DigestUpdate(hash, st->in + in_len,
514 st->in_len - in_len)) { 829 st->in_len - in_len)) {
515 fprintf(stderr, 830 fprintf(stderr,
516 "FAIL (%s): EVP_DigestUpdate second half failed\n", 831 "FAIL (%s:%zu): EVP_DigestUpdate second half "
517 label); 832 "failed\n", label, i);
518 goto failed; 833 goto failed;
519 } 834 }
520 835
521 if (!EVP_DigestFinal_ex(hash, out, NULL)) { 836 if (!EVP_DigestFinal_ex(hash, out, NULL)) {
522 fprintf(stderr, 837 fprintf(stderr,
523 "FAIL (%s): EVP_DigestFinal_ex failed\n", 838 "FAIL (%s:%zu): EVP_DigestFinal_ex failed\n",
524 label); 839 label, i);
525 goto failed; 840 goto failed;
526 } 841 }
527 842
528 if (memcmp(st->out, out, out_len) != 0) { 843 if (memcmp(st->out, out, out_len) != 0) {
529 fprintf(stderr, "FAIL (%s): EVP mismatch\n", label); 844 fprintf(stderr, "FAIL (%s:%zu): EVP mismatch\n",
845 label, i);
530 goto failed; 846 goto failed;
531 } 847 }
532 } 848 }
@@ -565,8 +881,8 @@ sha_repetition_test(void)
565 /* EVP digest */ 881 /* EVP digest */
566 if (!EVP_DigestInit_ex(hash, md, NULL)) { 882 if (!EVP_DigestInit_ex(hash, md, NULL)) {
567 fprintf(stderr, 883 fprintf(stderr,
568 "FAIL (%s): EVP_DigestInit_ex failed\n", 884 "FAIL (%s:%zu): EVP_DigestInit_ex failed\n",
569 label); 885 label, i);
570 goto failed; 886 goto failed;
571 } 887 }
572 888
@@ -579,8 +895,8 @@ sha_repetition_test(void)
579 895
580 if (!EVP_DigestUpdate(hash, buf, part_len)) { 896 if (!EVP_DigestUpdate(hash, buf, part_len)) {
581 fprintf(stderr, 897 fprintf(stderr,
582 "FAIL (%s): EVP_DigestUpdate failed\n", 898 "FAIL (%s:%zu): EVP_DigestUpdate failed\n",
583 label); 899 label, i);
584 goto failed; 900 goto failed;
585 } 901 }
586 902
@@ -589,13 +905,14 @@ sha_repetition_test(void)
589 905
590 if (!EVP_DigestFinal_ex(hash, out, NULL)) { 906 if (!EVP_DigestFinal_ex(hash, out, NULL)) {
591 fprintf(stderr, 907 fprintf(stderr,
592 "FAIL (%s): EVP_DigestFinal_ex failed\n", 908 "FAIL (%s:%zu): EVP_DigestFinal_ex failed\n",
593 label); 909 label, i);
594 goto failed; 910 goto failed;
595 } 911 }
596 912
597 if (memcmp(st->out, out, out_len) != 0) { 913 if (memcmp(st->out, out, out_len) != 0) {
598 fprintf(stderr, "FAIL (%s): EVP mismatch\n", label); 914 fprintf(stderr, "FAIL (%s:%zu): EVP mismatch\n",
915 label, i);
599 goto failed; 916 goto failed;
600 } 917 }
601 } 918 }