370
static gpg_err_code_t
371
selftests_sha384 (int extended, selftest_report_func_t report)
376
what = "short string";
377
errtxt = _gcry_hash_selftest_check_one
380
"\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
381
"\x27\x2c\x32\xab\x0e\xde\xd1\x63\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
382
"\x80\x86\x07\x2b\xa1\xe7\xcc\x23\x58\xba\xec\xa1\x34\xc8\x25\xa7", 48);
388
what = "long string";
389
errtxt = _gcry_hash_selftest_check_one
391
"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
392
"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 112,
393
"\x09\x33\x0C\x33\xF7\x11\x47\xE8\x3D\x19\x2F\xC7\x82\xCD\x1B\x47"
394
"\x53\x11\x1B\x17\x3B\x3B\x05\xD2\x2F\xA0\x80\x86\xE3\xB0\xF7\x12"
395
"\xFC\xC7\xC7\x1A\x55\x7E\x2D\xB9\x66\xC3\xE9\xFA\x91\x74\x60\x39",
400
what = "one million \"a\"";
401
errtxt = _gcry_hash_selftest_check_one
404
"\x9D\x0E\x18\x09\x71\x64\x74\xCB\x08\x6E\x83\x4E\x31\x0A\x4A\x1C"
405
"\xED\x14\x9E\x9C\x00\xF2\x48\x52\x79\x72\xCE\xC5\x70\x4C\x2A\x5B"
406
"\x07\xB8\xB3\xDC\x38\xEC\xC4\xEB\xAE\x97\xDD\xD8\x7F\x3D\x89\x85",
412
return 0; /* Succeeded. */
416
report ("digest", GCRY_MD_SHA384, what, errtxt);
417
return GPG_ERR_SELFTEST_FAILED;
420
static gpg_err_code_t
421
selftests_sha512 (int extended, selftest_report_func_t report)
426
what = "short string";
427
errtxt = _gcry_hash_selftest_check_one
430
"\xDD\xAF\x35\xA1\x93\x61\x7A\xBA\xCC\x41\x73\x49\xAE\x20\x41\x31"
431
"\x12\xE6\xFA\x4E\x89\xA9\x7E\xA2\x0A\x9E\xEE\xE6\x4B\x55\xD3\x9A"
432
"\x21\x92\x99\x2A\x27\x4F\xC1\xA8\x36\xBA\x3C\x23\xA3\xFE\xEB\xBD"
433
"\x45\x4D\x44\x23\x64\x3C\xE8\x0E\x2A\x9A\xC9\x4F\xA5\x4C\xA4\x9F", 64);
439
what = "long string";
440
errtxt = _gcry_hash_selftest_check_one
442
"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
443
"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 112,
444
"\x8E\x95\x9B\x75\xDA\xE3\x13\xDA\x8C\xF4\xF7\x28\x14\xFC\x14\x3F"
445
"\x8F\x77\x79\xC6\xEB\x9F\x7F\xA1\x72\x99\xAE\xAD\xB6\x88\x90\x18"
446
"\x50\x1D\x28\x9E\x49\x00\xF7\xE4\x33\x1B\x99\xDE\xC4\xB5\x43\x3A"
447
"\xC7\xD3\x29\xEE\xB6\xDD\x26\x54\x5E\x96\xE5\x5B\x87\x4B\xE9\x09",
452
what = "one million \"a\"";
453
errtxt = _gcry_hash_selftest_check_one
456
"\xE7\x18\x48\x3D\x0C\xE7\x69\x64\x4E\x2E\x42\xC7\xBC\x15\xB4\x63"
457
"\x8E\x1F\x98\xB1\x3B\x20\x44\x28\x56\x32\xA8\x03\xAF\xA9\x73\xEB"
458
"\xDE\x0F\xF2\x44\x87\x7E\xA6\x0A\x4C\xB0\x43\x2C\xE5\x77\xC3\x1B"
459
"\xEB\x00\x9C\x5C\x2C\x49\xAA\x2E\x4E\xAD\xB2\x17\xAD\x8C\xC0\x9B",
465
return 0; /* Succeeded. */
469
report ("digest", GCRY_MD_SHA512, what, errtxt);
470
return GPG_ERR_SELFTEST_FAILED;
474
/* Run a full self-test for ALGO and return 0 on success. */
475
static gpg_err_code_t
476
run_selftests (int algo, int extended, selftest_report_func_t report)
483
ec = selftests_sha384 (extended, report);
486
ec = selftests_sha512 (extended, report);
489
ec = GPG_ERR_DIGEST_ALGO;
365
499
static byte sha512_asn[] = /* Object ID is 2.16.840.1.101.3.4.2.3 */
367
0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
368
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05,
501
0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
502
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05,
372
506
static gcry_md_oid_spec_t oid_spec_sha512[] =
382
gcry_md_spec_t _gcry_digest_spec_sha512 = {
383
"SHA512", sha512_asn, DIM (sha512_asn), oid_spec_sha512, 64,
384
sha512_init, sha512_write, sha512_final, sha512_read,
385
sizeof (SHA512_CONTEXT),
516
gcry_md_spec_t _gcry_digest_spec_sha512 =
518
"SHA512", sha512_asn, DIM (sha512_asn), oid_spec_sha512, 64,
519
sha512_init, sha512_write, sha512_final, sha512_read,
520
sizeof (SHA512_CONTEXT),
522
md_extra_spec_t _gcry_digest_extraspec_sha512 =
388
527
static byte sha384_asn[] = /* Object ID is 2.16.840.1.101.3.4.2.2 */
390
0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
391
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05,
529
0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
530
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05,
395
534
static gcry_md_oid_spec_t oid_spec_sha384[] =
405
gcry_md_spec_t _gcry_digest_spec_sha384 = {
406
"SHA384", sha384_asn, DIM (sha384_asn), oid_spec_sha384, 48,
407
sha384_init, sha512_write, sha512_final, sha512_read,
408
sizeof (SHA512_CONTEXT),
544
gcry_md_spec_t _gcry_digest_spec_sha384 =
546
"SHA384", sha384_asn, DIM (sha384_asn), oid_spec_sha384, 48,
547
sha384_init, sha512_write, sha512_final, sha512_read,
548
sizeof (SHA512_CONTEXT),
550
md_extra_spec_t _gcry_digest_extraspec_sha384 =