12 #define NewX509Name(klass) \ 13 TypedData_Wrap_Struct((klass), &ossl_x509name_type, 0) 14 #define SetX509Name(obj, name) do { \ 16 ossl_raise(rb_eRuntimeError, "Name wasn't initialized."); \ 18 RTYPEDDATA_DATA(obj) = (name); \ 20 #define GetX509Name(obj, name) do { \ 21 TypedData_Get_Struct((obj), X509_NAME, &ossl_x509name_type, (name)); \ 23 ossl_raise(rb_eRuntimeError, "Name wasn't initialized."); \ 26 #define SafeGetX509Name(obj, name) do { \ 27 OSSL_Check_Kind((obj), cX509Name); \ 28 GetX509Name((obj), (name)); \ 31 #define OBJECT_TYPE_TEMPLATE \ 32 rb_const_get(cX509Name, rb_intern("OBJECT_TYPE_TEMPLATE")) 33 #define DEFAULT_OBJECT_TYPE \ 34 rb_const_get(cX509Name, rb_intern("DEFAULT_OBJECT_TYPE")) 67 new = X509_NAME_new();
69 new = X509_NAME_dup(name);
99 if (!(name = X509_NAME_new())) {
109 #define rb_aref(obj, key) rb_funcall((obj), id_aref, 1, (key)) 122 if(
NIL_P(entry[2])) entry[2] =
rb_aref(
template, entry[0]);
156 if (
rb_scan_args(argc, argv,
"02", &arg, &
template) == 0) {
168 const unsigned char *p;
187 X509_NAME *
name, *name_other, *name_new;
193 name_new = X509_NAME_dup(name_other);
198 X509_NAME_free(name);
221 VALUE oid, value, type;
222 const char *oid_name;
229 if (!X509_NAME_add_entry_by_txt(name, oid_name,
NUM2INT(type),
245 buf = X509_NAME_oneline(name,
NULL, 0);
276 if (!(out = BIO_new(BIO_s_mem())))
279 if (!X509_NAME_print_ex(out, name, 0, iflag)){
299 X509_NAME_ENTRY *entry;
302 const char *short_name;
303 VALUE ary, vname, ret;
307 entries = X509_NAME_entry_count(name);
313 for (i=0; i<entries; i++) {
314 if (!(entry = X509_NAME_get_entry(name, i))) {
317 if (!i2t_ASN1_OBJECT(long_name,
sizeof(long_name),
318 X509_NAME_ENTRY_get_object(entry))) {
321 nid = OBJ_ln2nid(long_name);
322 if (nid == NID_undef) {
325 short_name = OBJ_nid2sn(nid);
328 value = X509_NAME_ENTRY_get_data(entry);
338 X509_NAME *name1, *name2;
343 return X509_NAME_cmp(name1, name2);
360 if (result < 0)
return INT2FIX(-1);
361 if (result > 1)
return INT2FIX(1);
396 hash = X509_NAME_hash(name);
401 #ifdef HAVE_X509_NAME_HASH_OLD 409 ossl_x509name_hash_old(
VALUE self)
416 hash = X509_NAME_hash_old(name);
437 if((len = i2d_X509_NAME(name,
NULL)) <= 0)
441 if(i2d_X509_NAME(name, &p) <= 0)
489 #ifdef HAVE_X509_NAME_HASH_OLD 494 utf8str =
INT2NUM(V_ASN1_UTF8STRING);
495 ptrstr =
INT2NUM(V_ASN1_PRINTABLESTRING);
496 ia5str =
INT2NUM(V_ASN1_IA5STRING);
VALUE rb_ary_entry(VALUE ary, long offset)
#define RUBY_TYPED_FREE_IMMEDIATELY
#define GetX509Name(obj, name)
static unsigned int hash(str, len) register const char *str
static VALUE ossl_x509name_initialize_copy(VALUE self, VALUE other)
#define ossl_str_adjust(str, p)
static VALUE ossl_x509name_alloc(VALUE klass)
static const rb_data_type_t ossl_x509name_type
VALUE rb_ary_push(VALUE ary, VALUE item)
#define DEFAULT_OBJECT_TYPE
static int ossl_x509name_cmp0(VALUE self, VALUE other)
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_obj_is_kind_of(VALUE, VALUE)
static VALUE ossl_x509name_to_s_old(VALUE self)
void rb_include_module(VALUE klass, VALUE module)
VALUE rb_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE)
#define SafeGetX509Name(obj, name)
VALUE ossl_membio2str(BIO *bio)
#define RHASH_SET_IFNONE(h, ifnone)
#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg)
static VALUE ossl_x509name_to_s(int argc, VALUE *argv, VALUE self)
#define rb_define_copy_func(klass, func)
VALUE ossl_to_der_if_possible(VALUE obj)
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
RUBY_EXTERN VALUE rb_cObject
static void ossl_x509name_free(void *ptr)
void rb_define_const(VALUE, const char *, VALUE)
static VALUE ossl_x509name_to_a(VALUE self)
static VALUE ossl_x509name_initialize(int argc, VALUE *argv, VALUE self)
void rb_define_alias(VALUE klass, const char *name1, const char *name2)
Defines an alias of a method.
#define NewX509Name(klass)
static VALUE ossl_x509name_eql(VALUE self, VALUE other)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
unsigned char buf[MIME_BUF_SIZE]
VALUE ossl_x509name_new(X509_NAME *name)
#define OBJECT_TYPE_TEMPLATE
static VALUE ossl_x509name_to_der(VALUE self)
static VALUE ossl_x509name_hash(VALUE self)
register unsigned int len
VALUE rb_define_module_under(VALUE outer, const char *name)
#define StringValueCStr(v)
#define rb_aref(obj, key)
VALUE asn1str_to_str(const ASN1_STRING *str)
static VALUE ossl_x509name_cmp(VALUE self, VALUE other)
VALUE rb_check_array_type(VALUE ary)
#define SetX509Name(obj, name)
void ossl_raise(VALUE exc, const char *fmt,...)
#define RSTRING_LENINT(str)
#define rb_check_frozen(obj)
VALUE rb_define_module(const char *name)
X509_NAME * GetX509NamePtr(VALUE obj)
static VALUE ossl_x509name_init_i(RB_BLOCK_CALL_FUNC_ARGLIST(i, args))
static VALUE ossl_x509name_add_entry(int, VALUE *, VALUE)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
void Init_ossl_x509name(void)
VALUE rb_str_new(const char *, long)