模块 OpenSSL::ASN1::TaggedASN1Data
属性
可以通过将其设置为 :IMPLICIT
或 :EXPLICIT
,用作隐式或显式编码值的提示。 当使用 OpenSSL::ASN1.decode
解析 ASN.1 结构时,tagging 不会被设置。
公共类方法
来源
# File ext/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
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)
调用超类方法