Поделиться через


Строковые типы

Одним из наиболее распространенных способов использования строк в инфраструктуре открытых ключей (PKI) является создание различающегося имени X.500. Например, имя субъекта запроса сертификата создается путем объединения последовательности относительных различающихся имен, как показано в следующем примере синтаксиса.

---------------------------------------------------------------------
-- Breakdown of a subject name in a certificate request.
---------------------------------------------------------------------

CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 Name,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

AttributeTypeValue ::= SEQUENCE 
{
   type       OBJECT IDENTIFIER,
   value      ANY 
}

DirectoryString ::= CHOICE 
{
   teletexString           TeletexString (SIZE (1..MAX)),
   printableString         PrintableString (SIZE (1..MAX)),
   universalString         UniversalString (SIZE (1..MAX)),
   utf8String              UTF8String (SIZE (1..MAX)),
   bmpString               BMPString (SIZE (1..MAX)) 
}

API регистрации сертификатов поддерживает следующие типы строк ASN.1.

BMPString

Тег кодирования: 0x1E

имя Certreq.exe: UNICODE_STRING

Базовая многоязычная плоскость (BMP) — это кодировка символов, охватывающая первую плоскость универсального набора символов (UCS). Есть семнадцать самолетов с номером от 0 до 16. BMP занимает плоскость 0 и включает в себя 65 536 кодовых точек от 0x0000 до 0xFFFF. Это раздел карты символов Юникода, где до сих пор выполнено большинство назначений символов. Он включает латинский, ближневосточный, азиатский, африканский и другие языки.

IA5String

Тег кодирования: 0x16

имя Certreq.exe: IA5_STRING

Международный алфавит номер 5 (IA5) обычно эквивалентен алфавиту ASCII, но разные версии могут включать акценты или другие символы, характерные для регионального языка. В следующем примере показан тип IA5String , используемый в определении ASN.1 расширения сертификата AlternativeNames .

---------------------------------------------------------------------
-- AlternativeNames extension
---------------------------------------------------------------------

AltNames ::= SEQUENCE OF GeneralName

GeneralNames ::= AltNames

GeneralName ::= CHOICE 
{
   otherName               [0] IMPLICIT OtherName,
   rfc822Name              [1] IMPLICIT IA5String,
   dNSName                 [2] IMPLICIT IA5String,
   x400Address             [3] IMPLICIT SEQUENCE OF ANY, 
   directoryName           [4] EXPLICIT ANY,    
   ediPartyName            [5] IMPLICIT SEQUENCE OF ANY,
   uniformResourceLocator  [6] IMPLICIT IA5String,
   iPAddress               [7] IMPLICIT OCTET STRING,
   registeredID            [8] IMPLICIT OBJECT IDENTIFIER
}

OtherName ::= SEQUENCE 
{
   type                    OBJECT IDENTIFIER,
   value                   [0] EXPLICIT ANY 
}

PrintableString

Тег кодирования: 0x13

имя Certreq.exe: PRINTABLE_STRING

Тип данных PrintableString изначально был предназначен для представления ограниченных наборов символов, доступных для входных терминалов мейнфрейма, но он по-прежнему широко используется. Он содержит следующие символы:

  • A–Z
  • a-z
  • 0-9
  • ' ( ) + , - . / : = ? [пробел]

TeletexString

Тег кодирования: 0x14

Типы данных TeletexString и связанные типы данных T61String кодируются на 8 битах (или 16 битах для составных символов). Они оба имеют число тегов 0x14. Они не используются широко.

UTF8String

Тег кодирования: 0x0C

имя Certreq.exe: UTF8_STRING

8-разрядный формат преобразования UCS/Юникод (UTF-8) — это кодировка символов переменной длины, которая может представлять любой универсальный символ в виде символа Юникода, обеспечивая при этом согласованность исходных кодовых точек с ASCII. В UTF-8 используется от одного до четырех байтов. Номер тега — 0x0C.

Система типов ASN.1

Distinguished Encoding Rules

Кодировка DER типов ASN.1