생성 형식

생성된 ASN.1( Abstract Syntax Notation One ) 형식은 기본 형식, 문자열 형식 또는 기타 생성된 형식으로 구성됩니다. 예를 들어 X.509 인증서 확장은 다음 예제와 같이 세 가지 기본 ASN.1 형식으로 구성됩니다.

Extension ::= SEQUENCE 
{
   extnId              OBJECT IDENTIFIER,
   critical            BOOLEAN DEFAULT FALSE,
   extnValue           OCTET STRING
}

확장은 OID( 개체 식별자 ), 확장이 중요한지 여부를 식별하는 부울 값 및 값이 포함된 바이트 배열로 구성됩니다. 인증서 등록 API는 다음과 같은 생성된 ASN.1 형식을 지원합니다.

시퀀스 및 시퀀스

인코딩 태그: 0x30

하나 이상의 형식으로 정렬된 일련의 필드를 포함합니다. 필드는OPTIONAL 또는 DEFAULT로 표시될 수 있습니다. 또한 디코딩할 때 모호성을 방지하기 위해 연속적인 선택적 필드는 고유 식별자([1]와 같은 대괄호로 묶인 정수)를 사용하고 다음 예제와 같이 다음 필수 필드와 달라야 합니다.

SomeValue ::= SEQUENCE 
{
   a     INTEGER,
   b     [0] INTEGER OPTIONAL,
   c     [1] INTEGER DEFAULT 1,
   d     INTEGER
}

SEQUENCESEQUENCE OF의 차이점은 SEQUENCE OF 구문의 요소가 동일한 형식이어야 한다는 것입니다. 다음 예제를 참조하세요. 두 구문 모두 인코딩할 때 동일한 태그 값(0x30)을 갖습니다.

PolicyQualifiers ::=  SEQUENCE OF PolicyQualifierInfo

PolicyQualifierInfo ::= SEQUENCE 
{
   policyQualifierId   OBJECT IDENTIFIER,
   qualifier           ANY OPTIONAL
}

SEQUENCESEQUENCE OF의 차이점을 살펴보는 또 다른 방법은 C 프로그래밍 언어의 해당 항목과 비교하는 것입니다. 즉, SEQUENCE 는 구조체와 거의 동일하며 SEQUENCE OF 은 배열과 거의 동일합니다.

SET 및 SET OF

인코딩 태그: 0x31

하나 이상의 형식의 순서가 지정되지 않은 일련의 필드를 포함합니다. 순서가 지정된 목록을 포함하는 SEQUENCE 와 다릅니다. 순서가 지정되지 않은 목록을 지정하면 애플리케이션이 구조 필드를 가장 적절한 순서로 인코더에 제공할 수 있습니다. SEQUENCE와 마찬가지로 SET 구문의 필드는 OPTIONAL 또는 DEFAULT로 표시될 수 있으며 고유 식별자를 사용하여 디코딩 프로세스를 명확하게 해야 합니다. SETSET OF의 차이점은 SET OF 구문의 요소가 동일한 형식이어야 한다는 것입니다.

Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

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

선택

인코딩 태그: 해당 없음

대안 중에서 선택할 수 있는 항목을 정의합니다. 디코딩 시 모호성을 방지하기 위해 각 대안은 대괄호로 묶인 정수로 고유하게 식별되어야 합니다. 인코딩될 때 CHOICE 구문에는 선택한 대안의 인코딩 태그 값이 있습니다.

AltNames ::= SEQUENCE OF GeneralName

GeneralNames ::= AltNames

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

ASN.1 형식 시스템

ASN.1 형식의 DER 인코딩

Distinguished Encoding Rules