summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/nettle/pk.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c
index da209d8bf4..1fda529ed0 100644
--- a/lib/nettle/pk.c
+++ b/lib/nettle/pk.c
@@ -2143,9 +2143,23 @@ wrap_nettle_pk_verify_priv_params(gnutls_pk_algorithm_t algo,
mpz_clear(y2);
}
break;
- case GNUTLS_PK_EDDSA_ED25519:
+ case GNUTLS_PK_EDDSA_ED25519: {
+ uint8_t pub[32];
+
+ if (params->raw_pub.data == NULL) {
+ return 0; /* nothing to verify */
+ }
+
+ if (params->raw_pub.size != 32)
+ return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER);
+
+ ed25519_sha512_public_key(pub, params->raw_priv.data);
+ if (memcmp(params->raw_pub.data, pub, 32) != 0)
+ return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER);
+
ret = 0;
break;
+ }
default:
ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
}