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

Понятие типа данных является основополагающим для стандарта Абстрактная синтаксическая нотация 1 (ASN.1). Каждое поле структуры запроса сертификата связано с типом. Рассмотрим, например, синтаксис сертификата PKCS 10 ASN.1, показанный в следующем примере.

--------------------------------------------------------------------
-- PKCS #10 Certificate request.
--------------------------------------------------------------------
CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 Name,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

--------------------------------------------------------------------
-- Version number.
--------------------------------------------------------------------
CertificationRequestInfoVersion ::= INTEGER

--------------------------------------------------------------------
-- Subject distinguished name (DN).
--------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

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

--------------------------------------------------------------------
-- Public key information.
--------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE 
{
   algorithm           AlgorithmIdentifier,
   subjectPublicKey    BITSTRING
}

AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
} 

--------------------------------------------------------------------
-- Attributes.
--------------------------------------------------------------------
Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type               OBJECT IDENTIFIER,
   values             AttributeSetValue
}

AttributeSetValue ::= SET OF ANY

Высокоуровневая структура запроса CertificationRequestInfo — это тип, который состоит из последовательности других типов. Если тип имеет значение или содержит только базовые типы, строковые типы или ANY, его нельзя разбить дальше. Например, поле версии является типом CertificationRequestInfoVersion , который, в свою очередь, является типом INTEGER , базовым типом ASN.1, который не состоит из других типов.

Система типов позволяет визуально представить синтаксис запроса таким образом, который легко понимается разработчиками, и обеспечивает согласованное кодирование запроса для передачи по сети. Дополнительные сведения о кодировке см. в разделе Distinguished Encoding Rules. Дополнительные сведения о типах ASN.1 см. в следующих разделах.

Базовые типы

Рассматриваются следующие типы данных:

  • БИТОВАЯ СТРОКА
  • BOOLEAN
  • INTEGER
  • NULL
  • ИДЕНТИФИКАТОР ОБЪЕКТА
  • СТРОКА OCTET

Типы строк

Рассматриваются следующие типы строк:

  • BMPString
  • IA5String
  • PrintableString
  • TeletexString
  • UTF8String

Сконструированные типы

Рассматриваются типы данных ASN.1, которые могут содержать базовые типы, строковые типы или другие сконструированные типы.

 

Кодирование запроса сертификата

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

Distinguished Encoding Rules

Общие сведения о синтаксисе и кодировке ASN.1