Текстовое представление DN
Текстовое представление DistinguishedName (GeneralNames), далее просто имени, задается в соответствии с RFC2253:
distinguishedName = [name]; may be empty string
name name-component *("," name-component)
name-component = attributeTypeAndValue *("+" attributeTypeAndValue)
attributeTypeAndValue = attributeType "=" attributeValue
attributeType = (ALPHA 1*keychar) / oid
keychar = ALPHA / DIGIT / "-"
oid = 1*DIGIT *("." 1*DIGIT)
attributeValue = string
string = *( stringchar / pair )
/ "#" hexstring
/ QUOTATION *( quotechar / pair ) QUOTATION; only from v2
quotechar = <any character except "\" or QUOTATION >
special = "," / "=" / "+" / "<" / ">" / "#" / ";"
pair = "\" ( special / "\" / QUOTATION / hexpair )
stringchar =<any character except one of special, "\" or QUOTATION>
hexstring = 1*hexpair
hexpair = hexchar hexchar
hexchar = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
/ "a" / "b" / "c" / "d" / "e" / "f"
ALPHA = <any ASCII alphabetic character>;(decimal 65-90 and 97-122)
DIGIT = <any ASCII decimal digit> ;(decimal 48-57)
QUOTATION = <the ASCII double quotation mark character '"' decimal 34>
Дополнения и отступления от RFC2253
Имеются следующие дополнения и отступления от RFC2253:
• символ "/" является разделителем компонент имени, т.е. допустим следующий синтаксис:
name = name-component *("/" name-component)
• для того, чтобы использовать этот символ как значащий, его необходимо проэскейпить.
• распознаются следующие сокращения типов атрибутов (attributeType) DistinguishedName:
X.500 Attribute Type |
Сокращение |
countryName |
C |
stateName |
ST |
localityName |
L |
organizationName |
O |
organizationalUnitName |
OU |
commonName |
CN |
title |
T |
surname |
SN |
givenName |
GN |
initials |
I |
streetAddress |
STREET |
nameQualifier |
NQ |
generationQualifier |
GQ |
userid |
UID |
domainComponent |
DC |
• регистр, в котором записано сокращение, не имеет значения.
• Строковое задание GeneralNames сведено к синтаксису, описанному в RFC2253. Распознаются следующие сокращения типов атрибутов имени GeneralNames:
Тип атрибута |
Сокращение |
otherName |
OTHERNAME |
rfc822Name |
|
dNSName |
DNS |
directoryName |
DN |
uniformResourceIdentifier |
URI |
iPAddress |
IP |
registeredID |
RID |
• регистр, в котором записано сокращение, не имеет значения.
• задание атрибутов x400Address и ediPartyName в строковом представлении не поддерживается.
• Согласно RFC2253 символы ’"’(кавычки) и ’\’(back-slash) являются служебными.
Согласно описанию Терминального символа СТРОКА, при задании любого строкового значения в LSP указанные символы так же используются как служебные.
Поэтому:
• каждая отдельно стоящая кавычка в строковом представлении должна быть дополнена слева символом ’\’ в LSP
• каждое сочетание ’\"’ в строковом представлении должно быть дополнено слева ’\\’ в LSP.
Примеры:
Имя в сертификате |
Строковое представление |
В LSP |
O=Sergey, Danila and company |
O=Sergey\, Danila and company |
Subject="O=Sergey\, Danila and company" |
O=JSC "Horns and hoofs" |
O=JSC \"Horns and hoofs\" |
Subject="O=JSC \\\"Horns and hoofs\\\"" |
CN=Device#4 |
CN="Device#4" |
Subject="CN=\"Device#4\"" |