Строковые типы
Одним из наиболее распространенных способов использования строк в инфраструктуре открытых ключей (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.
Связанные темы