aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-06-13 16:54:38 +1200
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-06-13 16:55:57 +1200
commit46e4bdba40c5e9c0b84b9ce8a3d1a2012bb1136e (patch)
tree784ca45477c1b7b822db1e086f725342795b318c
parent4e9801dff8557e96d4076febe6ecabd531bd0779 (diff)
downloadruby-openssl-46e4bdba40c5e9c0b84b9ce8a3d1a2012bb1136e.tar.gz
Add support for SSL_CTX_use_certificate_chain_file. Fixes #254.
-rw-r--r--ext/openssl/ossl_ssl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index 7996f227..df2304e4 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -1318,6 +1318,17 @@ ossl_sslctx_add_certificate(int argc, VALUE *argv, VALUE self)
return self;
}
+static VALUE
+ossl_sslctx_add_certificate_chain_file(VALUE self, VALUE path)
+{
+ StringValue(path);
+ SSL_CTX *ctx = NULL;
+
+ GetSSLCTX(self, ctx);
+
+ return SSL_CTX_use_certificate_chain_file(ctx, RSTRING_PTR(path)) == 1 ? Qtrue : Qfalse;
+}
+
/*
* call-seq:
* ctx.session_add(session) -> true | false
@@ -2700,6 +2711,7 @@ 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");