@@ -148,6 +148,7 @@ void RSA_get0_factors(const RSA* rsa, const BIGNUM** p, const BIGNUM** q);
148
148
void RSA_get0_key (const RSA * rsa , const BIGNUM * * n , const BIGNUM * * e , const BIGNUM * * d );
149
149
int32_t RSA_meth_get_flags (const RSA_METHOD * meth );
150
150
const RSA_METHOD * RSA_PKCS1_OpenSSL (void );
151
+ int32_t RSA_pkey_ctx_ctrl (EVP_PKEY_CTX * ctx , int32_t optype , int32_t cmd , int32_t p1 , void * p2 );
151
152
int32_t RSA_set0_crt_params (RSA * rsa , BIGNUM * dmp1 , BIGNUM * dmq1 , BIGNUM * iqmp );
152
153
int32_t RSA_set0_factors (RSA * rsa , BIGNUM * p , BIGNUM * q );
153
154
int32_t RSA_set0_key (RSA * rsa , BIGNUM * n , BIGNUM * e , BIGNUM * d );
@@ -176,6 +177,13 @@ const X509_ALGOR* X509_get0_tbs_sigalg(const X509* x509);
176
177
X509_PUBKEY * X509_get_X509_PUBKEY (const X509 * x509 );
177
178
int32_t X509_get_version (const X509 * x509 );
178
179
int32_t X509_up_ref (X509 * x509 );
180
+
181
+ // Redefine EVP_PKEY_CTX_set_rsa operations to use (local_)RSA_pkey_ctx_ctrl so the path is the same
182
+ // for 1.0-built on 1.1 as on 1.1-built on 1.1.
183
+ #undef EVP_PKEY_CTX_set_rsa_keygen_bits
184
+ #define EVP_PKEY_CTX_set_rsa_keygen_bits (ctx , bits ) \
185
+ RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL)
186
+
179
187
#endif
180
188
181
189
#if OPENSSL_VERSION_NUMBER < OPENSSL_VERSION_1_0_2_RTM
@@ -362,15 +370,21 @@ void SSL_get0_alpn_selected(const SSL* ssl, const unsigned char** protocol, unsi
362
370
RENAMED_FUNCTION(EVP_MD_CTX_free, EVP_MD_CTX_destroy) \
363
371
RENAMED_FUNCTION(EVP_MD_CTX_new, EVP_MD_CTX_create) \
364
372
REQUIRED_FUNCTION(EVP_MD_size) \
373
+ REQUIRED_FUNCTION(EVP_PKEY_CTX_ctrl) \
365
374
REQUIRED_FUNCTION(EVP_PKEY_CTX_free) \
375
+ REQUIRED_FUNCTION(EVP_PKEY_CTX_get0_pkey) \
366
376
REQUIRED_FUNCTION(EVP_PKEY_CTX_new) \
377
+ REQUIRED_FUNCTION(EVP_PKEY_CTX_new_id) \
378
+ REQUIRED_FUNCTION(EVP_PKEY_base_id) \
367
379
REQUIRED_FUNCTION(EVP_PKEY_derive_set_peer) \
368
380
REQUIRED_FUNCTION(EVP_PKEY_derive_init) \
369
381
REQUIRED_FUNCTION(EVP_PKEY_derive) \
370
382
REQUIRED_FUNCTION(EVP_PKEY_free) \
371
383
REQUIRED_FUNCTION(EVP_PKEY_get1_DSA) \
372
384
REQUIRED_FUNCTION(EVP_PKEY_get1_EC_KEY) \
373
385
REQUIRED_FUNCTION(EVP_PKEY_get1_RSA) \
386
+ REQUIRED_FUNCTION(EVP_PKEY_keygen) \
387
+ REQUIRED_FUNCTION(EVP_PKEY_keygen_init) \
374
388
REQUIRED_FUNCTION(EVP_PKEY_new) \
375
389
REQUIRED_FUNCTION(EVP_PKEY_set1_DSA) \
376
390
REQUIRED_FUNCTION(EVP_PKEY_set1_EC_KEY) \
@@ -453,6 +467,7 @@ void SSL_get0_alpn_selected(const SSL* ssl, const unsigned char** protocol, unsi
453
467
FALLBACK_FUNCTION(RSA_get0_key) \
454
468
FALLBACK_FUNCTION(RSA_meth_get_flags) \
455
469
REQUIRED_FUNCTION(RSA_new) \
470
+ FALLBACK_FUNCTION(RSA_pkey_ctx_ctrl) \
456
471
RENAMED_FUNCTION(RSA_PKCS1_OpenSSL, RSA_PKCS1_SSLeay) \
457
472
REQUIRED_FUNCTION(RSA_private_decrypt) \
458
473
REQUIRED_FUNCTION(RSA_private_encrypt) \
@@ -773,15 +788,21 @@ FOR_ALL_OPENSSL_FUNCTIONS
773
788
#define EVP_MD_CTX_free EVP_MD_CTX_free_ptr
774
789
#define EVP_MD_CTX_new EVP_MD_CTX_new_ptr
775
790
#define EVP_MD_size EVP_MD_size_ptr
791
+ #define EVP_PKEY_CTX_ctrl EVP_PKEY_CTX_ctrl_ptr
776
792
#define EVP_PKEY_CTX_free EVP_PKEY_CTX_free_ptr
793
+ #define EVP_PKEY_CTX_get0_pkey EVP_PKEY_CTX_get0_pkey_ptr
777
794
#define EVP_PKEY_CTX_new EVP_PKEY_CTX_new_ptr
795
+ #define EVP_PKEY_CTX_new_id EVP_PKEY_CTX_new_id_ptr
796
+ #define EVP_PKEY_base_id EVP_PKEY_base_id_ptr
778
797
#define EVP_PKEY_derive_set_peer EVP_PKEY_derive_set_peer_ptr
779
798
#define EVP_PKEY_derive_init EVP_PKEY_derive_init_ptr
780
799
#define EVP_PKEY_derive EVP_PKEY_derive_ptr
781
800
#define EVP_PKEY_free EVP_PKEY_free_ptr
782
801
#define EVP_PKEY_get1_DSA EVP_PKEY_get1_DSA_ptr
783
802
#define EVP_PKEY_get1_EC_KEY EVP_PKEY_get1_EC_KEY_ptr
784
803
#define EVP_PKEY_get1_RSA EVP_PKEY_get1_RSA_ptr
804
+ #define EVP_PKEY_keygen EVP_PKEY_keygen_ptr
805
+ #define EVP_PKEY_keygen_init EVP_PKEY_keygen_init_ptr
785
806
#define EVP_PKEY_new EVP_PKEY_new_ptr
786
807
#define EVP_PKEY_set1_DSA EVP_PKEY_set1_DSA_ptr
787
808
#define EVP_PKEY_set1_EC_KEY EVP_PKEY_set1_EC_KEY_ptr
@@ -864,6 +885,7 @@ FOR_ALL_OPENSSL_FUNCTIONS
864
885
#define RSA_get_method RSA_get_method_ptr
865
886
#define RSA_meth_get_flags RSA_meth_get_flags_ptr
866
887
#define RSA_new RSA_new_ptr
888
+ #define RSA_pkey_ctx_ctrl RSA_pkey_ctx_ctrl_ptr
867
889
#define RSA_PKCS1_OpenSSL RSA_PKCS1_OpenSSL_ptr
868
890
#define RSA_private_decrypt RSA_private_decrypt_ptr
869
891
#define RSA_private_encrypt RSA_private_encrypt_ptr
@@ -1084,6 +1106,7 @@ FOR_ALL_OPENSSL_FUNCTIONS
1084
1106
#define RSA_set0_crt_params local_RSA_set0_crt_params
1085
1107
#define RSA_set0_factors local_RSA_set0_factors
1086
1108
#define RSA_set0_key local_RSA_set0_key
1109
+ #define RSA_pkey_ctx_ctrl local_RSA_pkey_ctx_ctrl
1087
1110
#define SSL_CTX_set_security_level local_SSL_CTX_set_security_level
1088
1111
#define SSL_is_init_finished local_SSL_is_init_finished
1089
1112
#define X509_CRL_get0_nextUpdate local_X509_CRL_get0_nextUpdate
0 commit comments