Skip to content

Commit 743daa7

Browse files
committed
ssl: use uint64_t for SSL options
OpenSSL 3.0 changed the type of SSL options to uint64_t. Since OpenSSL 3.2 began using the 33rd bit, treating it as unsigned long is no longer sufficient.
1 parent 567be80 commit 743daa7

3 files changed

Lines changed: 90 additions & 76 deletions

File tree

ext/openssl/extconf.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,13 @@ def find_openssl_library
145145
# added in OpenSSL 1.0.2, not in LibreSSL or AWS-LC yet
146146
have_func("SSL_CTX_set1_client_sigalgs_list(NULL, NULL)", ssl_h)
147147

148+
# SSL options can be uint64_t (OpenSSL >= 3), unsigned long (OpenSSL >= 1.1),
149+
# long (LibreSSL), or uint32_t (AWS-LC)
150+
if checking_for("whether SSL_CTX_get_options() returns a 64-bit value") {
151+
try_static_assert("sizeof(SSL_CTX_get_options(NULL)) == 8", ssl_h) }
152+
$defs.push("-DOSSL_SIZEOF_SSL_OPTIONS_IS_8")
153+
end
154+
148155
# added in 1.1.0, currently not in LibreSSL
149156
have_func("EVP_PBE_scrypt(\"\", 0, (unsigned char *)\"\", 0, 0, 0, 0, 0, NULL, 0)", evp_h)
150157

ext/openssl/ossl_ssl.c

Lines changed: 67 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -627,11 +627,21 @@ ossl_sslctx_get_options(VALUE self)
627627
{
628628
SSL_CTX *ctx;
629629
GetSSLCTX(self, ctx);
630+
630631
/*
631-
* Do explicit cast because SSL_CTX_get_options() returned (signed) long in
632-
* OpenSSL before 1.1.0.
632+
* SSL_CTX_get_options() returns different types in libssl variants, and
633+
* we want to treat them as a non-negative Integer in Ruby:
634+
* - uint64_t in OpenSSL >= 3
635+
* - unsigned long in OpenSSL >= 1.1
636+
* - long in OpenSSL <= 1.0.2 and LibreSSL 4.3 (latest), with all 32 bits
637+
* used for options.
638+
* - uint32_t in AWS-LC 5.0.0 (latest)
633639
*/
634-
return ULONG2NUM((unsigned long)SSL_CTX_get_options(ctx));
640+
#ifdef OSSL_SIZEOF_SSL_OPTIONS_IS_8
641+
return UINT64T2NUM((uint64_t)SSL_CTX_get_options(ctx));
642+
#else
643+
return UINT2NUM((uint32_t)SSL_CTX_get_options(ctx));
644+
#endif
635645
}
636646

