Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::ASN1モジュール
module OpenSSL::ASN1
クラスの継承リスト: OpenSSL::ASN1
Abstract
参照
- [RFC 3279] [[unknown:Algorithms and Identifiers for the Internet X.509 Public Key InfrastructureCertificate and Certificate Revocation List (CRL) Profile|URL:http://www.ipa.go.jp/security/rfc/RFC3279EN.html]]
- [RFC 3280] [[unknown:Internet X.509 Public Key Infrastructure Certificate and CRL Profile|URL:http://www.ipa.go.jp/security/rfc/RFC3280-00EN.html]]
- [ASN.1:2002] [[unknown:"Abstract Syntax Notation One (ASN.1) Specification of Basic Notation ITU-T Rec. X.680 (2002) | ISO/IEC 8824-1:2002"|URL:http://asn1.elibel.tm.fr/en/standards/index.htm#asn1]]
モジュール関数
BMPString(value ...)BitString(value ...)Boolean(value [, tag [, tagging [, tag_class]]])Enumerated(value ...)GeneralString(value ...)GeneralizedTime(value ...)GraphicString(value ...)IA5String(value ...)ISO64String(value ...)Integer(value ...)Null(value ...)NumericString(value ...)ObjectId(value ...)OctetString(value ...)PrintableString(value ...)Sequence(value ...)Set(value ...)T61String(value ...)UTCTime(value ...)UTF8String(value ...)UniversalString(value ...)VideotexString(value ...)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>]>, ... decode_all(der)-
ASN1.decode と違って、der に含まれる全てのオブジェクトを再帰的に解析し 配列として返します。
traverse(der) {|depth, off, hlen, len, constructed, tag_class, tag| ...}-
der に含まれる全てのオブジェクトを再帰的に解析して、 そのプロパティを引数として与えられたブロックを評価します。
- depth は再帰の深さ
- off は対象の ASN.1 オブジェクトの開始の der の始めからのオフセット
- hlen は ASN.1 オブジェクトのヘッダの長さ
- len は ASN.1 オブジェクトの値フィールドの長さ
- constructed は対象の ASN.1 オブジェクトが Constructive なら真
- tag_class はタグクラスを表す Symbol オブジェクト (:UNIVERSAL, :CONTEXT_SPECIFIC, :APPLICATION)
- tag はタグ番号
ASN1.decode_all と同じように der に含まれる全ての ASN.1 オブジェクトを 再帰的に解析します。
以下のようなモジュール関数も定義されています。メソッドと同じ名前のクラスの コンストラクター new と同じです。
定数
BIT_STRING-
BIT_STRING のタグ番号 3 を表す定数です。
BMPSTRING-
BMPSTRING のタグ番号 30 を表す定数です。
BOOLEAN-
BOOLEAN のタグ番号 1 を表す定数です。
CHARACTER_STRING-
CHARACTER_STRING のタグ番号 29 を表す定数です。
EMBEDDED_PDV-
EMBEDDED_PDV のタグ番号 11 を表す定数です。
ENUMERATED-
ENUMERATED のタグ番号 10 を表す定数です。
EOC-
EOC のタグ番号 0 を表す定数です。
EXTERNAL-
EXTERNAL のタグ番号 8 を表す定数です。
GENERALIZEDTIME-
GENERALIZEDTIME のタグ番号 24 を表す定数です。
GENERALSTRING-
GENERALSTRING のタグ番号 27 を表す定数です。
GRAPHICSTRING-
GRAPHICSTRING のタグ番号 25 を表す定数です。
IA5STRING-
IA5STRING のタグ番号 22 を表す定数です。
INTEGER-
INTEGER のタグ番号 2 を表す定数です。
ISO64STRING-
ISO64STRING のタグ番号 26 を表す定数です。
NULL-
NULL のタグ番号 5 を表す定数です。
NUMERICSTRING-
NUMERICSTRING のタグ番号 18 を表す定数です。
OBJECT-
OBJECT のタグ番号 6 を表す定数です。
OBJECT_DESCRIPTOR-
OBJECT_DESCRIPTOR のタグ番号 7 を表す定数です。
OCTET_STRING-
OCTET_STRING のタグ番号 4 を表す定数です。
PRINTABLESTRING-
PRINTABLESTRING のタグ番号 19 を表す定数です。
REAL-
REAL のタグ番号 9 を表す定数です。
RELATIVE_OID-
RELATIVE_OID のタグ番号 13 を表す定数です。
SEQUENCE-
SEQUENCE のタグ番号 16 を表す定数です。
SET-
SET のタグ番号 17 を表す定数です。
T61STRING-
T61STRING のタグ番号 20 を表す定数です。
UNIVERSALSTRING-
UNIVERSALSTRING のタグ番号 28 を表す定数です。
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
UTCTIME-
UTCTIME のタグ番号 23 を表す定数です。
UTF8STRING-
UTF8STRING のタグ番号 12 を表す定数です。
VIDEOTEXSTRING-
VIDEOTEXSTRING のタグ番号 21 を表す定数です。