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


Система типов ASN.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, который не состоит из других типов.

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

базовых типов

Описывает следующие типы данных:

  • BIT STRING
  • BOOLEAN
  • ЦЕЛОЕ ЧИСЛО
  • NULL
  • ИДЕНТИФИКАТОР ОБЪЕКТА
  • OCTET STRING

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

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

  • BMPString
  • IA5String
  • PrintableString
  • TeletexString
  • UTF8String

созданные типы

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

 

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

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

различающиеся правила кодирования

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