类 OpenSSL::ASN1::ObjectId
表示 OpenSSL::ASN1
的原始对象 ID
公共类方法
OpenSSL::ASN1::ObjectId.register(object_id, short_name, long_name) 点击切换源代码
这将一个新的 ObjectId
添加到内部表中。其中 object_id 是数值形式,short_name 是短名称,long_name 是长名称。
如果成功,返回 true
。如果失败,则引发 OpenSSL::ASN1::ASN1Error
。
static VALUE ossl_asn1obj_s_register(VALUE self, VALUE oid, VALUE sn, VALUE ln) { StringValueCStr(oid); StringValueCStr(sn); StringValueCStr(ln); if(!OBJ_create(RSTRING_PTR(oid), RSTRING_PTR(sn), RSTRING_PTR(ln))) ossl_raise(eASN1Error, NULL); return Qtrue; }
公共实例方法
oid == other_oid → true 或 false 点击切换源代码
如果 other_oid 与 oid 相同,则返回 true
static VALUE ossl_asn1obj_eq(VALUE self, VALUE other) { VALUE valSelf, valOther; int nidSelf, nidOther; valSelf = ossl_asn1_get_value(self); valOther = ossl_asn1_get_value(other); if ((nidSelf = OBJ_txt2nid(StringValueCStr(valSelf))) == NID_undef) ossl_raise(eASN1Error, "OBJ_txt2nid"); if ((nidOther = OBJ_txt2nid(StringValueCStr(valOther))) == NID_undef) ossl_raise(eASN1Error, "OBJ_txt2nid"); return nidSelf == nidOther ? Qtrue : Qfalse; }
ln → string 点击切换源代码
ObjectId
的长名称,如 <openssl/objects.h> 中定义。
static VALUE ossl_asn1obj_get_ln(VALUE self) { VALUE val, ret = Qnil; int nid; val = ossl_asn1_get_value(self); if ((nid = OBJ_txt2nid(StringValueCStr(val))) != NID_undef) ret = rb_str_new2(OBJ_nid2ln(nid)); return ret; }
也称为:long_name
oid → string 点击切换源代码
返回一个字符串,表示以点分隔符表示的对象标识符,例如“1.2.3.4.5”
static VALUE ossl_asn1obj_get_oid(VALUE self) { VALUE str; ASN1_OBJECT *a1obj; int state; a1obj = obj_to_asn1obj(ossl_asn1_get_value(self)); str = rb_protect(asn1obj_get_oid_i, (VALUE)a1obj, &state); ASN1_OBJECT_free(a1obj); if (state) rb_jump_tag(state); return str; }
sn → string 点击切换源代码
ObjectId
的短名称,如 <openssl/objects.h> 中定义。
static VALUE ossl_asn1obj_get_sn(VALUE self) { VALUE val, ret = Qnil; int nid; val = ossl_asn1_get_value(self); if ((nid = OBJ_txt2nid(StringValueCStr(val))) != NID_undef) ret = rb_str_new2(OBJ_nid2sn(nid)); return ret; }
也称为:short_name