diff options
author | slontis <shane.lontis@oracle.com> | 2021-12-06 09:27:12 +1000 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2022-02-03 13:48:42 +0100 |
commit | 944f822aadc88b2e25f7695366810c73a53a00c8 (patch) | |
tree | ea49ec6185e737796fb25637d8d1e3b5703acf22 /include | |
parent | 13a53fbf13bc6fa09c95ad4bdc6ec70fa15aa16d (diff) |
Fix EVP todata and fromdata when used with selection of EVP_PKEY_PUBLIC_KEY.
The private key for rsa, dsa, dh and ecx was being included when the
selector was just the public key. (ec was working correctly).
This matches the documented behaviour.
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17200)
Diffstat (limited to 'include')
-rw-r--r-- | include/crypto/dh.h | 5 | ||||
-rw-r--r-- | include/crypto/dsa.h | 3 | ||||
-rw-r--r-- | include/crypto/rsa.h | 5 |
3 files changed, 8 insertions, 5 deletions
diff --git a/include/crypto/dh.h b/include/crypto/dh.h index f6be4ae006..504050abf7 100644 --- a/include/crypto/dh.h +++ b/include/crypto/dh.h @@ -32,9 +32,10 @@ int ossl_dh_is_named_safe_prime_group(const DH *dh); FFC_PARAMS *ossl_dh_get0_params(DH *dh); int ossl_dh_get0_nid(const DH *dh); int ossl_dh_params_fromdata(DH *dh, const OSSL_PARAM params[]); -int ossl_dh_key_fromdata(DH *dh, const OSSL_PARAM params[]); +int ossl_dh_key_fromdata(DH *dh, const OSSL_PARAM params[], int include_private); int ossl_dh_params_todata(DH *dh, OSSL_PARAM_BLD *bld, OSSL_PARAM params[]); -int ossl_dh_key_todata(DH *dh, OSSL_PARAM_BLD *bld, OSSL_PARAM params[]); +int ossl_dh_key_todata(DH *dh, OSSL_PARAM_BLD *bld, OSSL_PARAM params[], + int include_private); DH *ossl_dh_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf, OSSL_LIB_CTX *libctx, const char *propq); int ossl_dh_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); diff --git a/include/crypto/dsa.h b/include/crypto/dsa.h index e6b879b27b..275187c1b5 100644 --- a/include/crypto/dsa.h +++ b/include/crypto/dsa.h @@ -30,7 +30,8 @@ int ossl_dsa_sign_int(int type, const unsigned char *dgst, int dlen, FFC_PARAMS *ossl_dsa_get0_params(DSA *dsa); int ossl_dsa_ffc_params_fromdata(DSA *dsa, const OSSL_PARAM params[]); -int ossl_dsa_key_fromdata(DSA *dsa, const OSSL_PARAM params[]); +int ossl_dsa_key_fromdata(DSA *dsa, const OSSL_PARAM params[], + int include_private); DSA *ossl_dsa_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf, OSSL_LIB_CTX *libctx, const char *propq); diff --git a/include/crypto/rsa.h b/include/crypto/rsa.h index 100e7ceb05..eab306b1db 100644 --- a/include/crypto/rsa.h +++ b/include/crypto/rsa.h @@ -65,8 +65,9 @@ int ossl_rsa_get0_all_params(RSA *r, STACK_OF(BIGNUM_const) *primes, int ossl_rsa_is_foreign(const RSA *rsa); RSA *ossl_rsa_dup(const RSA *rsa, int selection); -int ossl_rsa_todata(RSA *rsa, OSSL_PARAM_BLD *bld, OSSL_PARAM params[]); -int ossl_rsa_fromdata(RSA *rsa, const OSSL_PARAM params[]); +int ossl_rsa_todata(RSA *rsa, OSSL_PARAM_BLD *bld, OSSL_PARAM params[], + int include_private); +int ossl_rsa_fromdata(RSA *rsa, const OSSL_PARAM params[], int include_private); int ossl_rsa_pss_params_30_todata(const RSA_PSS_PARAMS_30 *pss, OSSL_PARAM_BLD *bld, OSSL_PARAM params[]); int ossl_rsa_pss_params_30_fromdata(RSA_PSS_PARAMS_30 *pss_params, |