637647
/*
@@ -655,13 +665,13 @@ ossl_sslctx_set_options(VALUE self, VALUE options)
655665
rb_check_frozen(self);
656666
GetSSLCTX(self, ctx);
657667

668+
#ifdef OSSL_SIZEOF_SSL_OPTIONS_IS_8
669+
uint64_t opts = NIL_P(options) ? SSL_OP_ALL : NUM2UINT64T(options);
670+
#else
671+
uint32_t opts = NIL_P(options) ? SSL_OP_ALL : NUM2UINT(options);
672+
#endif
658673
SSL_CTX_clear_options(ctx, SSL_CTX_get_options(ctx));
659-
660-
if (NIL_P(options)) {
661-
SSL_CTX_set_options(ctx, SSL_OP_ALL);
662-
} else {
663-
SSL_CTX_set_options(ctx, NUM2ULONG(options));
664-
}
674+
SSL_CTX_set_options(ctx, opts);
665675

666676
return self;
667677
}
@@ -3178,98 +3188,98 @@ Init_ossl_ssl(void)
31783188
rb_define_const(mSSL, "VERIFY_FAIL_IF_NO_PEER_CERT", INT2NUM(SSL_VERIFY_FAIL_IF_NO_PEER_CERT));
31793189
rb_define_const(mSSL, "VERIFY_CLIENT_ONCE", INT2NUM(SSL_VERIFY_CLIENT_ONCE));
31803190

3181-
rb_define_const(mSSL, "OP_ALL", ULONG2NUM(SSL_OP_ALL));
3191+
rb_define_const(mSSL, "OP_ALL", UINT64T2NUM(SSL_OP_ALL));
31823192
#ifdef SSL_OP_CLEANSE_PLAINTEXT /* OpenSSL 3.0 */
3183-
rb_define_const(mSSL, "OP_CLEANSE_PLAINTEXT", ULONG2NUM(SSL_OP_CLEANSE_PLAINTEXT));
3193+
rb_define_const(mSSL, "OP_CLEANSE_PLAINTEXT", UINT64T2NUM(SSL_OP_CLEANSE_PLAINTEXT));
31843194
#endif
3185-
rb_define_const(mSSL, "OP_LEGACY_SERVER_CONNECT", ULONG2NUM(SSL_OP_LEGACY_SERVER_CONNECT));
3195+
rb_define_const(mSSL, "OP_LEGACY_SERVER_CONNECT", UINT64T2NUM(SSL_OP_LEGACY_SERVER_CONNECT));
31863196
#ifdef SSL_OP_ENABLE_KTLS /* OpenSSL 3.0 */
3187-
rb_define_const(mSSL, "OP_ENABLE_KTLS", ULONG2NUM(SSL_OP_ENABLE_KTLS));
3197+
rb_define_const(mSSL, "OP_ENABLE_KTLS", UINT64T2NUM(SSL_OP_ENABLE_KTLS));
31883198
#endif
3189-
rb_define_const(mSSL, "OP_TLSEXT_PADDING", ULONG2NUM(SSL_OP_TLSEXT_PADDING));
3190-
rb_define_const(mSSL, "OP_SAFARI_ECDHE_ECDSA_BUG", ULONG2NUM(SSL_OP_SAFARI_ECDHE_ECDSA_BUG));
3199+
rb_define_const(mSSL, "OP_TLSEXT_PADDING", UINT64T2NUM(SSL_OP_TLSEXT_PADDING));
3200+
rb_define_const(mSSL, "OP_SAFARI_ECDHE_ECDSA_BUG", UINT64T2NUM(SSL_OP_SAFARI_ECDHE_ECDSA_BUG));
31913201
#ifdef SSL_OP_IGNORE_UNEXPECTED_EOF /* OpenSSL 3.0 */
3192-
rb_define_const(mSSL, "OP_IGNORE_UNEXPECTED_EOF", ULONG2NUM(SSL_OP_IGNORE_UNEXPECTED_EOF));
3202+
rb_define_const(mSSL, "OP_IGNORE_UNEXPECTED_EOF", UINT64T2NUM(SSL_OP_IGNORE_UNEXPECTED_EOF));
31933203
#endif
31943204
#ifdef SSL_OP_ALLOW_CLIENT_RENEGOTIATION /* OpenSSL 3.0 */
3195-
rb_define_const(mSSL, "OP_ALLOW_CLIENT_RENEGOTIATION", ULONG2NUM(SSL_OP_ALLOW_CLIENT_RENEGOTIATION));
3205+
rb_define_const(mSSL, "OP_ALLOW_CLIENT_RENEGOTIATION", UINT64T2NUM(SSL_OP_ALLOW_CLIENT_RENEGOTIATION));
31963206
#endif
31973207
#ifdef SSL_OP_DISABLE_TLSEXT_CA_NAMES /* OpenSSL 3.0 */
3198-
rb_define_const(mSSL, "OP_DISABLE_TLSEXT_CA_NAMES", ULONG2NUM(SSL_OP_DISABLE_TLSEXT_CA_NAMES));
3208+
rb_define_const(mSSL, "OP_DISABLE_TLSEXT_CA_NAMES", UINT64T2NUM(SSL_OP_DISABLE_TLSEXT_CA_NAMES));
31993209
#endif
32003210
#ifdef SSL_OP_ALLOW_NO_DHE_KEX /* OpenSSL 1.1.1, missing in LibreSSL */
3201-
rb_define_const(mSSL, "OP_ALLOW_NO_DHE_KEX", ULONG2NUM(SSL_OP_ALLOW_NO_DHE_KEX));
3211+
rb_define_const(mSSL, "OP_ALLOW_NO_DHE_KEX", UINT64T2NUM(SSL_OP_ALLOW_NO_DHE_KEX));
32023212
#endif
3203-
rb_define_const(mSSL, "OP_DONT_INSERT_EMPTY_FRAGMENTS", ULONG2NUM(SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS));
3204-
rb_define_const(mSSL, "OP_NO_TICKET", ULONG2NUM(SSL_OP_NO_TICKET));
3205-
rb_define_const(mSSL, "OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION", ULONG2NUM(SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION));
3206-
rb_define_const(mSSL, "OP_NO_COMPRESSION", ULONG2NUM(SSL_OP_NO_COMPRESSION));
3207-
rb_define_const(mSSL, "OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION", ULONG2NUM(SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION));
3213+
rb_define_const(mSSL, "OP_DONT_INSERT_EMPTY_FRAGMENTS", UINT64T2NUM(SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS));
3214+
rb_define_const(mSSL, "OP_NO_TICKET", UINT64T2NUM(SSL_OP_NO_TICKET));
3215+
rb_define_const(mSSL, "OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION", UINT64T2NUM(SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION));
3216+
rb_define_const(mSSL, "OP_NO_COMPRESSION", UINT64T2NUM(SSL_OP_NO_COMPRESSION));
3217+
rb_define_const(mSSL, "OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION", UINT64T2NUM(SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION));
32083218
#ifdef SSL_OP_NO_ENCRYPT_THEN_MAC /* OpenSSL 1.1.1, missing in LibreSSL */
3209-
rb_define_const(mSSL, "OP_NO_ENCRYPT_THEN_MAC", ULONG2NUM(SSL_OP_NO_ENCRYPT_THEN_MAC));
3219+
rb_define_const(mSSL, "OP_NO_ENCRYPT_THEN_MAC", UINT64T2NUM(SSL_OP_NO_ENCRYPT_THEN_MAC));
32103220
#endif
32113221
#ifdef SSL_OP_ENABLE_MIDDLEBOX_COMPAT /* OpenSSL 1.1.1, missing in LibreSSL */
3212-
rb_define_const(mSSL, "OP_ENABLE_MIDDLEBOX_COMPAT", ULONG2NUM(SSL_OP_ENABLE_MIDDLEBOX_COMPAT));
3222+
rb_define_const(mSSL, "OP_ENABLE_MIDDLEBOX_COMPAT", UINT64T2NUM(SSL_OP_ENABLE_MIDDLEBOX_COMPAT));
32133223
#endif
32143224
#ifdef SSL_OP_PRIORITIZE_CHACHA /* OpenSSL 1.1.1, missing in LibreSSL */
3215-
rb_define_const(mSSL, "OP_PRIORITIZE_CHACHA", ULONG2NUM(SSL_OP_PRIORITIZE_CHACHA));
3225+
rb_define_const(mSSL, "OP_PRIORITIZE_CHACHA", UINT64T2NUM(SSL_OP_PRIORITIZE_CHACHA));
32163226
#endif
32173227
#ifdef SSL_OP_NO_ANTI_REPLAY /* OpenSSL 1.1.1, missing in LibreSSL */
3218-
rb_define_const(mSSL, "OP_NO_ANTI_REPLAY", ULONG2NUM(SSL_OP_NO_ANTI_REPLAY));
3228+
rb_define_const(mSSL, "OP_NO_ANTI_REPLAY", UINT64T2NUM(SSL_OP_NO_ANTI_REPLAY));
32193229
#endif
3220-
rb_define_const(mSSL, "OP_NO_SSLv3", ULONG2NUM(SSL_OP_NO_SSLv3));
3221-
rb_define_const(mSSL, "OP_NO_TLSv1", ULONG2NUM(SSL_OP_NO_TLSv1));
3222-
rb_define_const(mSSL, "OP_NO_TLSv1_1", ULONG2NUM(SSL_OP_NO_TLSv1_1));
3223-
rb_define_const(mSSL, "OP_NO_TLSv1_2", ULONG2NUM(SSL_OP_NO_TLSv1_2));
3224-
rb_define_const(mSSL, "OP_NO_TLSv1_3", ULONG2NUM(SSL_OP_NO_TLSv1_3));
3225-
rb_define_const(mSSL, "OP_CIPHER_SERVER_PREFERENCE", ULONG2NUM(SSL_OP_CIPHER_SERVER_PREFERENCE));
3226-
rb_define_const(mSSL, "OP_TLS_ROLLBACK_BUG", ULONG2NUM(SSL_OP_TLS_ROLLBACK_BUG));
3230+
rb_define_const(mSSL, "OP_NO_SSLv3", UINT64T2NUM(SSL_OP_NO_SSLv3));
3231+
rb_define_const(mSSL, "OP_NO_TLSv1", UINT64T2NUM(SSL_OP_NO_TLSv1));
3232+
rb_define_const(mSSL, "OP_NO_TLSv1_1", UINT64T2NUM(SSL_OP_NO_TLSv1_1));
3233+
rb_define_const(mSSL, "OP_NO_TLSv1_2", UINT64T2NUM(SSL_OP_NO_TLSv1_2));
3234+
rb_define_const(mSSL, "OP_NO_TLSv1_3", UINT64T2NUM(SSL_OP_NO_TLSv1_3));
3235+
rb_define_const(mSSL, "OP_CIPHER_SERVER_PREFERENCE", UINT64T2NUM(SSL_OP_CIPHER_SERVER_PREFERENCE));
3236+
rb_define_const(mSSL, "OP_TLS_ROLLBACK_BUG", UINT64T2NUM(SSL_OP_TLS_ROLLBACK_BUG));
32273237
#ifdef SSL_OP_NO_RENEGOTIATION /* OpenSSL 1.1.1, missing in LibreSSL */
3228-
rb_define_const(mSSL, "OP_NO_RENEGOTIATION", ULONG2NUM(SSL_OP_NO_RENEGOTIATION));
3238+
rb_define_const(mSSL, "OP_NO_RENEGOTIATION", UINT64T2NUM(SSL_OP_NO_RENEGOTIATION));
32293239
#endif
3230-
rb_define_const(mSSL, "OP_CRYPTOPRO_TLSEXT_BUG", ULONG2NUM(SSL_OP_CRYPTOPRO_TLSEXT_BUG));
3240+
rb_define_const(mSSL, "OP_CRYPTOPRO_TLSEXT_BUG", UINT64T2NUM(SSL_OP_CRYPTOPRO_TLSEXT_BUG));
32313241

