メインコンテンツまでスキップ

3. 文字列から識別名への構文解析

識別名の文字列表現は UTF-8 [RFC3629] で符号化された Unicode [Unicode] 文字に限定される。この文字列表現の構造は、次の拡張 BNF [RFC4234] 文法で規定される。

distinguishedName = [ relativeDistinguishedName
*( COMMA relativeDistinguishedName ) ]
relativeDistinguishedName = attributeTypeAndValue
*( PLUS attributeTypeAndValue )
attributeTypeAndValue = attributeType EQUALS attributeValue
attributeType = descr / numericoid
attributeValue = string / hexstring

; 次の文字は符号化対象の値に現れる場合にエスケープされる:ESC、
; <escaped> のいずれか、先頭の SHARP または SPACE、末尾の SPACE、および NULL。
string = [ ( leadchar / pair ) [ *( stringchar / pair )
( trailchar / pair ) ] ]

leadchar = LUTF1 / UTFMB
LUTF1 = %x01-1F / %x21 / %x24-2A / %x2D-3A /
%x3D / %x3F-5B / %x5D-7F

trailchar = TUTF1 / UTFMB
TUTF1 = %x01-1F / %x21 / %x23-2A / %x2D-3A /
%x3D / %x3F-5B / %x5D-7F

stringchar = SUTF1 / UTFMB
SUTF1 = %x01-21 / %x23-2A / %x2D-3A /
%x3D / %x3F-5B / %x5D-7F

pair = ESC ( ESC / special / hexpair )
special = escaped / SPACE / SHARP / EQUALS
escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE
hexstring = SHARP 1*hexpair
hexpair = HEX HEX

ここで、生成規則 、、、、、、、、、、、、、 および は [RFC4512] で定義される。

各 ( または )は、属性値表明 (AVA) の属性型を指す。 の後には と が続く。 は 形式または 形式である。

形式の場合、 内に現れる各 を(左から右へ、非再帰的に)次のように置き換えることで、表明された値の LDAP 文字列表現が得られる。

<ESC><ESC> を <ESC> に置き換える;
<ESC><special> を <special> に置き換える;
<ESC><hexpair> をその <hexpair> が示すオクテットに置き換える。

形式の場合、 の各 をその が示すオクテットに変換することで BER 表現が得られる。

相対識別名は 1 つ以上の属性値表明からなり、それらは で区切られる。

識別名は 0 個以上の相対識別名からなり、それらは で区切られる。

実装は次の表に挙げる AttributeType 名文字列(記述子)を認識しなければならない (MUST) が、他の名文字列を認識してもよい (MAY)。

文字列X.500 AttributeType
CNcommonName (2.5.4.3)
LlocalityName (2.5.4.7)
STstateOrProvinceName (2.5.4.8)
OorganizationName (2.5.4.10)
OUorganizationalUnitName (2.5.4.11)
CcountryName (2.5.4.6)
STREETstreetAddress (2.5.4.9)
DCdomainComponent (0.9.2342.19200300.100.1.25)
UIDuserId (0.9.2342.19200300.100.1.1)

これらの属性型は [RFC4519] で記述される。

実装は他の DN 文字列表現を認識してもよい (MAY)。しかし、代替の DN 文字列表現を認識すること(および認識する場合にどのように認識するか)は要求されないため、実装は本ドキュメントの第 2 節に従ってのみ DN 文字列を生成すべきである (SHOULD)。