summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2021-09-20 15:24:04 +0000
committerDaiki Ueno <ueno@gnu.org>2021-09-20 15:24:04 +0000
commit970000abfe3f88a8659da084852db258310246fd (patch)
tree33965f190b34b9611e7276a499c9a43553bba41a
parent1d39c9266f0232389f8fbcfe4f2ddfcb73c507a0 (diff)
parent988a3fe07f3ecdd21ff6887a55b775c9b0f4a967 (diff)
downloadgnutls-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.c13
-rw-r--r--tests/simple.c16
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");