aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNAKAMURA Hiroshi <nahi@keynauts.com>2003-07-08 16:07:18 +0000
committerNAKAMURA Hiroshi <nahi@keynauts.com>2003-07-08 16:07:18 +0000
commit39a4555216bd0eaa7884e669240592025b57816d (patch)
treeb7f43678b52d0b815cc3113e48c3e394f38faee1
parent7abc254feab560e10da3a582a7afc7679fdeb461 (diff)
downloadruby-openssl-history-39a4555216bd0eaa7884e669240592025b57816d.tar.gz
* ossl_x509cert.c, ossl_x509crl.c: Add (Certificate|CRL)#signature_algorithm.
-rw-r--r--ChangeLog4
-rw-r--r--ossl_x509cert.c24
-rw-r--r--ossl_x509crl.c24
3 files changed, 52 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index bb87d0c..55705bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);