summaryrefslogtreecommitdiffstats
path: root/ossl_x509attr.c
diff options
context:
space:
mode:
Diffstat (limited to 'ossl_x509attr.c')
-rw-r--r--ossl_x509attr.c174
1 files changed, 82 insertions, 92 deletions
diff --git a/ossl_x509attr.c b/ossl_x509attr.c
index 8e0ae19..98f4a33 100644
--- a/ossl_x509attr.c
+++ b/ossl_x509attr.c
@@ -11,20 +11,20 @@
#include "ossl.h"
#define WrapX509Attr(klass, obj, attr) do { \
- if (!attr) { \
- ossl_raise(rb_eRuntimeError, "ATTR wasn't initialized!"); \
- } \
- obj = Data_Wrap_Struct(klass, 0, X509_ATTRIBUTE_free, attr); \
+ if (!attr) { \
+ ossl_raise(rb_eRuntimeError, "ATTR wasn't initialized!"); \
+ } \
+ obj = Data_Wrap_Struct(klass, 0, X509_ATTRIBUTE_free, attr); \
} while (0)
#define GetX509Attr(obj, attr) do { \
- Data_Get_Struct(obj, X509_ATTRIBUTE, attr); \
- if (!attr) { \
- ossl_raise(rb_eRuntimeError, "ATTR wasn't initialized!"); \
- } \
+ Data_Get_Struct(obj, X509_ATTRIBUTE, attr); \
+ if (!attr) { \
+ ossl_raise(rb_eRuntimeError, "ATTR wasn't initialized!"); \
+ } \
} while (0)
#define SafeGetX509Attr(obj, attr) do { \
- OSSL_Check_Kind(obj, cX509Attr); \
- GetX509Attr(obj, attr); \
+ OSSL_Check_Kind(obj, cX509Attr); \
+ GetX509Attr(obj, attr); \
} while (0)
/*
@@ -39,33 +39,33 @@ VALUE eX509AttrError;
VALUE
ossl_x509attr_new(X509_ATTRIBUTE *attr)
{
- X509_ATTRIBUTE *new;
- VALUE obj;
-
- if (!attr) {
- new = X509_ATTRIBUTE_new();
- } else {
- new = X509_ATTRIBUTE_dup(attr);
- }
- if (!new) {
- ossl_raise(eX509AttrError, "");
- }
- WrapX509Attr(cX509Attr, obj, new);
-
- return obj;
+ X509_ATTRIBUTE *new;
+ VALUE obj;
+
+ if (!attr) {
+ new = X509_ATTRIBUTE_new();
+ } else {
+ new = X509_ATTRIBUTE_dup(attr);
+ }
+ if (!new) {
+ ossl_raise(eX509AttrError, "");
+ }
+ WrapX509Attr(cX509Attr, obj, new);
+
+ return obj;
}
X509_ATTRIBUTE *
ossl_x509attr_get_X509_ATTRIBUTE(VALUE obj)
{
- X509_ATTRIBUTE *attr, *new;
+ X509_ATTRIBUTE *attr, *new;
- SafeGetX509Attr(obj, attr);
+ SafeGetX509Attr(obj, attr);
+ if (!(new = X509_ATTRIBUTE_dup(attr))) {
+ ossl_raise(eX509AttrError, "");
+ }
- if (!(new = X509_ATTRIBUTE_dup(attr))) {
- ossl_raise(eX509AttrError, "");
- }
- return new;
+ return new;
}
/*
@@ -74,75 +74,66 @@ ossl_x509attr_get_X509_ATTRIBUTE(VALUE obj)
static VALUE
ossl_x509attr_s_new_from_array(VALUE klass, VALUE ary)
{
- X509_ATTRIBUTE *attr;
- int nid = NID_undef;
- VALUE item, obj;
-
- Check_Type(ary, T_ARRAY);
-
- if (RARRAY(ary)->len != 2) {
- ossl_raise(eX509AttrError, "unsupported ary structure");
- }
-
- /* key [0] */
- item = RARRAY(ary)->ptr[0];
- StringValue(item);
-
- if (!(nid = OBJ_ln2nid(RSTRING(item)->ptr))) {
- if (!(nid = OBJ_sn2nid(RSTRING(item)->ptr))) {
- ossl_raise(eX509AttrError, "");
- }
- }
-
- /* data [1] */
- item = RARRAY(ary)->ptr[1];
- StringValuePtr(item);
-
- if (!(attr = X509_ATTRIBUTE_create(nid, MBSTRING_ASC, RSTRING(item)->ptr))) {
- ossl_raise(eX509AttrError, "");
+ X509_ATTRIBUTE *attr;
+ int nid = NID_undef;
+ VALUE item, obj;
+
+ Check_Type(ary, T_ARRAY);
+ if (RARRAY(ary)->len != 2) {
+ ossl_raise(eX509AttrError, "unsupported ary structure");
+ }
+ /* key [0] */
+ item = RARRAY(ary)->ptr[0];
+ StringValue(item);
+ if (!(nid = OBJ_ln2nid(RSTRING(item)->ptr))) {
+ if (!(nid = OBJ_sn2nid(RSTRING(item)->ptr))) {
+ ossl_raise(eX509AttrError, "");
}
- WrapX509Attr(klass, obj, attr);
-
- return obj;
+ }
+ /* data [1] */
+ item = RARRAY(ary)->ptr[1];
+ StringValuePtr(item);
+ if (!(attr = X509_ATTRIBUTE_create(nid, MBSTRING_ASC, RSTRING(item)->ptr))) {
+ ossl_raise(eX509AttrError, "");
+ }
+ WrapX509Attr(klass, obj, attr);
+
+ return obj;
}
+#if 0
/*
* is there any print for attribute?
* (NO, but check t_req.c in crypto/asn1)
- *
+ */
static VALUE
ossl_x509attr_to_a(VALUE self)
{
- ossl_x509attr *attrp = NULL;
- BIO *out = NULL;
- BUF_MEM *buf = NULL;
- int nid = NID_undef;
- VALUE ary, value;
+ ossl_x509attr *attrp = NULL;
+ BIO *out = NULL;
+ BUF_MEM *buf = NULL;
+ int nid = NID_undef;
+ VALUE ary, value;
- GetX509Attr(obj, attrp);
-
- ary = rb_ary_new2(2);
-
- nid = OBJ_obj2nid(X509_ATTRIBUTE_get0_object(attrp->attribute));
- rb_ary_push(ary, rb_str_new2(OBJ_nid2sn(nid)));
-
- if (!(out = BIO_new(BIO_s_mem())))
- ossl_raise(eX509ExtensionError, "");
-
- if (!X509V3_???_print(out, extp->extension, 0, 0)) {
- BIO_free(out);
- ossl_raise(eX509ExtensionError, "");
- }
- BIO_get_mem_ptr(out, &buf);
- value = rb_str_new(buf->data, buf->length);
+ GetX509Attr(obj, attrp);
+ ary = rb_ary_new2(2);
+ nid = OBJ_obj2nid(X509_ATTRIBUTE_get0_object(attrp->attribute));
+ rb_ary_push(ary, rb_str_new2(OBJ_nid2sn(nid)));
+ if (!(out = BIO_new(BIO_s_mem())))
+ ossl_raise(eX509ExtensionError, "");
+ if (!X509V3_???_print(out, extp->extension, 0, 0)) {
BIO_free(out);
-
- rb_funcall(value, rb_intern("tr!"), 2, rb_str_new2("\n"), rb_str_new2(","));
- rb_ary_push(ary, value);
-
- return ary;
+ ossl_raise(eX509ExtensionError, "");
+ }
+ BIO_get_mem_ptr(out, &buf);
+ value = rb_str_new(buf->data, buf->length);
+ BIO_free(out);
+ rb_funcall(value, rb_intern("tr!"), 2, rb_str_new2("\n"), rb_str_new2(","));
+ rb_ary_push(ary, value);
+
+ return ary;
}
- */
+#endif
/*
* X509_ATTRIBUTE init
@@ -150,13 +141,12 @@ ossl_x509attr_to_a(VALUE self)
void
Init_ossl_x509attr()
{
- eX509AttrError = rb_define_class_under(mX509, "AttributeError", eOSSLError);
+ eX509AttrError = rb_define_class_under(mX509, "AttributeError", eOSSLError);
- cX509Attr = rb_define_class_under(mX509, "Attribute", rb_cObject);
- rb_define_singleton_method(cX509Attr, "new_from_array", ossl_x509attr_s_new_from_array, 1);
+ cX509Attr = rb_define_class_under(mX509, "Attribute", rb_cObject);
+ rb_define_singleton_method(cX509Attr, "new_from_array", ossl_x509attr_s_new_from_array, 1);
/*
* TODO:
- rb_define_method(cX509Attr, "to_a", ossl_x509attr_to_a, 0);
+ rb_define_method(cX509Attr, "to_a", ossl_x509attr_to_a, 0);
*/
}
-