diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | ossl_x509cert.c | 24 | ||||
-rw-r--r-- | ossl_x509crl.c | 24 |
3 files changed, 52 insertions, 0 deletions
@@ -1,3 +1,7 @@ +Sun, 09 Jul 2003 01:05:55 +0900 -- NAKAMURA, Hiroshi <nahi@ruby-lang.org> + * ossl_x509cert.c, ossl_x509crl.c: Add + (Certificate|CRL)#signature_algorithm. + Sun, 06 Jul 2003 14:15:36 +0900 -- GOTOU Yuuzou <gotoyuzo@notwork.org> * ossl_ocsp.c: should not assign NULL to revtime (revtime is a VALUE). diff --git a/ossl_x509cert.c b/ossl_x509cert.c index a297053..fe3c111 100644 --- a/ossl_x509cert.c +++ b/ossl_x509cert.c @@ -323,6 +323,29 @@ ossl_x509_set_serial(VALUE self, VALUE num) } static VALUE +ossl_x509_get_signature_algorithm(VALUE self) +{ + X509 *x509; + BIO *out; + BUF_MEM *buf; + VALUE str; + + GetX509(self, x509); + + if (!(out = BIO_new(BIO_s_mem()))) { + ossl_raise(eX509CertError, ""); + } + if (!i2a_ASN1_OBJECT(out, x509->cert_info->signature->algorithm)) { + BIO_free(out); + ossl_raise(eX509CertError, ""); + } + BIO_get_mem_ptr(out, &buf); + str = rb_str_new(buf->data, buf->length); + BIO_free(out); + return str; +} + +static VALUE ossl_x509_get_subject(VALUE self) { X509 *x509; @@ -647,6 +670,7 @@ Init_ossl_x509cert() rb_define_method(cX509Cert, "to_text", ossl_x509_to_text, 0); rb_define_method(cX509Cert, "version", ossl_x509_get_version, 0); rb_define_method(cX509Cert, "version=", ossl_x509_set_version, 1); + rb_define_method(cX509Cert, "signature_algorithm", ossl_x509_get_signature_algorithm, 0); rb_define_method(cX509Cert, "serial", ossl_x509_get_serial, 0); rb_define_method(cX509Cert, "serial=", ossl_x509_set_serial, 1); rb_define_method(cX509Cert, "subject", ossl_x509_get_subject, 0); diff --git a/ossl_x509crl.c b/ossl_x509crl.c index 1678786..f1e3b74 100644 --- a/ossl_x509crl.c +++ b/ossl_x509crl.c @@ -173,6 +173,29 @@ ossl_x509crl_set_version(VALUE self, VALUE version) } static VALUE +ossl_x509crl_get_signature_algorithm(VALUE self) +{ + X509_CRL *crl; + BIO *out; + BUF_MEM *buf; + VALUE str; + + GetX509CRL(self, crl); + + if (!(out = BIO_new(BIO_s_mem()))) { + ossl_raise(eX509CertError, ""); + } + if (!i2a_ASN1_OBJECT(out, crl->sig_alg->algorithm)) { + BIO_free(out); + ossl_raise(eX509CertError, ""); + } + BIO_get_mem_ptr(out, &buf); + str = rb_str_new(buf->data, buf->length); + BIO_free(out); + return str; +} + +static VALUE ossl_x509crl_get_issuer(VALUE self) { X509_CRL *crl; @@ -505,6 +528,7 @@ Init_ossl_x509crl() rb_define_method(cX509CRL, "version", ossl_x509crl_get_version, 0); rb_define_method(cX509CRL, "version=", ossl_x509crl_set_version, 1); + rb_define_method(cX509CRL, "signature_algorithm", ossl_x509crl_get_signature_algorithm, 0); rb_define_method(cX509CRL, "issuer", ossl_x509crl_get_issuer, 0); rb_define_method(cX509CRL, "issuer=", ossl_x509crl_set_issuer, 1); rb_define_method(cX509CRL, "last_update", ossl_x509crl_get_last_update, 0); |