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> 所指示的八位组。
如果采用
一个相对可分辨名称包含一个或多个属性值断言,它们以
一个可分辨名称包含零个或多个相对可分辨名称,它们以
实现必须 (MUST) 识别下表中列出的 AttributeType 名称字符串(描述符),但可以 (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] 中描述。
实现可以 (MAY) 识别其他 DN 字符串表示。但是,由于并没有要求必须识别(以及如何识别)其他 DN 字符串表示,实现应当 (SHOULD) 只按照本文档第 2 节的规定生成 DN 字符串。