From 0e17f7a05bba309a87811992aa47a77af9935b99 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Sat, 8 Aug 2015 10:47:55 +0200 Subject: Add framework to eventually support SHA3. * src/gcrypt.h.in (GCRY_MD_SHA3_224, GCRY_MD_SHA3_256) (GCRY_MD_SHA3_384, GCRY_MD_SHA3_512): New. (GCRY_MAC_HMAC_SHA3_224, GCRY_MAC_HMAC_SHA3_256) (GCRY_MAC_HMAC_SHA3_384, GCRY_MAC_HMAC_SHA3_512): New. * cipher/keccak.c: New with stub functions. * cipher/Makefile.am (EXTRA_libcipher_la_SOURCES): Add keccak.c. * configure.ac (available_digests): Add sha3. (USE_SHA3): New. * src/fips.c (run_hmac_selftests): Add SHA3 to the required selftests. * cipher/md.c (digest_list) [USE_SHA3]: Add standard SHA3 algos. (md_open): Ditto for hmac processing. * cipher/mac-hmac.c (map_mac_algo_to_md): Add mapping. * cipher/hmac-tests.c (run_selftests): Prepare for tests. * cipher/pubkey-util.c (get_hash_algo): Add "sha3-xxx". -- Note that the algo GCRY_MD_SHA3_xxx are prelimanry. We should try to sync them with OpenPGP. Signed-off-by: Werner Koch --- src/cipher.h | 6 +++++- src/fips.c | 4 ++++ src/gcrypt.h.in | 11 ++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cipher.h b/src/cipher.h index 89ae2e2d..d96fdb9b 100644 --- a/src/cipher.h +++ b/src/cipher.h @@ -289,8 +289,12 @@ extern gcry_md_spec_t _gcry_digest_spec_rmd160; extern gcry_md_spec_t _gcry_digest_spec_sha1; extern gcry_md_spec_t _gcry_digest_spec_sha224; extern gcry_md_spec_t _gcry_digest_spec_sha256; -extern gcry_md_spec_t _gcry_digest_spec_sha512; extern gcry_md_spec_t _gcry_digest_spec_sha384; +extern gcry_md_spec_t _gcry_digest_spec_sha512; +extern gcry_md_spec_t _gcry_digest_spec_sha3_224; +extern gcry_md_spec_t _gcry_digest_spec_sha3_256; +extern gcry_md_spec_t _gcry_digest_spec_sha3_512; +extern gcry_md_spec_t _gcry_digest_spec_sha3_384; extern gcry_md_spec_t _gcry_digest_spec_tiger; extern gcry_md_spec_t _gcry_digest_spec_tiger1; extern gcry_md_spec_t _gcry_digest_spec_tiger2; diff --git a/src/fips.c b/src/fips.c index c90e4b69..7939abd7 100644 --- a/src/fips.c +++ b/src/fips.c @@ -518,6 +518,10 @@ run_hmac_selftests (int extended) GCRY_MD_SHA256, GCRY_MD_SHA384, GCRY_MD_SHA512, + GCRY_MD_SHA3_224, + GCRY_MD_SHA3_256, + GCRY_MD_SHA3_384, + GCRY_MD_SHA3_512, 0 }; int idx; diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in index 0984d111..4b4646b4 100644 --- a/src/gcrypt.h.in +++ b/src/gcrypt.h.in @@ -1158,7 +1158,12 @@ enum gcry_md_algos GCRY_MD_SHA384 = 9, GCRY_MD_SHA512 = 10, GCRY_MD_SHA224 = 11, - GCRY_MD_MD4 = 301, + GCRY_MD_SHA3_224= 12, + GCRY_MD_SHA3_256= 13, + GCRY_MD_SHA3_384= 14, + GCRY_MD_SHA3_512= 15, + + GCRY_MD_MD4 = 301, GCRY_MD_CRC32 = 302, GCRY_MD_CRC32_RFC1510 = 303, GCRY_MD_CRC24_RFC2440 = 304, @@ -1345,6 +1350,10 @@ enum gcry_mac_algos GCRY_MAC_HMAC_STRIBOG256 = 112, GCRY_MAC_HMAC_STRIBOG512 = 113, GCRY_MAC_HMAC_MD2 = 114, + GCRY_MAC_HMAC_SHA3_224 = 115, + GCRY_MAC_HMAC_SHA3_256 = 116, + GCRY_MAC_HMAC_SHA3_384 = 117, + GCRY_MAC_HMAC_SHA3_512 = 118, GCRY_MAC_CMAC_AES = 201, GCRY_MAC_CMAC_3DES = 202, -- cgit v1.2.1