1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/openssl] ssl: temporarily remove SSLContext#add_certificate_chain_file

Let's revert the changes for now, as it cannot be included in the 2.2.0
release.

My comment on #257:

> A blocker is OpenSSL::SSL::SSLContext#add_certificate_chain_file. It
> has a pending change and I don't want to include it in an incomplete
> state.
>
> The initial implementation in commit 46e4bdba40c5 was not really
> useful. The issue is described in #305. #309 extended it
> to take the corresponding private key together. However, the new
> implementation was incompatible on Windows and was reverted by #320 to
> the initial one.
>
> (The prerequisite to implement it in) an alternative way is #288, and
> it's still cooking.

This effectively reverts the following commits:

 - dacd08937ccd ("ssl: suppress test failure with SSLContext#add_certificate_chain_file", 2020-03-09)
 - 46e4bdba40c5 ("Add support for SSL_CTX_use_certificate_chain_file. Fixes #254.", 2019-06-13)

https://github.com/ruby/openssl/commit/ea925619a9
This commit is contained in:
Kazuki Yamaguchi 2020-05-13 14:33:06 +09:00
parent 6f008c9d2f
commit cc26638cae
2 changed files with 0 additions and 44 deletions

View file

@ -1329,21 +1329,6 @@ ossl_sslctx_add_certificate(int argc, VALUE *argv, VALUE self)
return self;
}
static VALUE
ossl_sslctx_add_certificate_chain_file(VALUE self, VALUE path)
{
SSL_CTX *ctx;
int ret;
GetSSLCTX(self, ctx);
StringValueCStr(path);
ret = SSL_CTX_use_certificate_chain_file(ctx, RSTRING_PTR(path));
if (ret != 1)
ossl_raise(eSSLError, "SSL_CTX_use_certificate_chain_file");
return Qtrue;
}
/*
* call-seq:
* ctx.session_add(session) -> true | false
@ -2795,7 +2780,6 @@ Init_ossl_ssl(void)
rb_define_method(cSSLContext, "enable_fallback_scsv", ossl_sslctx_enable_fallback_scsv, 0);
#endif
rb_define_method(cSSLContext, "add_certificate", ossl_sslctx_add_certificate, -1);
rb_define_method(cSSLContext, "add_certificate_chain_file", ossl_sslctx_add_certificate_chain_file, 1);
rb_define_method(cSSLContext, "setup", ossl_sslctx_setup, 0);
rb_define_alias(cSSLContext, "freeze", "setup");

View file

@ -189,34 +189,6 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
end
end
def test_add_certificate_chain_file
# Create chain certificates file
certs = Tempfile.open { |f| f << @svr_cert.to_pem << @ca_cert.to_pem; f }
pkey = Tempfile.open { |f| f << @svr_key.to_pem; f }
ctx_proc = -> ctx {
# FIXME: This is a temporary test case written just to match the current
# state. ctx.add_certificate_chain_file should take two arguments.
ctx.add_certificate_chain_file(certs.path)
# # Unset values set by start_server
# ctx.cert = ctx.key = ctx.extra_chain_cert = nil
# assert_nothing_raised { ctx.add_certificate_chain_file(certs.path, pkey.path) }
}
start_server(ctx_proc: ctx_proc) { |port|
server_connect(port) { |ssl|
assert_equal @svr_cert.subject, ssl.peer_cert.subject
assert_equal [@svr_cert.subject, @ca_cert.subject],
ssl.peer_cert_chain.map(&:subject)
ssl.puts "abc"; assert_equal "abc\n", ssl.gets
}
}
ensure
certs&.unlink
pkey&.unlink
end
def test_sysread_and_syswrite
start_server { |port|
server_connect(port) { |ssl|