13 #define WrapX509Name(klass, obj, name) do { \
15 ossl_raise(rb_eRuntimeError, "Name wasn't initialized."); \
17 (obj) = Data_Wrap_Struct((klass), 0, X509_NAME_free, (name)); \
19 #define GetX509Name(obj, name) do { \
20 Data_Get_Struct((obj), X509_NAME, (name)); \
22 ossl_raise(rb_eRuntimeError, "Name wasn't initialized."); \
25 #define SafeGetX509Name(obj, name) do { \
26 OSSL_Check_Kind((obj), cX509Name); \
27 GetX509Name((obj), (name)); \
30 #define OBJECT_TYPE_TEMPLATE \
31 rb_const_get(cX509Name, rb_intern("OBJECT_TYPE_TEMPLATE"))
32 #define DEFAULT_OBJECT_TYPE \
33 rb_const_get(cX509Name, rb_intern("DEFAULT_OBJECT_TYPE"))
51 new = X509_NAME_new();
53 new = X509_NAME_dup(name);
82 if (!(name = X509_NAME_new())) {
92 #define rb_aref(obj, key) rb_funcall((obj), id_aref, 1, (key))
105 if(
NIL_P(entry[2])) entry[2] =
rb_aref(
template, entry[0]);
126 if (
rb_scan_args(argc, argv,
"02", &arg, &
template) == 0) {
138 const unsigned char *
p;
185 buf = X509_NAME_oneline(name,
NULL, 0);
209 if (!(out = BIO_new(BIO_s_mem())))
212 if (!X509_NAME_print_ex(out, name, 0, iflag)){
229 X509_NAME_ENTRY *entry;
232 const char *short_name;
233 VALUE ary, vname, ret;
236 entries = X509_NAME_entry_count(name);
242 for (i=0; i<entries; i++) {
243 if (!(entry = X509_NAME_get_entry(name, i))) {
246 if (!i2t_ASN1_OBJECT(long_name,
sizeof(long_name), entry->object)) {
249 nid = OBJ_ln2nid(long_name);
250 if (nid == NID_undef) {
253 short_name = OBJ_nid2sn(nid);
258 rb_str_new((
const char *)entry->value->data, entry->value->length),
268 X509_NAME *name1, *name2;
273 return X509_NAME_cmp(name1, name2);
290 if (result < 0)
return INT2FIX(-1);
291 if (result > 1)
return INT2FIX(1);
322 hash = X509_NAME_hash(name);
327 #ifdef HAVE_X509_NAME_HASH_OLD
335 ossl_x509name_hash_old(
VALUE self)
342 hash = X509_NAME_hash_old(name);
361 if((len = i2d_X509_NAME(name,
NULL)) <= 0)
365 if(i2d_X509_NAME(name, &p) <= 0)
395 #ifdef HAVE_X509_NAME_HASH_OLD
400 utf8str =
INT2NUM(V_ASN1_UTF8STRING);
401 ptrstr =
INT2NUM(V_ASN1_PRINTABLESTRING);
402 ia5str =
INT2NUM(V_ASN1_IA5STRING);
405 RHASH(hash)->ifnone = utf8str;