Bagikan melalui


Jenis yang Dibangun

Jenis Abstract Syntax Notation One (ASN.1) yang dibangun terdiri dari jenis dasar, jenis string, atau jenis konstruksi lainnya. Misalnya, ekstensi sertifikat X.509 terdiri dari tiga jenis ASN.1 dasar seperti yang ditunjukkan oleh contoh berikut.

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

Ekstensi terdiri dari pengidentifikasi objek (OID), nilai Boolean yang mengidentifikasi apakah ekstensi sangat penting, dan array byte yang berisi nilai . API Pendaftaran Sertifikat mendukung jenis ASN.1 yang dibangun berikut.

URUTAN DAN URUTAN

Tag pengodean: 0x30

Berisi serangkaian bidang yang diurutkan dari satu atau beberapa jenis. Bidang dapat ditandaiOPSIONAL atau DEFAULT. Selain itu, untuk menghindari ambiguitas saat mendekode, bidang opsional berturut-turut harus berbeda satu sama lain dengan menggunakan pengidentifikasi unik (bilangan bulat kurung seperti [1]) dan dari bidang yang diperlukan berikut seperti yang ditunjukkan oleh contoh berikut.

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

Perbedaan antara SEQUENCE dan SEQUENCE OF adalah bahwa elemen konstruksi SEQUENCE OF harus memiliki jenis yang sama. Lihat contoh berikut. Kedua konstruksi memiliki nilai tag yang sama (0x30) saat dikodekan.

PolicyQualifiers ::=  SEQUENCE OF PolicyQualifierInfo

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

Cara lain untuk melihat perbedaan antara SEQUENCE dan SEQUENCE OF adalah dengan membandingkannya dengan rekan-rekan mereka dalam bahasa pemrograman C. Artinya, SEQUENCE kira-kira setara dengan struktur dan SEQUENCE OF kira-kira setara dengan array.

SET dan SET OF

Tag pengodean: 0x31

Berisi serangkaian bidang yang tidak diurutkan dari satu atau beberapa tipe. Ini berbeda dari SEQUENCE yang berisi daftar yang diurutkan. Menentukan daftar yang tidak berurutan memungkinkan aplikasi untuk menyediakan bidang struktur ke encoder dalam urutan yang paling tepat. Seperti halnya SEQUENCE, bidang konstruksi SET dapat ditandai dengan OPSIONAL atau DEFAULT, dan pengidentifikasi unik harus digunakan untuk membedakan proses pendekodean. Perbedaan antara SET dan SET OF adalah bahwa elemen konstruksi SET OF harus memiliki jenis yang sama.

Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

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

PILIHAN

Tag pengodean: tidak berlaku

Menentukan pilihan antara alternatif. Setiap alternatif harus diidentifikasi secara unik oleh bilangan bulat kurung untuk menghindari ambiguitas saat pendekodean. Ketika dikodekan, konstruksi CHOICE akan memiliki nilai tag pengodean dari alternatif yang dipilih.

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
}

Sistem Jenis ASN.1

Pengodean DER dari Jenis ASN.1

Distinguished Encoding Rules