diff options
author | Daiki Ueno <ueno@gnu.org> | 2021-09-20 15:24:04 +0000 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2021-09-20 15:24:04 +0000 |
commit | 970000abfe3f88a8659da084852db258310246fd (patch) | |
tree | 33965f190b34b9611e7276a499c9a43553bba41a | |
parent | 1d39c9266f0232389f8fbcfe4f2ddfcb73c507a0 (diff) | |
parent | 988a3fe07f3ecdd21ff6887a55b775c9b0f4a967 (diff) | |
download | gnutls-970000abfe3f88a8659da084852db258310246fd.tar.gz |
Merge branch 'wip/dueno/shake' into 'master'
wrap_nettle_hash_exists: add missing hash algorithms
See merge request gnutls/gnutls!1473
-rw-r--r-- | lib/nettle/mac.c | 13 | ||||
-rw-r--r-- | tests/simple.c | 16 |
2 files changed, 22 insertions, 7 deletions
diff --git a/lib/nettle/mac.c b/lib/nettle/mac.c index 1b20a0cf82..f9d4d7a8df 100644 --- a/lib/nettle/mac.c +++ b/lib/nettle/mac.c @@ -608,17 +608,20 @@ static int wrap_nettle_hash_exists(gnutls_digest_algorithm_t algo) case GNUTLS_DIG_SHA256: case GNUTLS_DIG_SHA384: case GNUTLS_DIG_SHA512: - return 1; + +#ifdef NETTLE_SHA3_FIPS202 case GNUTLS_DIG_SHA3_224: case GNUTLS_DIG_SHA3_256: case GNUTLS_DIG_SHA3_384: case GNUTLS_DIG_SHA3_512: -#ifdef NETTLE_SHA3_FIPS202 - return 1; -#else - return 0; #endif + + case GNUTLS_DIG_SHAKE_128: + case GNUTLS_DIG_SHAKE_256: + case GNUTLS_DIG_MD2: + case GNUTLS_DIG_RMD160: + #if ENABLE_GOST case GNUTLS_DIG_GOSTR_94: case GNUTLS_DIG_STREEBOG_256: diff --git a/tests/simple.c b/tests/simple.c index ef37e3689e..5e20c61182 100644 --- a/tests/simple.c +++ b/tests/simple.c @@ -88,7 +88,7 @@ void doit(void) if (gnutls_pk_get_id (gnutls_pk_algorithm_get_name(algs[i])) != algs[i]) - fail("gnutls_pk id's doesn't match\n"); + fail("gnutls_pk id doesn't match\n"); } pk = gnutls_pk_get_id("foo"); @@ -109,6 +109,8 @@ void doit(void) fail("gnutls_sign_list return NULL\n"); for (i = 0; algs[i]; i++) { + gnutls_digest_algorithm_t hash; + if (debug) printf("sign_list[%d] = %d = %s = %d\n", (int) i, algs[i], @@ -120,7 +122,17 @@ void doit(void) if (gnutls_sign_get_id (gnutls_sign_algorithm_get_name(algs[i])) != algs[i]) - fail("gnutls_sign id's doesn't match\n"); + fail("gnutls_sign id for %s doesn't match\n", + gnutls_sign_algorithm_get_name(algs[i])); + + hash = gnutls_sign_get_hash_algorithm(algs[i]); + if (hash != GNUTLS_DIG_UNKNOWN) { + const char *name = gnutls_digest_get_name(hash); + if (gnutls_digest_get_id(name) != hash) + fail("gnutls_digest id for %s doesn't match %s\n", + gnutls_sign_algorithm_get_name(algs[i]), + name); + } } pk = gnutls_sign_get_id("foo"); |