模块 OpenSSL::ASN1::TaggedASN1Data
属性
tagging[RW]
可以通过将其设置为 :IMPLICIT
或 :EXPLICIT
来作为编码值的提示,用于隐式或显式地编码值。当使用 OpenSSL::ASN1.decode
解析 ASN.1 结构时,tagging 不会被设置。
公共类方法
OpenSSL::ASN1::Primitive.new(value [, tag, tagging, tag_class ]) → Primitive 点击切换源代码
value:是必需的。
tag:可选,可以为标记值指定。如果没有指定 tag,则默认使用与 Primitive
子类对应的 UNIVERSAL 标签。
tagging:可以用作编码提示,以显式或隐式地编码值,有关可能的值,请参阅 ASN1
。
tag_class:如果 tag 和 tagging 都为 nil
,则默认将其设置为 :UNIVERSAL
。如果设置了 tag 或 tagging 中的任何一个,则默认使用 :CONTEXT_SPECIFIC
。有关可能的值,请参阅 ASN1
。
示例¶ ↑
int = OpenSSL::ASN1::Integer.new(42) zero_tagged_int = OpenSSL::ASN1::Integer.new(42, 0, :IMPLICIT) private_explicit_zero_tagged_int = OpenSSL::ASN1::Integer.new(42, 0, :EXPLICIT, :PRIVATE)
调用父类方法
# File openssl/lib/openssl/asn1.rb, line 107 def initialize(value, tag = nil, tagging = nil, tag_class = nil) tag ||= ASN1.take_default_tag(self.class) raise ASN1Error, "must specify tag number" unless tag if tagging raise ASN1Error, "invalid tagging method" unless tagging.is_a?(Symbol) end tag_class ||= tagging ? :CONTEXT_SPECIFIC : :UNIVERSAL raise ASN1Error, "invalid tag class" unless tag_class.is_a?(Symbol) @tagging = tagging super(value ,tag, tag_class) end