Формат задания DistinguishedName (GeneralNames) в LSP
Формат задания DistinguishedName (GeneralNames) в LSP
Текстовое представление 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\"" |