생성 형식
생성된 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
}
SEQUENCE와 SEQUENCE OF의 차이점은 SEQUENCE OF 구문의 요소가 동일한 형식이어야 한다는 것입니다. 다음 예제를 참조하세요. 두 구문 모두 인코딩할 때 동일한 태그 값(0x30)을 갖습니다.
PolicyQualifiers ::= SEQUENCE OF PolicyQualifierInfo
PolicyQualifierInfo ::= SEQUENCE
{
policyQualifierId OBJECT IDENTIFIER,
qualifier ANY OPTIONAL
}
SEQUENCE와 SEQUENCE OF의 차이점을 살펴보는 또 다른 방법은 C 프로그래밍 언어의 해당 항목과 비교하는 것입니다. 즉, SEQUENCE 는 구조체와 거의 동일하며 SEQUENCE OF 은 배열과 거의 동일합니다.
SET 및 SET OF
인코딩 태그: 0x31
하나 이상의 형식의 순서가 지정되지 않은 일련의 필드를 포함합니다. 순서가 지정된 목록을 포함하는 SEQUENCE 와 다릅니다. 순서가 지정되지 않은 목록을 지정하면 애플리케이션이 구조 필드를 가장 적절한 순서로 인코더에 제공할 수 있습니다. SEQUENCE와 마찬가지로 SET 구문의 필드는 OPTIONAL 또는 DEFAULT로 표시될 수 있으며 고유 식별자를 사용하여 디코딩 프로세스를 명확하게 해야 합니다. SET와 SET 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
}
관련 항목