Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::ASN1モジュール

module OpenSSL::ASN1

クラスの継承リスト: OpenSSL::ASN1

Abstract

参照

モジュール関数

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 を表す定数です。

Methods

Classes