That check was seen as necessary at the time, but other changes have
been made since, so we now have better control on when we're handling
legacy structures and methods, making it safe to run the export_to
function on keys with foreign methods.
The basic message is that foreign methods must set key structure
values according to our standards no matter what, or not set them at
all. This has really always been the case, but was harder to see at
the time because of interaction with other bugs.
Fixes #15927
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15996)
int selection = 0;
int rv = 0;
- /*
- * If the DH method is foreign, then we can't be sure of anything, and
- * can therefore not export or pretend to export.
- */
- if (ossl_dh_get_method(dh) != DH_OpenSSL())
- return 0;
-
if (p == NULL || g == NULL)
return 0;
int selection = 0;
int rv = 0;
- /*
- * If the DSA method is foreign, then we can't be sure of anything, and
- * can therefore not export or pretend to export.
- */
- if (DSA_get_method(dsa) != DSA_OpenSSL())
- return 0;
-
if (p == NULL || q == NULL || g == NULL)
return 0;
|| (ecg = EC_KEY_get0_group(eckey)) == NULL)
return 0;
- /*
- * If the EC_KEY method is foreign, then we can't be sure of anything,
- * and can therefore not export or pretend to export.
- */
- if (EC_KEY_get_method(eckey) != EC_KEY_OpenSSL())
- return 0;
-
tmpl = OSSL_PARAM_BLD_new();
if (tmpl == NULL)
return 0;
if (tmpl == NULL)
return 0;
- /*
- * If the RSA method is foreign, then we can't be sure of anything, and
- * can therefore not export or pretend to export.
- */
- if (RSA_get_method(rsa) != RSA_PKCS1_OpenSSL())
- goto err;
-
/* Public parameters must always be present */
if (RSA_get0_n(rsa) == NULL || RSA_get0_e(rsa) == NULL)
goto err;