diff options
author | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-22 20:47:55 +0000 |
---|---|---|
committer | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-22 20:47:55 +0000 |
commit | 0502fcc1d143e95b8f563cc310c960e8d01df8f5 (patch) | |
tree | f67e5ec733bf10339e89bba6b08293857b1a5a28 /ext/openssl | |
parent | 36e834c8c3c8096c83b1f4b42318c766dd8e0996 (diff) | |
download | ruby-0502fcc1d143e95b8f563cc310c960e8d01df8f5.tar.gz ruby-0502fcc1d143e95b8f563cc310c960e8d01df8f5.tar.xz ruby-0502fcc1d143e95b8f563cc310c960e8d01df8f5.zip |
* ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): try to decode
the argument as a string.
* ext/openssl/ossl_ns_pki.c (ossl_spki_to_der): new method.
* ext/openssl/ossl_x509store.c (ossl_x509store_initialize): should
set @time to avoid warning.
* ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths,
X509_STORE_add_cert, X509_STORE_add_crl): should raise error if
wrapped functions fails.
* ext/openssl/ossl_ssl.c (ossl_sslctx_set_ciphers): fix error message.
* ext/openssl/ossl_x509req.c (ossl_x509req_set_attributes): get rid
of unused variable.
* test/openssl/test_ns_spki.rb: add new file.
* test/openssl/test_x509store.rb: add test for error.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@9021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/openssl')
-rw-r--r-- | ext/openssl/ossl_ns_spki.c | 30 | ||||
-rw-r--r-- | ext/openssl/ossl_ssl.c | 2 | ||||
-rw-r--r-- | ext/openssl/ossl_x509req.c | 2 | ||||
-rw-r--r-- | ext/openssl/ossl_x509store.c | 13 |
4 files changed, 40 insertions, 7 deletions
diff --git a/ext/openssl/ossl_ns_spki.c b/ext/openssl/ossl_ns_spki.c index c4ad05dea..5cba52985 100644 --- a/ext/openssl/ossl_ns_spki.c +++ b/ext/openssl/ossl_ns_spki.c @@ -56,12 +56,17 @@ ossl_spki_initialize(int argc, VALUE *argv, VALUE self) { NETSCAPE_SPKI *spki; VALUE buffer; + unsigned char *p; if (rb_scan_args(argc, argv, "01", &buffer) == 0) { return self; } - if (!(spki = NETSCAPE_SPKI_b64_decode(StringValuePtr(buffer), -1))) { - ossl_raise(eSPKIError, NULL); + StringValue(buffer); + if (!(spki = NETSCAPE_SPKI_b64_decode(RSTRING(buffer)->ptr, -1))) { + p = RSTRING(buffer)->ptr; + if (!(spki = d2i_NETSCAPE_SPKI(NULL, &p, RSTRING(buffer)->len))) { + ossl_raise(eSPKIError, NULL); + } } NETSCAPE_SPKI_free(DATA_PTR(self)); DATA_PTR(self) = spki; @@ -70,6 +75,26 @@ ossl_spki_initialize(int argc, VALUE *argv, VALUE self) } static VALUE +ossl_spki_to_der(VALUE self) +{ + NETSCAPE_SPKI *spki; + VALUE str; + long len; + unsigned char *p; + + GetSPKI(self, spki); + if ((len = i2d_NETSCAPE_SPKI(spki, NULL)) <= 0) + ossl_raise(eX509CertError, NULL); + str = rb_str_new(0, len); + p = RSTRING(str)->ptr; + if (i2d_NETSCAPE_SPKI(spki, &p) <= 0) + ossl_raise(eX509CertError, NULL); + ossl_str_adjust(str, p); + + return str; +} + +static VALUE ossl_spki_to_pem(VALUE self) { NETSCAPE_SPKI *spki; @@ -217,6 +242,7 @@ Init_ossl_ns_spki() rb_define_alloc_func(cSPKI, ossl_spki_alloc); rb_define_method(cSPKI, "initialize", ossl_spki_initialize, -1); + rb_define_method(cSPKI, "to_der", ossl_spki_to_der, 0); rb_define_method(cSPKI, "to_pem", ossl_spki_to_pem, 0); rb_define_alias(cSPKI, "to_s", "to_pem"); rb_define_method(cSPKI, "to_text", ossl_spki_print, 0); diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index 7a376223a..5ae4cae56 100644 --- a/ext/openssl/ossl_ssl.c +++ b/ext/openssl/ossl_ssl.c @@ -477,7 +477,7 @@ ossl_sslctx_set_ciphers(VALUE self, VALUE v) return Qnil; } if (!SSL_CTX_set_cipher_list(ctx, RSTRING(str)->ptr)) { - ossl_raise(eSSLError, "SSL_CTX_set_ciphers:"); + ossl_raise(eSSLError, "SSL_CTX_set_cipher_list:"); } return v; diff --git a/ext/openssl/ossl_x509req.c b/ext/openssl/ossl_x509req.c index 35c520194..d64425043 100644 --- a/ext/openssl/ossl_x509req.c +++ b/ext/openssl/ossl_x509req.c @@ -400,7 +400,7 @@ ossl_x509req_set_attributes(VALUE self, VALUE ary) X509_REQ *req; X509_ATTRIBUTE *attr; int i; - VALUE tmp, item; + VALUE item; Check_Type(ary, T_ARRAY); for (i=0;i<RARRAY(ary)->len; i++) { diff --git a/ext/openssl/ossl_x509store.c b/ext/openssl/ossl_x509store.c index 5dba73387..cea845a1c 100644 --- a/ext/openssl/ossl_x509store.c +++ b/ext/openssl/ossl_x509store.c @@ -137,6 +137,7 @@ ossl_x509store_initialize(int argc, VALUE *argv, VALUE self) rb_iv_set(self, "@error", Qnil); rb_iv_set(self, "@error_string", Qnil); rb_iv_set(self, "@chain", Qnil); + rb_iv_set(self, "@time", Qnil); return self; } @@ -244,7 +245,9 @@ ossl_x509store_set_default_paths(VALUE self) X509_STORE *store; GetX509Store(self, store); - X509_STORE_set_default_paths(store); + if (X509_STORE_set_default_paths(store) != 1){ + ossl_raise(eX509StoreError, NULL); + } return Qnil; } @@ -257,7 +260,9 @@ ossl_x509store_add_cert(VALUE self, VALUE arg) cert = GetX509CertPtr(arg); /* NO NEED TO DUP */ GetX509Store(self, store); - X509_STORE_add_cert(store, cert); + if (X509_STORE_add_cert(store, cert) != 1){ + ossl_raise(eX509StoreError, NULL); + } return self; } @@ -270,7 +275,9 @@ ossl_x509store_add_crl(VALUE self, VALUE arg) crl = GetX509CRLPtr(arg); /* NO NEED TO DUP */ GetX509Store(self, store); - X509_STORE_add_crl(store, crl); + if (X509_STORE_add_crl(store, crl) != 1){ + ossl_raise(eX509StoreError, NULL); + } return self; } |