32323242
/* SSL_OP_* flags for DTLS */
32333243
#if 0
3234-
rb_define_const(mSSL, "OP_NO_QUERY_MTU", ULONG2NUM(SSL_OP_NO_QUERY_MTU));
3235-
rb_define_const(mSSL, "OP_COOKIE_EXCHANGE", ULONG2NUM(SSL_OP_COOKIE_EXCHANGE));
3236-
rb_define_const(mSSL, "OP_CISCO_ANYCONNECT", ULONG2NUM(SSL_OP_CISCO_ANYCONNECT));
3244+
rb_define_const(mSSL, "OP_NO_QUERY_MTU", UINT64T2NUM(SSL_OP_NO_QUERY_MTU));
3245+
rb_define_const(mSSL, "OP_COOKIE_EXCHANGE", UINT64T2NUM(SSL_OP_COOKIE_EXCHANGE));
3246+
rb_define_const(mSSL, "OP_CISCO_ANYCONNECT", UINT64T2NUM(SSL_OP_CISCO_ANYCONNECT));
32373247
#endif
32383248

32393249
/* Deprecated in OpenSSL 1.1.0. */
3240-
rb_define_const(mSSL, "OP_MICROSOFT_SESS_ID_BUG", ULONG2NUM(SSL_OP_MICROSOFT_SESS_ID_BUG));
3250+
rb_define_const(mSSL, "OP_MICROSOFT_SESS_ID_BUG", UINT64T2NUM(SSL_OP_MICROSOFT_SESS_ID_BUG));
32413251
/* Deprecated in OpenSSL 1.1.0. */
3242-
rb_define_const(mSSL, "OP_NETSCAPE_CHALLENGE_BUG", ULONG2NUM(SSL_OP_NETSCAPE_CHALLENGE_BUG));
3252+
rb_define_const(mSSL, "OP_NETSCAPE_CHALLENGE_BUG", UINT64T2NUM(SSL_OP_NETSCAPE_CHALLENGE_BUG));
32433253
/* Deprecated in OpenSSL 0.9.8q and 1.0.0c. */
3244-
rb_define_const(mSSL, "OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG", ULONG2NUM(SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG));
3254+
rb_define_const(mSSL, "OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG", UINT64T2NUM(SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG));
32453255
/* Deprecated in OpenSSL 1.0.1h and 1.0.2. */
3246-
rb_define_const(mSSL, "OP_SSLREF2_REUSE_CERT_TYPE_BUG", ULONG2NUM(SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG));
3256+
rb_define_const(mSSL, "OP_SSLREF2_REUSE_CERT_TYPE_BUG", UINT64T2NUM(SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG));
32473257
/* Deprecated in OpenSSL 1.1.0. */
3248-
rb_define_const(mSSL, "OP_MICROSOFT_BIG_SSLV3_BUFFER", ULONG2NUM(SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER));
3258+
rb_define_const(mSSL, "OP_MICROSOFT_BIG_SSLV3_BUFFER", UINT64T2NUM(SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER));
32493259
/* Deprecated in OpenSSL 0.9.7h and 0.9.8b. */
3250-
rb_define_const(mSSL, "OP_MSIE_SSLV2_RSA_PADDING", ULONG2NUM(SSL_OP_MSIE_SSLV2_RSA_PADDING));
3260+
rb_define_const(mSSL, "OP_MSIE_SSLV2_RSA_PADDING", UINT64T2NUM(SSL_OP_MSIE_SSLV2_RSA_PADDING));
32513261
/* Deprecated in OpenSSL 1.1.0. */
3252-
rb_define_const(mSSL, "OP_SSLEAY_080_CLIENT_DH_BUG", ULONG2NUM(SSL_OP_SSLEAY_080_CLIENT_DH_BUG));
3262+
rb_define_const(mSSL, "OP_SSLEAY_080_CLIENT_DH_BUG", UINT64T2NUM(SSL_OP_SSLEAY_080_CLIENT_DH_BUG));
32533263
/* Deprecated in OpenSSL 1.1.0. */
3254-
rb_define_const(mSSL, "OP_TLS_D5_BUG", ULONG2NUM(SSL_OP_TLS_D5_BUG));
3264+
rb_define_const(mSSL, "OP_TLS_D5_BUG", UINT64T2NUM(SSL_OP_TLS_D5_BUG));
32553265
/* Deprecated in OpenSSL 1.1.0. */
3256-
rb_define_const(mSSL, "OP_TLS_BLOCK_PADDING_BUG", ULONG2NUM(SSL_OP_TLS_BLOCK_PADDING_BUG));
3266+
rb_define_const(mSSL, "OP_TLS_BLOCK_PADDING_BUG", UINT64T2NUM(SSL_OP_TLS_BLOCK_PADDING_BUG));
32573267
/* Deprecated in OpenSSL 1.1.0. */
3258-
rb_define_const(mSSL, "OP_SINGLE_ECDH_USE", ULONG2NUM(SSL_OP_SINGLE_ECDH_USE));
3268+
rb_define_const(mSSL, "OP_SINGLE_ECDH_USE", UINT64T2NUM(SSL_OP_SINGLE_ECDH_USE));
32593269
/* Deprecated in OpenSSL 1.1.0. */
3260-
rb_define_const(mSSL, "OP_SINGLE_DH_USE", ULONG2NUM(SSL_OP_SINGLE_DH_USE));
3270+
rb_define_const(mSSL, "OP_SINGLE_DH_USE", UINT64T2NUM(SSL_OP_SINGLE_DH_USE));
32613271
/* Deprecated in OpenSSL 1.0.1k and 1.0.2. */
3262-
rb_define_const(mSSL, "OP_EPHEMERAL_RSA", ULONG2NUM(SSL_OP_EPHEMERAL_RSA));
3272+
rb_define_const(mSSL, "OP_EPHEMERAL_RSA", UINT64T2NUM(SSL_OP_EPHEMERAL_RSA));
32633273
/* Deprecated in OpenSSL 1.1.0. */
3264-
rb_define_const(mSSL, "OP_NO_SSLv2", ULONG2NUM(SSL_OP_NO_SSLv2));
3274+
rb_define_const(mSSL, "OP_NO_SSLv2", UINT64T2NUM(SSL_OP_NO_SSLv2));
32653275
/* Deprecated in OpenSSL 1.0.1. */
3266-
rb_define_const(mSSL, "OP_PKCS1_CHECK_1", ULONG2NUM(SSL_OP_PKCS1_CHECK_1));
3276+
rb_define_const(mSSL, "OP_PKCS1_CHECK_1", UINT64T2NUM(SSL_OP_PKCS1_CHECK_1));
32673277
/* Deprecated in OpenSSL 1.0.1. */
3268-
rb_define_const(mSSL, "OP_PKCS1_CHECK_2", ULONG2NUM(SSL_OP_PKCS1_CHECK_2));
3278+
rb_define_const(mSSL, "OP_PKCS1_CHECK_2", UINT64T2NUM(SSL_OP_PKCS1_CHECK_2));
32693279
/* Deprecated in OpenSSL 1.1.0. */
3270-
rb_define_const(mSSL, "OP_NETSCAPE_CA_DN_BUG", ULONG2NUM(SSL_OP_NETSCAPE_CA_DN_BUG));
3280+
rb_define_const(mSSL, "OP_NETSCAPE_CA_DN_BUG", UINT64T2NUM(SSL_OP_NETSCAPE_CA_DN_BUG));
32713281
/* Deprecated in OpenSSL 1.1.0. */
3272-
rb_define_const(mSSL, "OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG", ULONG2NUM(SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG));
3282+
rb_define_const(mSSL, "OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG", UINT64T2NUM(SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG));
32733283

