summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2021-07-06 08:44:37 +0200
committerRichard Levitte <levitte@openssl.org>2021-07-07 15:38:21 +0200
commitd101700dffa710f3de0ab6465dff688f55214bcc (patch)
treede28cfa2c10ae3cf7fc031209c2526f193ce72f6 /crypto
parent105c83150f15af3f78ea0758859062842bdbe30e (diff)
CRYPTO: Remove the check for built-in methods in the export_to function
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)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/dh/dh_ameth.c7
-rw-r--r--crypto/dsa/dsa_ameth.c7
-rw-r--r--crypto/ec/ec_ameth.c7
-rw-r--r--crypto/rsa/rsa_ameth.c7
4 files changed, 0 insertions, 28 deletions
diff --git a/crypto/dh/dh_ameth.c b/crypto/dh/dh_ameth.c
index 3d23321b59..0e577177ec 100644
--- a/crypto/dh/dh_ameth.c
+++ b/crypto/dh/dh_ameth.c
@@ -453,13 +453,6 @@ static int dh_pkey_export_to(const EVP_PKEY *from, void *to_keydata,
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;
diff --git a/crypto/dsa/dsa_ameth.c b/crypto/dsa/dsa_ameth.c
index ea9f839955..53417bff6a 100644
--- a/crypto/dsa/dsa_ameth.c
+++ b/crypto/dsa/dsa_ameth.c
@@ -436,13 +436,6 @@ static int dsa_pkey_export_to(const EVP_PKEY *from, void *to_keydata,
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;
diff --git a/crypto/ec/ec_ameth.c b/crypto/ec/ec_ameth.c
index c7fbaeab5e..9ca023bbe3 100644
--- a/crypto/ec/ec_ameth.c
+++ b/crypto/ec/ec_ameth.c
@@ -498,13 +498,6 @@ int ec_pkey_export_to(const EVP_PKEY *from, void *to_keydata,
|| (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;
diff --git a/crypto/rsa/rsa_ameth.c b/crypto/rsa/rsa_ameth.c
index 1d3b8685bd..b1580ca48c 100644
--- a/crypto/rsa/rsa_ameth.c
+++ b/crypto/rsa/rsa_ameth.c
@@ -738,13 +738,6 @@ static int rsa_int_export_to(const EVP_PKEY *from, int rsa_type,
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;