@@ -32,14 +32,14 @@ VALUE cSSLSocket;
32
32
static VALUE eSSLErrorWaitReadable ;
33
33
static VALUE eSSLErrorWaitWritable ;
34
34
35
- static ID id_call , ID_callback_state , id_tmp_dh_callback , id_tmp_ecdh_callback ,
35
+ static ID id_call , ID_callback_state , id_tmp_dh_callback ,
36
36
id_npn_protocols_encoded ;
37
37
static VALUE sym_exception , sym_wait_readable , sym_wait_writable ;
38
38
39
39
static ID id_i_cert_store , id_i_ca_file , id_i_ca_path , id_i_verify_mode ,
40
40
id_i_verify_depth , id_i_verify_callback , id_i_client_ca ,
41
41
id_i_renegotiation_cb , id_i_cert , id_i_key , id_i_extra_chain_cert ,
42
- id_i_client_cert_cb , id_i_tmp_ecdh_callback , id_i_timeout ,
42
+ id_i_client_cert_cb , id_i_timeout ,
43
43
id_i_session_id_context , id_i_session_get_cb , id_i_session_new_cb ,
44
44
id_i_session_remove_cb , id_i_npn_select_cb , id_i_npn_protocols ,
45
45
id_i_alpn_select_cb , id_i_alpn_protocols , id_i_servername_cb ,
@@ -231,8 +231,7 @@ ossl_client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
231
231
return 1 ;
232
232
}
233
233
234
- #if !defined(OPENSSL_NO_DH ) || \
235
- !defined(OPENSSL_NO_EC ) && defined(HAVE_SSL_CTX_SET_TMP_ECDH_CALLBACK )
234
+ #if !defined(OPENSSL_NO_DH )
236
235
struct tmp_dh_callback_args {
237
236
VALUE ssl_obj ;
238
237
ID id ;
@@ -289,35 +288,6 @@ ossl_tmp_dh_callback(SSL *ssl, int is_export, int keylength)
289
288
}
290
289
#endif /* OPENSSL_NO_DH */
291
290
292
- #if !defined(OPENSSL_NO_EC ) && defined(HAVE_SSL_CTX_SET_TMP_ECDH_CALLBACK )
293
- static EC_KEY *
294
- ossl_tmp_ecdh_callback (SSL * ssl , int is_export , int keylength )
295
- {
296
- VALUE rb_ssl ;
297
- EVP_PKEY * pkey ;
298
- struct tmp_dh_callback_args args ;
299
- int state ;
300
-
301
- rb_ssl = (VALUE )SSL_get_ex_data (ssl , ossl_ssl_ex_ptr_idx );
302
- args .ssl_obj = rb_ssl ;
303
- args .id = id_tmp_ecdh_callback ;
304
- args .is_export = is_export ;
305
- args .keylength = keylength ;
306
- args .type = EVP_PKEY_EC ;
307
-
308
- pkey = (EVP_PKEY * )rb_protect ((VALUE (* )(VALUE ))ossl_call_tmp_dh_callback ,
309
- (VALUE )& args , & state );
310
- if (state ) {
311
- rb_ivar_set (rb_ssl , ID_callback_state , INT2NUM (state ));
312
- return NULL ;
313
- }
314
- if (!pkey )
315
- return NULL ;
316
-
317
- return EVP_PKEY_get0_EC_KEY (pkey );
318
- }
319
- #endif
320
-
321
291
static VALUE
322
292
call_verify_certificate_identity (VALUE ctx_v )
323
293
{
@@ -797,26 +767,6 @@ ossl_sslctx_setup(VALUE self)
797
767
SSL_CTX_set_tmp_dh_callback (ctx , ossl_tmp_dh_callback );
798
768
#endif
799
769
800
- #if !defined(OPENSSL_NO_EC )
801
- /* We added SSLContext#tmp_ecdh_callback= in Ruby 2.3.0,
802
- * but SSL_CTX_set_tmp_ecdh_callback() was removed in OpenSSL 1.1.0. */
803
- if (RTEST (rb_attr_get (self , id_i_tmp_ecdh_callback ))) {
804
- # if defined(HAVE_SSL_CTX_SET_TMP_ECDH_CALLBACK )
805
- rb_warn ("#tmp_ecdh_callback= is deprecated; use #ecdh_curves= instead" );
806
- SSL_CTX_set_tmp_ecdh_callback (ctx , ossl_tmp_ecdh_callback );
807
- # if defined(HAVE_SSL_CTX_SET_ECDH_AUTO )
808
- /* tmp_ecdh_callback and ecdh_auto conflict; OpenSSL ignores
809
- * tmp_ecdh_callback. So disable ecdh_auto. */
810
- if (!SSL_CTX_set_ecdh_auto (ctx , 0 ))
811
- ossl_raise (eSSLError , "SSL_CTX_set_ecdh_auto" );
812
- # endif
813
- # else
814
- ossl_raise (eSSLError , "OpenSSL does not support tmp_ecdh_callback; "
815
- "use #ecdh_curves= instead" );
816
- # endif
817
- }
818
- #endif /* OPENSSL_NO_EC */
819
-
820
770
#ifdef HAVE_SSL_CTX_SET_POST_HANDSHAKE_AUTH
821
771
SSL_CTX_set_post_handshake_auth (ctx , 1 );
822
772
#endif
@@ -2632,20 +2582,6 @@ Init_ossl_ssl(void)
2632
2582
*/
2633
2583
rb_attr (cSSLContext , rb_intern ("client_cert_cb" ), 1 , 1 , Qfalse );
2634
2584
2635
- #if !defined(OPENSSL_NO_EC ) && defined(HAVE_SSL_CTX_SET_TMP_ECDH_CALLBACK )
2636
- /*
2637
- * A callback invoked when ECDH parameters are required.
2638
- *
2639
- * The callback is invoked with the Session for the key exchange, an
2640
- * flag indicating the use of an export cipher and the keylength
2641
- * required.
2642
- *
2643
- * The callback is deprecated. This does not work with recent versions of
2644
- * OpenSSL. Use OpenSSL::SSL::SSLContext#ecdh_curves= instead.
2645
- */
2646
- rb_attr (cSSLContext , rb_intern ("tmp_ecdh_callback" ), 1 , 1 , Qfalse );
2647
- #endif
2648
-
2649
2585
/*
2650
2586
* Sets the context in which a session can be reused. This allows
2651
2587
* sessions for multiple applications to be distinguished, for example, by
@@ -2997,7 +2933,6 @@ Init_ossl_ssl(void)
2997
2933
sym_wait_writable = ID2SYM (rb_intern ("wait_writable" ));
2998
2934
2999
2935
id_tmp_dh_callback = rb_intern ("tmp_dh_callback" );
3000
- id_tmp_ecdh_callback = rb_intern ("tmp_ecdh_callback" );
3001
2936
id_npn_protocols_encoded = rb_intern ("npn_protocols_encoded" );
3002
2937
3003
2938
#define DefIVarID (name ) do \
@@ -3015,7 +2950,6 @@ Init_ossl_ssl(void)
3015
2950
DefIVarID (key );
3016
2951
DefIVarID (extra_chain_cert );
3017
2952
DefIVarID (client_cert_cb );
3018
- DefIVarID (tmp_ecdh_callback );
3019
2953
DefIVarID (timeout );
3020
2954
DefIVarID (session_id_context );
3021
2955
DefIVarID (session_get_cb );
0 commit comments