new (p1, p2 = v2, p3 = v3)
public
Creates an X509 extension.
The extension may be created from asn1 data or from an extension
name and value . The
name may be either an OID or an extension name. If
critical is true the extension is marked critical.
Show source static VALUE
ossl_x509ext_initialize(int argc, VALUE *argv, VALUE self)
{
VALUE oid, value, critical;
const unsigned char *p;
X509_EXTENSION *ext, *x;
GetX509Ext(self, ext);
if(rb_scan_args(argc, argv, "12", &oid, &value, &critical) == 1){
oid = ossl_to_der_if_possible(oid);
StringValue(oid);
p = (unsigned char *)RSTRING_PTR(oid);
x = d2i_X509_EXTENSION(&ext, &p, RSTRING_LEN(oid));
DATA_PTR(self) = ext;
if(!x)
ossl_raise(eX509ExtError, NULL);
return self;
}
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;
}