diff options
Diffstat (limited to 'ossl_x509ext.c')
-rw-r--r-- | ossl_x509ext.c | 70 |
1 files changed, 27 insertions, 43 deletions
diff --git a/ossl_x509ext.c b/ossl_x509ext.c index 05f59b9..42ebc31 100644 --- a/ossl_x509ext.c +++ b/ossl_x509ext.c @@ -10,11 +10,15 @@ */ #include "ossl.h" -#define WrapX509Ext(obj, ext) obj = Data_Wrap_Struct(cX509Extension, 0, X509_EXTENSION_free, ext) -#define GetX509Ext(obj, ext) Data_Get_Struct(obj, X509_EXTENSION, ext) +#define WrapX509Ext(obj, ext) \ + obj = Data_Wrap_Struct(cX509Extension, 0, X509_EXTENSION_free, ext) +#define GetX509Ext(obj, ext) \ + Data_Get_Struct(obj, X509_EXTENSION, ext) -#define MakeX509ExtFactory(obj, extfactoryp) obj = Data_Make_Struct(cX509ExtensionFactory, ossl_x509extfactory, 0, ossl_x509extfactory_free, extfactoryp) -#define GetX509ExtFactory(obj, extfactoryp) Data_Get_Struct(obj, ossl_x509extfactory, extfactoryp) +#define MakeX509ExtFactory(obj, ctx) \ + obj = Data_Make_Struct(cX509ExtensionFactory, X509V3_CTX, 0, CRYPTO_free, ctx) +#define GetX509ExtFactory(obj, ctx) \ + Data_Get_Struct(obj, X509V3_CTX, ctx) /* * Classes @@ -24,22 +28,6 @@ VALUE cX509ExtensionFactory; VALUE eX509ExtensionError; /* - * Structs - */ -typedef struct ossl_x509extfactory_st { - X509V3_CTX ctx; -} ossl_x509extfactory; - - -static void -ossl_x509extfactory_free(ossl_x509extfactory *extfactoryp) -{ - if (extfactoryp) { - free(extfactoryp); - } -} - -/* * Public */ VALUE @@ -85,10 +73,10 @@ ossl_x509ext_get_X509_EXTENSION(VALUE obj) static VALUE ossl_x509extfactory_s_new(int argc, VALUE *argv, VALUE klass) { - ossl_x509extfactory *extfactoryp = NULL; + X509V3_CTX *ctx = NULL; VALUE obj; - MakeX509ExtFactory(obj, extfactoryp); + MakeX509ExtFactory(obj, ctx); rb_obj_call_init(obj, argc, argv); @@ -98,12 +86,11 @@ ossl_x509extfactory_s_new(int argc, VALUE *argv, VALUE klass) static VALUE ossl_x509extfactory_set_issuer_cert(VALUE self, VALUE cert) { - ossl_x509extfactory *extfactoryp = NULL; + X509V3_CTX *ctx = NULL; - GetX509ExtFactory(self, extfactoryp); + GetX509ExtFactory(self, ctx); - OSSL_Check_Type(cert, cX509Certificate); - (extfactoryp->ctx).issuer_cert = ossl_x509_get_X509(cert); + ctx->issuer_cert = ossl_x509_get_X509(cert); return cert; } @@ -111,12 +98,11 @@ ossl_x509extfactory_set_issuer_cert(VALUE self, VALUE cert) static VALUE ossl_x509extfactory_set_subject_cert(VALUE self, VALUE cert) { - ossl_x509extfactory *extfactoryp = NULL; + X509V3_CTX *ctx = NULL; - GetX509ExtFactory(self, extfactoryp); + GetX509ExtFactory(self, ctx); - OSSL_Check_Type(cert, cX509Certificate); - (extfactoryp->ctx).subject_cert = ossl_x509_get_X509(cert); + ctx->subject_cert = ossl_x509_get_X509(cert); return cert; } @@ -124,12 +110,11 @@ ossl_x509extfactory_set_subject_cert(VALUE self, VALUE cert) static VALUE ossl_x509extfactory_set_subject_req(VALUE self, VALUE req) { - ossl_x509extfactory *extfactoryp = NULL; + X509V3_CTX *ctx = NULL; - GetX509ExtFactory(self, extfactoryp); + GetX509ExtFactory(self, ctx); - OSSL_Check_Type(req, cX509Request); - (extfactoryp->ctx).subject_req = ossl_x509req_get_X509_REQ(req); + ctx->subject_req = ossl_x509req_get_X509_REQ(req); return req; } @@ -137,12 +122,11 @@ ossl_x509extfactory_set_subject_req(VALUE self, VALUE req) static VALUE ossl_x509extfactory_set_crl(VALUE self, VALUE crl) { - ossl_x509extfactory *extfactoryp = NULL; + X509V3_CTX *ctx = NULL; - GetX509ExtFactory(self, extfactoryp); + GetX509ExtFactory(self, ctx); - OSSL_Check_Type(crl, cX509CRL); - (extfactoryp->ctx).crl = ossl_x509crl_get_X509_CRL(crl); + ctx->crl = ossl_x509crl_get_X509_CRL(crl); return crl; } @@ -150,10 +134,10 @@ ossl_x509extfactory_set_crl(VALUE self, VALUE crl) static VALUE ossl_x509extfactory_initialize(int argc, VALUE *argv, VALUE self) { - ossl_x509extfactory *extfactoryp = NULL; + /*X509V3_CTX *ctx = NULL;*/ VALUE issuer_cert, subject_cert, subject_req, crl; - GetX509ExtFactory(self, extfactoryp); + /*GetX509ExtFactory(self, ctx);*/ rb_scan_args(argc, argv, "04", &issuer_cert, &subject_cert, &subject_req, &crl); @@ -184,13 +168,13 @@ ossl_x509extfactory_initialize(int argc, VALUE *argv, VALUE self) static VALUE ossl_x509extfactory_create_ext_from_array(VALUE self, VALUE ary) { - ossl_x509extfactory *extfactoryp = NULL; + X509V3_CTX *ctx = NULL; X509_EXTENSION *ext = NULL; int nid = NID_undef; char *value = NULL; VALUE item, obj; - GetX509ExtFactory(self, extfactoryp); + GetX509ExtFactory(self, ctx); Check_Type(ary, T_ARRAY); @@ -220,7 +204,7 @@ ossl_x509extfactory_create_ext_from_array(VALUE self, VALUE ary) } else value = strdup(RSTRING(item)->ptr); - if (!(ext = X509V3_EXT_conf_nid(NULL, &(extfactoryp->ctx), nid, value))) { + if (!(ext = X509V3_EXT_conf_nid(NULL, ctx, nid, value))) { free(value); OSSL_Raise(eX509ExtensionError, ""); } |