Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::X509::Nameクラス

class OpenSSL::X509::Name

クラスの継承リスト: OpenSSL::X509::Name < Object < Kernel < BasicObject

要約

X.500の識別名(DN, Distinguished Name)を表わすクラス。

eql? と hash が定義されているため、Hash のキーとして 利用できます。

目次

特異メソッド
new parse parse_openssl parse_rfc2253
インスタンスメソッド
<=> cmp add_entry hash_old to_a to_der to_s
定数
COMPAT DEFAULT_OBJECT_TYPE MULTILINE OBJECT_TYPE_TEMPLATE ONELINE RFC2253

特異メソッド

new -> OpenSSL::X509::Name[permalink][rdoc]
new(ary, template = OBJECT_TYPE_TEMPLATE) -> OpenSSL::X509::Name
new(obj) -> OpenSSL::X509::Name

OpenSSL::X509::Name オブジェクトを生成します。

引数を与えなかった場合は空のオブジェクトを返します。

第1引数として配列を与えた場合には、 その内容が属性型と属性値の文字列のペアであると仮定して、オブジェクトを生成します。 この場合値のデータ型(ASN.1の型)は template で与えたハッシュによって定まります。

obj が OpenSSL::X509::Name である場合には内容を複製した オブジェクトを返します。

それ以外の場合は obj の to_der メソッドを読んで DER 形式のバイト列に変換し、 そこから内容を作ります。

例:

require 'openssl'
OpenSSL::X509::Name.new([["C", "JP"], ["ST", "Kanagawa"], ["L", "Yokohama"], ["O", "Example Company"], ["OU", "Lab3"], ["CN", "foobar"], ["emailAddress", "foobar@lab3.example.co.jp"]])
# => OpenSSL::X509::Name object: /C=JP/ST=Kanagawa/L=Yokohama/O=Example Company/OU=Lab3/CN=foobar/emailAddress=foobar@lab3.example.co.jp
[PARAM] ary:
属性型と属性値のペアの配列
[PARAM] obj:
識別子オブジェクトを生成するための情報
[PARAM] template:
objに配列を与えた場合には属性型に対応するデータ型を表わすハッシュ
[EXCEPTION] OpenSSL::X509::NameError:
与えたデータが不正である場合など、オブジェクトが生成できなかった場合に発生します
parse(str, template=OBJECT_TYPE_TEMPLATE) -> OpenSSL::X509::Name[permalink][rdoc]
parse_openssl(str, template=OBJECT_TYPE_TEMPLATE) -> OpenSSL::X509::Name

文字列をパースして OpenSSL::X509::Name オブジェクトを返します。

例:

require 'openssl'
OpenSSL::X509::Name.parse('/C=JP/ST=Kanagawa/L=Yokohama/O=Example Company/OU=Lab3/CN=foobar/emailAddress=foobar@lab3.example.co.jp')
[PARAM] str:
パースする文字列
[PARAM] template:
属性型に対応するデータ型を表わすハッシュ
parse_rfc2253(str, template=OBJECT_TYPE_TEMPLATE) -> OpenSSL::X509::Name[permalink][rdoc]

RFC2253形式の文字列を パースして OpenSSL::X509::Name オブジェクトを返します。

[PARAM] str:
パースする文字列
[PARAM] template:
属性型に対応するデータ型を表わすハッシュ

インスタンスメソッド

cmp(other) -> -1 | 0 | 1[permalink][rdoc]
self <=> ohter -> -1 | 0 | 1

他の OpenSSL::X509::Name オブジェクトと比較します。

自身が other と一致する場合は 0、otherより大きい場合は1、 小さい場合は -1 を返します。

[PARAM] other:
比較するオブジェクト
add_entry(oid, value, type = nil)[permalink][rdoc]

新しい属性を追加します。

[PARAM] oid:
属性型文字列
[PARAM] value:
属性値文字列
[PARAM] type:
属性値の(ASN.1の)型、省略時は OpenSSL::X509::Name::OBJECT_TYPE_TEMPLATE と oid から型が決まる
[EXCEPTION] OpenSSL::X509::NameError:
属性の追加に失敗した場合に発生します
hash_old -> Integer[permalink][rdoc]

