From 256d273e69081484b1a30a66a9be196b7d2e1ac2 Mon Sep 17 00:00:00 2001 From: gotoyuzo Date: Sat, 6 Sep 2003 08:56:09 +0000 Subject: * ext/openssl/ruby_missing.c: rid of unnecessary backward compatibility stuff. and remove DEFINE_ALLOC_WRAPPER from all sources. * ext/openssl/ossl_x509ext.c (X509::Extension.new): new method. * ext/openssl/ossl_x509ext.c (X509::Extension#oid=): new method. * ext/openssl/ossl_x509ext.c (X509::Extension#value=): new method. * ext/openssl/ossl_x509ext.c (X509::Extension#critical=): new method. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 14 +++++++ ext/openssl/ossl_bn.c | 1 - ext/openssl/ossl_cipher.c | 1 - ext/openssl/ossl_digest.c | 15 +------ ext/openssl/ossl_hmac.c | 1 - ext/openssl/ossl_ns_spki.c | 1 - ext/openssl/ossl_ocsp.c | 4 -- ext/openssl/ossl_pkcs7.c | 2 - ext/openssl/ossl_pkey.c | 1 - ext/openssl/ossl_ssl.c | 2 - ext/openssl/ossl_x509cert.c | 1 - ext/openssl/ossl_x509crl.c | 1 - ext/openssl/ossl_x509ext.c | 90 ++++++++++++++++++++++++++++++++++++++++-- ext/openssl/ossl_x509name.c | 1 - ext/openssl/ossl_x509req.c | 1 - ext/openssl/ossl_x509revoked.c | 1 - ext/openssl/ossl_x509store.c | 2 - 17 files changed, 102 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index 49307dc4a3..3ec4f1ad73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +Sat Sep 6 17:40:41 2003 GOTOU Yuuzou + + * ext/openssl/ruby_missing.c: rid of unnecessary backward + compatibility stuff. and remove DEFINE_ALLOC_WRAPPER from + all sources. + + * ext/openssl/ossl_x509ext.c (X509::Extension.new): new method. + + * ext/openssl/ossl_x509ext.c (X509::Extension#oid=): new method. + + * ext/openssl/ossl_x509ext.c (X509::Extension#value=): new method. + + * ext/openssl/ossl_x509ext.c (X509::Extension#critical=): new method. + Sat Sep 6 01:23:22 2003 NAKAMURA Usaku * win32/win32.c (CreateChild): need to quote cmd if RUBYSHELL is set. diff --git a/ext/openssl/ossl_bn.c b/ext/openssl/ossl_bn.c index c59d809bae..d815334613 100644 --- a/ext/openssl/ossl_bn.c +++ b/ext/openssl/ossl_bn.c @@ -99,7 +99,6 @@ ossl_bn_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_bn_alloc) static VALUE ossl_bn_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_cipher.c b/ext/openssl/ossl_cipher.c index 02e3dcd488..b639af2035 100644 --- a/ext/openssl/ossl_cipher.c +++ b/ext/openssl/ossl_cipher.c @@ -82,7 +82,6 @@ ossl_cipher_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_cipher_alloc) static VALUE ossl_cipher_initialize(VALUE self, VALUE str) diff --git a/ext/openssl/ossl_digest.c b/ext/openssl/ossl_digest.c index 8511eccf4e..74a7e1b348 100644 --- a/ext/openssl/ossl_digest.c +++ b/ext/openssl/ossl_digest.c @@ -73,7 +73,6 @@ ossl_digest_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_digest_alloc) VALUE ossl_digest_update(VALUE, VALUE); @@ -197,12 +196,7 @@ ossl_digest_hexdigest(VALUE self) static VALUE ossl_digest_s_digest(VALUE klass, VALUE str, VALUE data) { - VALUE obj = -#if HAVE_RB_DEFINE_ALLOC_FUNC - rb_class_new_instance(1, &str, klass); -#else - ossl_digest_alloc_wrapper(1, &str, klass); -#endif + VALUE obj = rb_class_new_instance(1, &str, klass); ossl_digest_update(obj, data); @@ -212,12 +206,7 @@ ossl_digest_s_digest(VALUE klass, VALUE str, VALUE data) static VALUE ossl_digest_s_hexdigest(VALUE klass, VALUE str, VALUE data) { - VALUE obj = -#if HAVE_RB_DEFINE_ALLOC_FUNC - rb_class_new_instance(1, &str, klass); -#else - ossl_digest_alloc_wrapper(1, &str, klass); -#endif + VALUE obj = rb_class_new_instance(1, &str, klass); ossl_digest_update(obj, data); diff --git a/ext/openssl/ossl_hmac.c b/ext/openssl/ossl_hmac.c index 05b6e81202..ffd5ec3841 100644 --- a/ext/openssl/ossl_hmac.c +++ b/ext/openssl/ossl_hmac.c @@ -55,7 +55,6 @@ ossl_hmac_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_hmac_alloc) static VALUE ossl_hmac_initialize(VALUE self, VALUE key, VALUE digest) diff --git a/ext/openssl/ossl_ns_spki.c b/ext/openssl/ossl_ns_spki.c index bcefcbdfde..3932f3e971 100644 --- a/ext/openssl/ossl_ns_spki.c +++ b/ext/openssl/ossl_ns_spki.c @@ -50,7 +50,6 @@ ossl_spki_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_spki_alloc) static VALUE ossl_spki_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_ocsp.c b/ext/openssl/ossl_ocsp.c index 3ec5c39472..57d9cbee18 100644 --- a/ext/openssl/ossl_ocsp.c +++ b/ext/openssl/ossl_ocsp.c @@ -98,7 +98,6 @@ ossl_ocspreq_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_ocspreq_alloc) static VALUE ossl_ocspreq_initialize(int argc, VALUE *argv, VALUE self) @@ -304,7 +303,6 @@ ossl_ocspres_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_ocspreq_alloc) static VALUE ossl_ocspres_initialize(int argc, VALUE *argv, VALUE self) @@ -395,7 +393,6 @@ ossl_ocspbres_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_ocspbres_alloc) static VALUE ossl_ocspbres_initialize(int argc, VALUE *argv, VALUE self) @@ -617,7 +614,6 @@ ossl_ocspcid_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_ocspcid_alloc) static VALUE ossl_ocspcid_initialize(VALUE self, VALUE subject, VALUE issuer) diff --git a/ext/openssl/ossl_pkcs7.c b/ext/openssl/ossl_pkcs7.c index c612eb43ff..2ebf6d4a7b 100644 --- a/ext/openssl/ossl_pkcs7.c +++ b/ext/openssl/ossl_pkcs7.c @@ -252,7 +252,6 @@ ossl_pkcs7_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_pkcs7_alloc) static VALUE ossl_pkcs7_initialize(int argc, VALUE *argv, VALUE self) @@ -651,7 +650,6 @@ ossl_pkcs7si_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_pkcs7si_alloc) static VALUE ossl_pkcs7si_initialize(VALUE self, VALUE cert, VALUE key, VALUE digest) diff --git a/ext/openssl/ossl_pkey.c b/ext/openssl/ossl_pkey.c index cd73355d66..3121cdbb6a 100644 --- a/ext/openssl/ossl_pkey.c +++ b/ext/openssl/ossl_pkey.c @@ -119,7 +119,6 @@ ossl_pkey_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_pkey_alloc) static VALUE ossl_pkey_initialize(VALUE self) diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index 5611f43679..6305e4c998 100644 --- a/ext/openssl/ossl_ssl.c +++ b/ext/openssl/ossl_ssl.c @@ -107,7 +107,6 @@ ossl_sslctx_s_alloc(VALUE klass) SSL_CTX_set_options(ctx, SSL_OP_ALL); return Data_Wrap_Struct(klass, 0, ossl_sslctx_free, ctx); } -DEFINE_ALLOC_WRAPPER(ossl_sslctx_s_alloc) static VALUE ossl_sslctx_initialize(int argc, VALUE *argv, VALUE self) @@ -365,7 +364,6 @@ ossl_ssl_s_alloc(VALUE klass) { return Data_Wrap_Struct(klass, 0, ossl_ssl_free, NULL); } -DEFINE_ALLOC_WRAPPER(ossl_ssl_s_alloc) static VALUE ossl_ssl_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_x509cert.c b/ext/openssl/ossl_x509cert.c index b6ed438e0f..b689f578dc 100644 --- a/ext/openssl/ossl_x509cert.c +++ b/ext/openssl/ossl_x509cert.c @@ -124,7 +124,6 @@ ossl_x509_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509_alloc) static VALUE ossl_x509_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_x509crl.c b/ext/openssl/ossl_x509crl.c index 2c1f9e0cdb..517080b32d 100644 --- a/ext/openssl/ossl_x509crl.c +++ b/ext/openssl/ossl_x509crl.c @@ -86,7 +86,6 @@ ossl_x509crl_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509crl_alloc) static VALUE ossl_x509crl_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_x509ext.c b/ext/openssl/ossl_x509ext.c index 4d981ed938..d65320311a 100644 --- a/ext/openssl/ossl_x509ext.c +++ b/ext/openssl/ossl_x509ext.c @@ -116,7 +116,6 @@ ossl_x509extfactory_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509extfactory_alloc) static VALUE ossl_x509extfactory_set_issuer_cert(VALUE self, VALUE cert) @@ -244,6 +243,87 @@ ossl_x509extfactory_create_ext_from_array(VALUE self, VALUE ary) /* * Ext */ +static VALUE +ossl_x509ext_alloc(VALUE klass) +{ + X509_EXTENSION *ext; + VALUE obj; + + if(!(ext = X509_EXTENSION_new())){ + ossl_raise(eX509ExtError, NULL); + } + WrapX509Ext(klass, obj, ext); + + return obj; +} + +static VALUE +ossl_x509ext_initialize(int argc, VALUE *argv, VALUE self) +{ + VALUE oid, value, critical; + + rb_scan_args(argc, argv, "21", &oid, &value, &critical); + rb_funcall(self, rb_intern("oid="), 1, oid); + rb_funcall(self, rb_intern("value="), 1, value); + if(argc > 2) rb_funcall(self, rb_intern("critical="), 1, critical); + + return self; +} + +static VALUE +ossl_x509ext_set_oid(VALUE self, VALUE oid) +{ + X509_EXTENSION *ext; + ASN1_OBJECT *obj; + char *s; + + GetX509Ext(self, ext); + s = StringValuePtr(oid); + obj = OBJ_txt2obj(s, 0); + if(!obj) obj = OBJ_txt2obj(s, 1); + if(!obj) ossl_raise(eX509ExtError, NULL); + X509_EXTENSION_set_object(ext, obj); + + return oid; +} + +static VALUE +ossl_x509ext_set_value(VALUE self, VALUE data) +{ + X509_EXTENSION *ext; + ASN1_OCTET_STRING *asn1s; + char *s; + + GetX509Ext(self, ext); + StringValue(data); + if(!(s = OPENSSL_malloc(RSTRING(data)->len))) + ossl_raise(eX509ExtError, "malloc error"); + memcpy(s, RSTRING(data)->ptr, RSTRING(data)->len); + if(!(asn1s = ASN1_OCTET_STRING_new())){ + free(s); + ossl_raise(eX509ExtError, NULL); + } + if(!M_ASN1_OCTET_STRING_set(asn1s, s, RSTRING(data)->len)){ + free(s); + ASN1_OCTET_STRING_free(asn1s); + ossl_raise(eX509ExtError, NULL); + } + X509_EXTENSION_set_data(ext, asn1s); + + return data; +} + +static VALUE +ossl_x509ext_set_critical(VALUE self, VALUE flag) +{ + X509_EXTENSION *ext; + + GetX509Ext(self, ext); + X509_EXTENSION_set_critical(ext, RTEST(flag) ? 1 : 0); + + return flag; +} + static VALUE ossl_x509ext_get_oid(VALUE obj) { @@ -335,9 +415,11 @@ Init_ossl_x509ext() rb_define_method(cX509ExtFactory, "create_ext_from_array", ossl_x509extfactory_create_ext_from_array, 1); cX509Ext = rb_define_class_under(mX509, "Extension", rb_cObject); - rb_undef_method(CLASS_OF(cX509Ext), "new"); -/* rb_define_alloc_func(cX509Ext, ossl_x509ext_alloc); */ -/* rb_define_method(cX509Ext, "initialize", ossl_x509ext_initialize, -1); */ + rb_define_alloc_func(cX509Ext, ossl_x509ext_alloc); + rb_define_method(cX509Ext, "initialize", ossl_x509ext_initialize, -1); + rb_define_method(cX509Ext, "oid=", ossl_x509ext_set_oid, 1); + rb_define_method(cX509Ext, "value=", ossl_x509ext_set_value, 1); + 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, "critical?", ossl_x509ext_get_critical, 0); diff --git a/ext/openssl/ossl_x509name.c b/ext/openssl/ossl_x509name.c index a1e5cba1b4..dfc30de405 100644 --- a/ext/openssl/ossl_x509name.c +++ b/ext/openssl/ossl_x509name.c @@ -82,7 +82,6 @@ ossl_x509name_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509name_alloc) static VALUE ossl_x509name_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_x509req.c b/ext/openssl/ossl_x509req.c index e7329d158b..4830f2ad34 100644 --- a/ext/openssl/ossl_x509req.c +++ b/ext/openssl/ossl_x509req.c @@ -84,7 +84,6 @@ ossl_x509req_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509req_alloc) static VALUE ossl_x509req_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_x509revoked.c b/ext/openssl/ossl_x509revoked.c index 1cd04eaa25..30ce75207f 100644 --- a/ext/openssl/ossl_x509revoked.c +++ b/ext/openssl/ossl_x509revoked.c @@ -84,7 +84,6 @@ ossl_x509revoked_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509revoked_alloc) static VALUE ossl_x509revoked_initialize(int argc, VALUE *argv, VALUE self) diff --git a/ext/openssl/ossl_x509store.c b/ext/openssl/ossl_x509store.c index d001a02787..4c5f0624a9 100644 --- a/ext/openssl/ossl_x509store.c +++ b/ext/openssl/ossl_x509store.c @@ -102,7 +102,6 @@ ossl_x509store_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509store_alloc) /* * General callback for OpenSSL verify @@ -329,7 +328,6 @@ ossl_x509stctx_alloc(VALUE klass) return obj; } -DEFINE_ALLOC_WRAPPER(ossl_x509stctx_alloc) static VALUE ossl_x509stctx_initialize(int argc, VALUE *argv, VALUE self) -- cgit v1.2.3