class OpenSSL::ASN1::ObjectId
表示 OpenSSL::ASN1 的原始对象标识符 (primitive object id)。
Public Class Methods
Source
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;
}
这会将一个新的 ObjectId 添加到内部表中。其中 *object_id* 是数值形式,*short_name* 是短名称,*long_name* 是长名称。
如果成功,则返回 true。如果失败,则引发 OpenSSL::ASN1::ASN1Error。
Public Instance Methods
Source
static VALUE
ossl_asn1obj_eq(VALUE self, VALUE other)
{
VALUE oid1, oid2;
if (!rb_obj_is_kind_of(other, cASN1ObjectId))
return Qfalse;
oid1 = ossl_asn1obj_get_oid(self);
oid2 = ossl_asn1obj_get_oid(other);
return rb_str_equal(oid1, oid2);
}
如果 *other_oid* 与 *oid* 相同,则返回 true。
Source
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;
}
<openssl/objects.h> 中定义的 ObjectId 的长名称。
也别名为:long_name
Source
static VALUE
ossl_asn1obj_get_oid(VALUE self)
{
VALUE str;
ASN1_OBJECT *a1obj;
int state;
a1obj = ossl_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;
}
返回一个表示对象标识符 (Object Identifier) 的 String,采用点分表示法,例如 “1.2.3.4.5”。
Source
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;
}
<openssl/objects.h> 中定义的 ObjectId 的短名称。
也别名为:short_name