diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2019-06-15 10:26:14 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-15 10:26:14 +1200 |
commit | bf04f483b2d643513161955435f5a99fc4c89f8f (patch) | |
tree | 81f741ab52cc0419f37d80d9357832a00458d942 | |
parent | 4b43ffc1292eeb70ff886847836e21ad96ed8796 (diff) | |
parent | ee577ec1da545caf828994566459b328b3ffbe27 (diff) | |
download | ruby-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.c | 14 | ||||
-rw-r--r-- | test/test_x509ext.rb | 5 |
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 |