Формат задания 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

EMAIL

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\""