That is, in the newly introduced
ed25519 keys we didn't check
whether the input size in the PKCS#8 file matched the curve
size.
Found using oss-fuzz:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2689
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
return gnutls_assert_val(ret);
}
+ if (tmp.size != ce->size) {
+ gnutls_free(tmp.data);
+ return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER);
+ }
gnutls_free(pkey->params.raw_priv.data);
pkey->params.algo = GNUTLS_PK_EDDSA_ED25519;
pkey->params.raw_priv.data = tmp.data;
goto cleanup;
}
+ /* This part is necessary to get the public key on certain algorithms.
+ * In the import above we only get the private key. */
result =
_gnutls_pk_fixup(key->pk_algorithm, GNUTLS_IMPORT, &key->params);
if (result < 0) {