OpenSSL 0.9.8 と互換な古い方式のハッシュ関数の ハッシュ値を返します。

内部では OpenSSL の X509_NAME_hash_old を呼び出します。

to_a -> [[String, String, Integer]][permalink][rdoc]

内容を配列にして返します。

配列の各要素は、[属性型文字列、属性値文字列、属性値の型を表す整数(OpenSSL::ASN1以下の各定数で定義されているASN1の型)] という3要素の配列です。

例:

require 'openssl'
n = OpenSSL::X509::Name.parse('/C=JP/ST=Kanagawa/L=Yokohama/O=Example Company/OU=Lab3/CN=foobar/emailAddress=foobar@lab3.example.co.jp')
n.to_a
# => [["C", "JP", 19], ["ST", "Kanagawa", 12], ["L", "Yokohama", 12], ["O", "Example Company", 12], ["OU", "Lab3", 12], ["CN", "foobar", 12], ["emailAddress", "foobar@lab3.example.co.jp", 22]]
to_der -> String[permalink][rdoc]

DER 形式のバイト列を返します。

to_s(flags=nil) -> String[permalink][rdoc]

DNの文字列表現を返します。

flags には通常は以下のいずれかを渡します。

* 例:

require 'openssl'
n = OpenSSL::X509::Name.parse('/C=JP/ST=Kanagawa/L=Yokohama/O=Example Company/OU=Lab3/CN=foobar/emailAddress=foobar@lab3.example.co.jp')
n.to_s
# => "/C=JP/ST=Kanagawa/L=Yokohama/O=Example Company/OU=Lab3/CN=foobar/emailAddress=foobar@lab3.example.co.jp"
n.to_s(OpenSSL::X509::Name::COMPAT)
# => "C=JP, ST=Kanagawa, L=Yokohama, O=Example Company, OU=Lab3, CN=foobar/emailAddress=foobar@lab3.example.co.jp"
n.to_s(OpenSSL::X509::Name::RFC2253)
# => "emailAddress=foobar@lab3.example.co.jp,CN=foobar,OU=Lab3,O=Example Company,L=Yokohama,ST=Kanagawa,C=JP"
n.to_s(OpenSSL::X509::Name::ONELINE)
# => "C = JP, ST = Kanagawa, L = Yokohama, O = Example Company, OU = Lab3, CN = foobar, emailAddress = foobar@lab3.example.co.jp"
n.to_s(OpenSSL::X509::Name::MULTILINE)
# => "countryName               = JP\nstateOrProvinceName       = Kanagawa\nlocalityName              = Yokohama\norganizationName          = Example Company\norganizationalUnitName    = Lab3\ncommonName                = foobar\nemailAddress              = foobar@lab3.example.co.jp"

定数

COMPAT -> Integer[permalink][rdoc]

OpenSSL::X509::Name#to_s のフラグとして使います。

DEFAULT_OBJECT_TYPE -> Integer[permalink][rdoc]

属性値のデフォルトの ASN.1 の型です。

OpenSSL::X509::Name.parseOpenSSL::X509::Name.new で template に指定されなかった属性はこの型であると仮定して処理されます。

OpenSSL::ASN1::UTF8STRING を返します。

MULTILINE -> Integer[permalink][rdoc]

OpenSSL::X509::Name#to_s のフラグとして使います。

複数行でフォーマットされます。

OBJECT_TYPE_TEMPLATE -> { String => Integer }[permalink][rdoc]

属性型に対応する ASN.1の型を格納したハッシュです。

OpenSSL::X509::Name.parseOpenSSL::X509::Name.new などでデフォルト値として使われます。

キーは属性型文字列で、ASN.1の型を表わす整数が対応します。

以下の文字列がキーです。

'C', 'countryName', 'serialNumber', 'dnQualifier',
'DC', 'domainComponent', 'emailAddress'
ONELINE -> Integer[permalink][rdoc]

OpenSSL::X509::Name#to_s のフラグとして使います。

1行で読みやすくフォーマットされます。

RFC2253 -> Integer[permalink][rdoc]

OpenSSL::X509::Name#to_s のフラグとして使います。

[RFC2253] 互換方式でフォーマットされます。