模块 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:如果 tagtagging 都为 nil,则默认将其设置为 :UNIVERSAL。如果设置了 tagtagging 中的任何一个,则默认使用 :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