Mendekode Struktur CERT_INFO
Mengingat sertifikat, langkah pertama dalam pendekodean BLOB sertifikat adalah memanggil CertCreateCertificateContext, meneruskannya penunjuk ke sertifikat yang dikodekan (BLOB). Ketika fungsi ini dipanggil, fungsi ini membuat duplikat sertifikat yang dikodekan, membuat struktur jenis CERT_CONTEXT, dan membuat struktur jenis CERT_INFO. Seperti yang ditunjukkan dalam ilustrasi berikut, konteks sertifikat mencakup BLOB sertifikat asli, struktur C jenis CERT_CONTEXT, dan struktur C jenis CERT_INFO. Salah satu anggota struktur CERT_CONTEXT menunjuk ke struktur CERT_INFO dan satu lagi ke BLOB sertifikat yang dikodekan.
Objek yang dikodekan (anggota data) selalu disediakan sebagai input ke fungsi CryptDecodeObject , dan outputnya adalah struktur C yang mungkin atau mungkin tidak memiliki anggota yang dikodekan, tergantung pada seberapa jauh anda berada.
Ada satu anggota lain yang memerlukan beberapa pendekodean, dan itu adalah anggota Ekstensi . Meskipun tidak dikodekan pada tingkat CERT_INFO , itu memang berisi beberapa informasi yang dikodekan. Untuk mendekode informasi ini, lanjutkan seperti yang ditunjukkan dalam ilustrasi berikut.
Dalam struktur CERT_INFO , anggota rgExtension adalah penunjuk ke array struktur CERT_EXTENSION . Setiap struktur CERT_EXTENSION memiliki anggota Nilai yang dalam bentuk dikodekan dan perlu didekodekan. Anggota Nilai diteruskan ke fungsi CryptDecodeObject , lalu output dari fungsi tergantung pada nilai anggota pszObjId . Perhatikan bahwa dalam ilustrasi, dua struktur yang berbeda diproduksi, salah satu jenis CERT_BASIC_CONSTRAINTS_INFO dan salah satu jenis CERT_AUTHORITY_KEY_ID_INFO, tergantung pada nilai pszObjId.