Aller au contenu principal

3. Analyse d'une chaîne pour retrouver un nom distingué

La représentation sous forme de chaîne des noms distingués est limitée aux caractères Unicode [Unicode] encodés en UTF-8 [RFC3629]. La structure de cette représentation sous forme de chaîne est spécifiée au moyen de la grammaire BNF augmentée [RFC4234] suivante :

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

; Les caractères suivants doivent être échappés lorsqu'ils
; apparaissent dans la valeur à encoder : ESC, l'un de
; <escaped>, SHARP ou SPACE en tête, SPACE en fin, et 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

où les productions , , , , , , , , , , , , , et sont définies dans [RFC4512].

Chaque , qu'il s'agisse d'un ou d'un , désigne un type d'attribut d'une assertion de valeur d'attribut (AVA). Le est suivi d'un et d'un . L' se présente sous la forme ou .

Sous la forme , une valeur assertée sous forme de chaîne LDAP peut être obtenue en remplaçant (de gauche à droite, de façon non récursive) chaque apparaissant dans la comme suit :

remplacer <ESC><ESC> par <ESC> ;
remplacer <ESC><special> par <special> ;
remplacer <ESC><hexpair> par l'octet indiqué par le <hexpair>.

Sous la forme , une représentation BER peut être obtenue en convertissant chaque du en l'octet indiqué par le .

Un nom distingué relatif comporte une ou plusieurs assertions de valeur d'attribut, séparées par .

Un nom distingué comporte zéro ou plusieurs noms distingués relatifs, séparés par .

Les implémentations DOIVENT (MUST) reconnaître les chaînes de nom d'AttributeType (descripteurs) listées dans le tableau suivant, mais PEUVENT (MAY) en reconnaître d'autres.

ChaîneX.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)

Ces types d'attribut sont décrits dans [RFC4519].

Les implémentations PEUVENT (MAY) reconnaître d'autres représentations sous forme de chaîne de DN. Toutefois, comme il n'est pas exigé que les autres représentations sous forme de chaîne de DN soient reconnues (ni, le cas échéant, comment), les implémentations DEVRAIENT (SHOULD) ne générer des chaînes de DN que conformément à la section 2 de ce document.