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
CERT_VERIFY_REV_CHAIN_FLAG
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.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
Mencegah penangan pencabutan mengakses sumber daya berbasis jaringan apa pun untuk pemeriksaan pencabutan.
CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
Saat diatur, dwUrlRetrievalTimeout adalah batas waktu kumulatif di semua pengambilan kawat URL.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
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
CRYPT_E_NO_REVOCATION_CHECK
Fungsi pencabutan yang diinstal atau terdaftar tidak dapat melakukan pemeriksaan pencabutan pada konteks.
CRYPT_E_NO_REVOCATION_DLL
Tidak ditemukan DLL terinstal atau terdaftar yang dapat memverifikasi pencabutan.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
Konteks yang akan diperiksa tidak ditemukan di database server pencabutan.
CRYPT_E_REVOCATION_OFFLINE
Tidak dimungkinkan untuk tersambung ke server pencabutan.
CRYPT_E_REVOKED
Konteks dicabut. dwReason di pRevStatus berisi alasan pencabutan.
ERROR_SUCCESS
Konteksnya bagus.
E_INVALIDARG
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

CERT_CONTEXT

CERT_REVOCATION_PARA

CERT_REVOCATION_STATUS

CertVerifyCRLTimeValidity

CertVerifyTimeValidity

CertVerifyValidityNesting

Fungsi Manajemen Data