类 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_oidoid 相同,则返回 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 → 字符串 点击切换源代码

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
long_name → 字符串

ObjectId 的长名称,如 <openssl/objects.h> 中定义。

别名:ln
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;
}
short_name → 字符串

ObjectId 的短名称,如 <openssl/objects.h> 中定义。

别名:sn
sn → 字符串 点击切换源代码

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