32743284

32753285
/*

test/openssl/test_ssl.rb

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,24 @@ def test_ctx_options
3030
if ctx.options != 4
3131
pend "SSL_CTX_set_options() seems to be modified by distributor"
3232
end
33+
34+
# Unsetting options
35+
ctx.options = 0
36+
assert_equal(0, ctx.options)
37+
38+
# Option constants
39+
all_ops = OpenSSL::SSL.constants
40+
.grep(/^OP_/)
41+
.map { |c| OpenSSL::SSL.const_get(c) }
42+
all_ops.each { |op| assert_operator(op, :>=, 0) }
43+
everything = all_ops.inject(&:|)
44+
assert_operator(everything, :>, 0)
45+
ctx.options = everything
46+
assert_equal(everything, ctx.options)
47+
48+
# Backwards compatibility: nil means OP_ALL
3349
ctx.options = nil
3450
assert_equal OpenSSL::SSL::OP_ALL, ctx.options
35-
36-
assert_equal true, ctx.setup
37-
assert_predicate ctx, :frozen?
38-
assert_equal nil, ctx.setup
3951
end
4052

4153
def test_ctx_options_config
@@ -1255,21 +1267,6 @@ def test_connect_certificate_verify_failed_exception_message
12551267
}
12561268
end
12571269

1258-
def test_unset_OP_ALL
1259-
ctx_proc = Proc.new { |ctx|
1260-
# If OP_DONT_INSERT_EMPTY_FRAGMENTS is not defined, this test is
1261-
# redundant because the default options already are equal to OP_ALL.
1262-
# But it also degrades gracefully, so keep it
1263-
ctx.options = OpenSSL::SSL::OP_ALL
1264-
}
1265-
start_server(ctx_proc: ctx_proc) { |port|
1266-
server_connect(port) { |ssl|
1267-
ssl.puts('hello')
1268-
assert_equal("hello\n", ssl.gets)
1269-
}
1270-
}
1271-
end
1272-
12731270
def check_supported_protocol_versions
12741271
possible_versions = [
12751272
OpenSSL::SSL::SSL3_VERSION,

0 commit comments

Comments
 (0)