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
}
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk