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
EOC
EOC のタグ番号 0 を表す定数。
BOOLEAN
BOOLEAN のタグ番号 1 を表す定数。
INTEGER
INTEGER のタグ番号 2 を表す定数。
BIT_STRING
BIT_STRING のタグ番号 3 を表す定数。
OCTET_STRING
OCTET_STRING のタグ番号 4 を表す定数。
NULL
NULL のタグ番号 5 を表す定数。
OBJECT
OBJECT のタグ番号 6 を表す定数。
OBJECT_DESCRIPTOR
OBJECT_DESCRIPTOR のタグ番号 7 を表す定数。
EXTERNAL
EXTERNAL のタグ番号 8 を表す定数。
REAL
REAL のタグ番号 9 を表す定数。
ENUMERATED
ENUMERATED のタグ番号 10 を表す定数。
EMBEDDED_PDV
EMBEDDED_PDV のタグ番号 11 を表す定数。
UTF8STRING
UTF8STRING のタグ番号 12 を表す定数。
RELATIVE_OID
RELATIVE_OID のタグ番号 13 を表す定数。
SEQUENCE
SEQUENCE のタグ番号 16 を表す定数。
SET
SET のタグ番号 17 を表す定数。
NUMERICSTRING
NUMERICSTRING のタグ番号 18 を表す定数。
PRINTABLESTRING
PRINTABLESTRING のタグ番号 19 を表す定数。
T61STRING
T61STRING のタグ番号 20 を表す定数。
VIDEOTEXSTRING
VIDEOTEXSTRING のタグ番号 21 を表す定数。
IA5STRING
IA5STRING のタグ番号 22 を表す定数。
UTCTIME
UTCTIME のタグ番号 23 を表す定数。
GENERALIZEDTIME
GENERALIZEDTIME のタグ番号 24 を表す定数。
GRAPHICSTRING
GRAPHICSTRING のタグ番号 25 を表す定数。
ISO64STRING
ISO64STRING のタグ番号 26 を表す定数。
GENERALSTRING
GENERALSTRING のタグ番号 27 を表す定数。
UNIVERSALSTRING
UNIVERSALSTRING のタグ番号 28 を表す定数。
CHARACTER_STRING
CHARACTER_STRING のタグ番号 29 を表す定数。
BMPSTRING
BMPSTRING のタグ番号 30 を表す定数。