ASN1.decode(der)DER表現の文字列を解析し、OpenSSL::ASN1::ASN1Data のサブクラスのインスタンスを返す。ASN.1 オブジェクトが Constructive である場合は、それを構成する要素も再帰的に解析する。der に複数の ASN.1 オブジェクトが含まれる場合は最初の ASN.1 オブジェクトだけを返す。
ruby -e '
require "openssl"
require "pp"
pem = File.read(ARGV[0])
cert = OpenSSL::X509::Certificate.new(pem)
pp OpenSSL::ASN1.decode(cert.to_der)
' mycert.pem
#<OpenSSL::ASN1::Sequence:0x814e9fc
@tag=16,
@tag_class=:UNIVERSAL,
@tagging=nil,
@value=
[#<OpenSSL::ASN1::Sequence:0x814ead8
@tag=16,
@tag_class=:UNIVERSAL,
@tagging=nil,
@value=
[#<OpenSSL::ASN1::ASN1Data:0x814f690
@tag=0,
@tag_class=:CONTEXT_SPECIFIC,
@value=
[#<OpenSSL::ASN1::Integer:0x814f6a4
@tag=2,
@tag_class=:UNIVERSAL,
@tagging=nil,
@value=2>]>,
...
ASN1.decode_all(der)ASN1.decode と違い、der に含まれる全てのオブジェクトを再帰的に解析し 配列として返す。
ASN1.traverse(der) {|depth, off, hlen, len, constructed, tag_class, tag| ...}der に含まれる全てのオブジェクトを再帰的に解析して、 そのプロパティを引数として与えられたブロックを評価する。
ASN1.decode_all と同じように der に含まれる全ての ASN.1 オブジェクトを 再帰的に解析する。
以下のようなモジュール関数も定義されている。メソッドと同じ名前のクラスの コンストラクター new と同じ。
ASN1.Boolean(value [, tag [, tagging [, tag_class]]])ASN1.Integer(value ... )ASN1.Enumerated(value ... )ASN1.BitString(value ... )ASN1.OctetString(value ... )ASN1.UTF8String(value ... )ASN1.NumericString(value ... )ASN1.PrintableString(value ... )ASN1.T61String(value ... )ASN1.VideotexString(value ... )ASN1.IA5String(value ... )ASN1.GraphicString(value ... )ASN1.ISO64String(value ... )ASN1.GeneralString(value ... )ASN1.UniversalString(value ... )ASN1.BMPString(value ... )ASN1.Null(value ... )ASN1.ObjectId(value ... )ASN1.UTCTime(value ... )ASN1.GeneralizedTime(value ... )ASN1.Sequence(value ... )ASN1.Set(value ... )UNIVERSAL_TAG_NAMEタグ番号が表すASN.1 オブジェクト名を収録した配列。
require 'openssl' p OpenSSL::ASN1::UNIVERSAL_TAG_NAME[0] # => "EOC" p OpenSSL::ASN1::UNIVERSAL_TAG_NAME[12] # => "UTF8STRING"
ASN.1 オブジェクトのタグ番号を表す定数が以下のように定義されている。
require 'openssl' p OpenSSL::ASN1::UTF8STRING # => 12
EOCEOC のタグ番号 0 を表す定数。
BOOLEANBOOLEAN のタグ番号 1 を表す定数。
INTEGERINTEGER のタグ番号 2 を表す定数。
BIT_STRINGBIT_STRING のタグ番号 3 を表す定数。
OCTET_STRINGOCTET_STRING のタグ番号 4 を表す定数。
NULLNULL のタグ番号 5 を表す定数。
OBJECTOBJECT のタグ番号 6 を表す定数。
OBJECT_DESCRIPTOROBJECT_DESCRIPTOR のタグ番号 7 を表す定数。
EXTERNALEXTERNAL のタグ番号 8 を表す定数。
REALREAL のタグ番号 9 を表す定数。
ENUMERATEDENUMERATED のタグ番号 10 を表す定数。
EMBEDDED_PDVEMBEDDED_PDV のタグ番号 11 を表す定数。
UTF8STRINGUTF8STRING のタグ番号 12 を表す定数。
RELATIVE_OIDRELATIVE_OID のタグ番号 13 を表す定数。
SEQUENCESEQUENCE のタグ番号 16 を表す定数。
SETSET のタグ番号 17 を表す定数。
NUMERICSTRINGNUMERICSTRING のタグ番号 18 を表す定数。
PRINTABLESTRINGPRINTABLESTRING のタグ番号 19 を表す定数。
T61STRINGT61STRING のタグ番号 20 を表す定数。
VIDEOTEXSTRINGVIDEOTEXSTRING のタグ番号 21 を表す定数。
IA5STRINGIA5STRING のタグ番号 22 を表す定数。
UTCTIMEUTCTIME のタグ番号 23 を表す定数。
GENERALIZEDTIMEGENERALIZEDTIME のタグ番号 24 を表す定数。
GRAPHICSTRINGGRAPHICSTRING のタグ番号 25 を表す定数。
ISO64STRINGISO64STRING のタグ番号 26 を表す定数。
GENERALSTRINGGENERALSTRING のタグ番号 27 を表す定数。
UNIVERSALSTRINGUNIVERSALSTRING のタグ番号 28 を表す定数。
CHARACTER_STRINGCHARACTER_STRING のタグ番号 29 を表す定数。
BMPSTRINGBMPSTRING のタグ番号 30 を表す定数。