Fungsi CertVerifyRevocation (wincrypt.h)
Fungsi CertVerifyRevocation memeriksa status pencabutan sertifikat yang terkandung dalam array rgpvContext . Jika sertifikat dalam daftar ditemukan untuk dicabut, tidak ada pemeriksaan lebih lanjut yang dilakukan. Array ini dapat menjadi rantai sertifikat yang menyebar ke atas dari entitas akhir ke otoritas akar, tetapi sifat daftar sertifikat ini tidak diperlukan atau diasumsikan.
Sintaks
BOOL CertVerifyRevocation(
[in] DWORD dwEncodingType,
[in] DWORD dwRevType,
[in] DWORD cContext,
[in] PVOID [] rgpvContext,
[in] DWORD dwFlags,
[in, optional] PCERT_REVOCATION_PARA pRevPara,
[in, out] PCERT_REVOCATION_STATUS pRevStatus
);
Parameter
[in] dwEncodingType
Menentukan jenis pengodean yang digunakan. Saat ini, hanya X509_ASN_ENCODING dan PKCS_7_ASN_ENCODING yang digunakan; namun, jenis pengodean tambahan dapat ditambahkan di masa mendatang. Untuk jenis pengodean saat ini, gunakan X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.
[in] dwRevType
Menunjukkan jenis struktur konteks yang diteruskan dalam rgpvContext. Saat ini hanya CERT_CONTEXT_REVOCATION_TYPE, pencabutan sertifikat, ditentukan.
[in] cContext
Jumlah elemen dalam array rgpvContext .
[in] rgpvContext
Ketika dwRevType CERT_CONTEXT_REVOCATION_TYPE, rgpvContext adalah array pointer ke struktur CERT_CONTEXT . Konteks ini harus berisi informasi yang memadai untuk memungkinkan DLL pencabutan yang dapat diinstal atau terdaftar untuk menemukan server pencabutan. Informasi ini biasanya akan disampaikan dalam ekstensi seperti ekstensi CRLDistributionsPoints yang ditentukan oleh Internet Engineering Task Force (IETF) di PKIX Bagian 1.
Untuk efisiensi, semakin banyak konteks yang diteruskan pada satu waktu, semakin baik.
[in] dwFlags
Menunjukkan kebutuhan pemrosesan khusus. Parameter ini bisa menjadi salah satu bendera berikut.
Nilai | Makna |
---|---|
|
Verifikasi rantai sertifikat dilakukan dengan asumsi setiap sertifikat kecuali sertifikat pertama adalah penerbit sertifikat yang mendahuluinya. Jika dwRevType tidak CERT_CONTEXT_REVOCATION_TYPE, tidak ada asumsi yang dibuat tentang urutan konteks. |
|
Mencegah penangan pencabutan mengakses sumber daya berbasis jaringan apa pun untuk pemeriksaan pencabutan. |
|
Saat diatur, dwUrlRetrievalTimeout adalah batas waktu kumulatif di semua pengambilan kawat URL. |
|
Ketika diatur, fungsi ini hanya menggunakan protokol status sertifikat online (OCSP) untuk pemeriksaan pencabutan. Jika sertifikat tidak memiliki URL AIA OCSP, anggota dwError dari parameter pRevStatus diatur ke CRYPT_E_NOT_IN_REVOCATION_DATABASE. |
[in, optional] pRevPara
Secara opsional diatur untuk membantu menemukan penerbit. Untuk detailnya, lihat struktur CERT_REVOCATION_PARA .
[in, out] pRevStatus
Hanya anggota cbSizedari CERT_REVOCATION_STATUS yang ditunjukkan oleh pRevStatus yang perlu diatur sebelum CertVerifyRevocation dipanggil.
Jika fungsi mengembalikan FALSE, anggota struktur ini akan berisi informasi status kesalahan. Untuk informasi selengkapnya, lihat CERT_REVOCATION_STATUS. Untuk deskripsi tentang bagaimana pRevStatus diperbarui saat masalah verifikasi pencabutan ditemui, lihat Keterangan.
Nilai kembali
Jika fungsi berhasil memeriksa semua konteks dan tidak ada yang dicabut, fungsi mengembalikan TRUE. Jika fungsi gagal, fungsi mengembalikan FALSE dan memperbarui struktur CERT_REVOCATION_STATUS yang ditunjukkan oleh pRevStatus seperti yang dijelaskan dalam CERT_REVOCATION_STATUS.
Ketika handler pencabutan untuk salah satu konteks mengembalikan FALSE karena kesalahan, anggota dwError dalam struktur yang ditunjukkan oleh pRevStatus akan diatur oleh handler untuk menentukan kesalahan mana yang ditemui. GetLastError mengembalikan kode kesalahan yang sama dengan kesalahan yang ditentukan dalam anggota dwError dari struktur CERT_REVOCATION_STATUS . GetLastError bisa menjadi salah satu nilai berikut.
Nilai | Deskripsi |
---|---|
|
Fungsi pencabutan yang diinstal atau terdaftar tidak dapat melakukan pemeriksaan pencabutan pada konteks. |
|
Tidak ditemukan DLL terinstal atau terdaftar yang dapat memverifikasi pencabutan. |
|
Konteks yang akan diperiksa tidak ditemukan di database server pencabutan. |
|
Tidak dimungkinkan untuk tersambung ke server pencabutan. |
|
Konteks dicabut. dwReason di pRevStatus berisi alasan pencabutan. |
|
Konteksnya bagus. |
|
cbSize dalam pRevStatus kurang dari sizeof(CERT_REVOCATION_STATUS). Perhatikan bahwa dwError di pRevStatus tidak diperbarui untuk kesalahan ini. |
Keterangan
Contoh berikut menunjukkan bagaimana pRevStatus diperbarui saat masalah verifikasi pencabutan ditemui:
Pertimbangkan kasus di mana cContext adalah empat:
Jika CertVerifyRevocation dapat memverifikasi bahwa rgpvContext[0] dan rgpvContext[1] tidak dicabut, tetapi tidak dapat memeriksa rgpvContext[2], anggota pRevStatusdwIndex diatur ke dua, menunjukkan bahwa konteks di indeks dua memiliki masalah, anggota dwErrorpRevStatus diatur ke CRYPT_E_NO_REVOCATION_CHECK, dan FALSE dikembalikan.
Jika rgpvContext[2] ditemukan dicabut, anggota dwIndexpRevStatus diatur ke dua, dan anggota dwErrorpRevStatus diatur ke CRYPT_E_REVOKED, dwReason diperbarui, dan FALSE dikembalikan.
Dalam kedua kasus, rgpvContext[0] dan rgpvContext[1] diverifikasi untuk tidak dicabut, rgpvContext[2] adalah indeks array terakhir yang diperiksa, dan rgpvContext[3] belum diperiksa sama sekali.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wincrypt.h |
Pustaka | Crypt32.lib |
DLL | Crypt32.dll |
Lihat juga
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