aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-06-15 10:26:14 +1200
committerGitHub <noreply@github.com>2019-06-15 10:26:14 +1200
commitbf04f483b2d643513161955435f5a99fc4c89f8f (patch)
tree81f741ab52cc0419f37d80d9357832a00458d942
parent4b43ffc1292eeb70ff886847836e21ad96ed8796 (diff)
parentee577ec1da545caf828994566459b328b3ffbe27 (diff)
downloadruby-openssl-bf04f483b2d643513161955435f5a99fc4c89f8f.tar.gz
Merge pull request #234 from mastahyeti/ext-value-der
Add OpenSSL::X509::Extension#value_der method
-rw-r--r--ext/openssl/ossl_x509ext.c14
-rw-r--r--test/test_x509ext.rb5
2 files changed, 19 insertions, 0 deletions
diff --git a/ext/openssl/ossl_x509ext.c b/ext/openssl/ossl_x509ext.c
index 30ec09d7..5eb9bd75 100644
--- a/ext/openssl/ossl_x509ext.c
+++ b/ext/openssl/ossl_x509ext.c
@@ -403,6 +403,19 @@ ossl_x509ext_get_value(VALUE obj)
}
static VALUE
+ossl_x509ext_get_value_der(VALUE obj)
+{
+ X509_EXTENSION *ext;
+ ASN1_OCTET_STRING *value;
+
+ GetX509Ext(obj, ext);
+ if ((value = X509_EXTENSION_get_data(ext)) == NULL)
+ ossl_raise(eX509ExtError, NULL);
+
+ return rb_str_new((const char *)value->data, value->length);
+}
+
+static VALUE
ossl_x509ext_get_critical(VALUE obj)
{
X509_EXTENSION *ext;
@@ -472,6 +485,7 @@ Init_ossl_x509ext(void)
rb_define_method(cX509Ext, "critical=", ossl_x509ext_set_critical, 1);
rb_define_method(cX509Ext, "oid", ossl_x509ext_get_oid, 0);
rb_define_method(cX509Ext, "value", ossl_x509ext_get_value, 0);
+ rb_define_method(cX509Ext, "value_der", ossl_x509ext_get_value_der, 0);
rb_define_method(cX509Ext, "critical?", ossl_x509ext_get_critical, 0);
rb_define_method(cX509Ext, "to_der", ossl_x509ext_to_der, 0);
}
diff --git a/test/test_x509ext.rb b/test/test_x509ext.rb
index 91ce202f..6964af46 100644
--- a/test/test_x509ext.rb
+++ b/test/test_x509ext.rb
@@ -86,6 +86,11 @@ class OpenSSL::TestX509Extension < OpenSSL::TestCase
assert_equal true, ext1 == ext2
assert_equal false, ext1 == ext3
end
+
+ def test_value_der
+ ext = OpenSSL::X509::Extension.new(@basic_constraints.to_der)
+ assert_equal @basic_constraints_value.to_der, ext.value_der
+ end
end
end