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
ここで、生成規則
各
<ESC><ESC> を <ESC> に置き換える;
<ESC><special> を <special> に置き換える;
<ESC><hexpair> をその <hexpair> が示すオクテットに置き換える。
相対識別名は 1 つ以上の属性値表明からなり、それらは
識別名は 0 個以上の相対識別名からなり、それらは
実装は次の表に挙げる AttributeType 名文字列(記述子)を認識しなければならない (MUST) が、他の名文字列を認識してもよい (MAY)。
| 文字列 | X.500 AttributeType |
|---|---|
| CN | commonName (2.5.4.3) |
| L | localityName (2.5.4.7) |
| ST | stateOrProvinceName (2.5.4.8) |
| O | organizationName (2.5.4.10) |
| OU | organizationalUnitName (2.5.4.11) |
| C | countryName (2.5.4.6) |
| STREET | streetAddress (2.5.4.9) |
| DC | domainComponent (0.9.2342.19200300.100.1.25) |
| UID | userId (0.9.2342.19200300.100.1.1) |
これらの属性型は [RFC4519] で記述される。
実装は他の DN 文字列表現を認識してもよい (MAY)。しかし、代替の DN 文字列表現を認識すること(および認識する場合にどのように認識するか)は要求されないため、実装は本ドキュメントの第 2 節に従ってのみ DN 文字列を生成すべきである (SHOULD)。