Fungsi CertVerifyCTLUsage (wincrypt.h)

Fungsi CertVerifyCTLUsage memverifikasi bahwa subjek dipercaya untuk penggunaan tertentu dengan menemukan daftar kepercayaan sertifikat (CTL) yang ditandatangani dan valid waktu dengan pengidentifikasi penggunaan yang berisi subjek. Subjek sertifikat dapat diidentifikasi dengan konteks sertifikatnya atau pengidentifikasi unik apa pun seperti hash SHA1 dari sertifikat subjek.

Sintaks

BOOL CertVerifyCTLUsage(
  [in]           DWORD                    dwEncodingType,
  [in]           DWORD                    dwSubjectType,
  [in]           void                     *pvSubject,
  [in]           PCTL_USAGE               pSubjectUsage,
  [in]           DWORD                    dwFlags,
  [in, optional] PCTL_VERIFY_USAGE_PARA   pVerifyUsagePara,
  [in, out]      PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus
);

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 salah satu jenis pengodean saat ini, gunakan

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] dwSubjectType

Jika parameter dwSubjectType diatur ke CTL_CERT_SUBJECT_TYPE, pvSubject menunjuk ke struktur CERT_CONTEXT . Anggota SubjectAlgorithm struktur diperiksa untuk menentukan representasi identitas subjek. Awalnya, hanya hash SHA1 dan MD5 yang didukung sebagai nilai untuk SubjectAlgorithm. Properti hash yang sesuai diperoleh dari struktur CERT_CONTEXT .

Jika parameter dwSubjectType diatur ke CTL_ANY_SUBJECT_TYPE, pvSubject menunjuk ke struktur CTL_ANY_SUBJECT_INFO . Anggota SubjectAlgorithm dari struktur ini harus cocok dengan jenis algoritma CTL, dan anggota SubjectIdentifier harus cocok dengan salah satu entri CTL.

Jika dwSubjectType diatur ke nilai sebelumnya, dwEncodingType tidak digunakan.

[in] pvSubject

Nilai yang digunakan bersama dengan parameter dwSubjectType .

[in] pSubjectUsage

Penunjuk ke struktur CTL_USAGE yang digunakan untuk menentukan penggunaan subjek yang dimaksudkan.

[in] dwFlags

Jika CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG tidak diatur, CTL yang waktunya tidak lagi valid di salah satu penyimpanan yang ditentukan oleh rghCtlStore di CTL_VERIFY_USAGE_PARA dapat diganti. Ketika diganti, CERT_VERIFY_UPDATED_CTL_FLAG diatur dalam anggota dwFlagspVerifyUsageStatus. Jika bendera ini diatur, pembaruan tidak akan dibuat, bahkan jika CTL yang valid waktu dan diperbarui diterima untuk CTL yang ada di penyimpanan dan yang waktunya tidak lagi valid.

Jika CERT_VERIFY_TRUSTED_SIGNERS_FLAG diatur, hanya penyimpanan penanda tangan yang ditentukan oleh rghSignerStore di CTL_VERIFY_USAGE_PARA yang dicari untuk menemukan penanda tangan. Jika tidak, penyimpanan penanda tangan menyediakan sumber tambahan untuk menemukan sertifikat penanda tangan. Untuk informasi selengkapnya, lihat Keterangan.

Jika CERT_VERIFY_NO_TIME_CHECK_FLAG diatur, CTL tidak diperiksa untuk validitas waktu. Jika tidak, mereka adalah.

Jika CERT_VERIFY_ALLOW_MORE_USAGE_FLAG diatur, CTL dapat berisi pengidentifikasi penggunaan selain yang ditentukan oleh pSubjectUsage. Jika tidak, CTL yang ditemukan tidak akan berisi pengidentifikasi penggunaan tambahan.

[in, optional] pVerifyUsagePara

Penunjuk ke struktur CTL_VERIFY_USAGE_PARA yang menentukan penyimpanan yang akan dicari untuk menemukan CTL dan penyimpanan yang berisi penanda tangan CTL yang dapat diterima. Mengatur anggota ListIdentifier akan membatasi pencarian lebih lanjut.

[in, out] pVerifyUsageStatus

Penunjuk ke struktur CTL_VERIFY_USAGE_STATUS . Anggota cbSize struktur harus diatur ke ukuran, dalam byte, struktur, dan semua bidang lainnya harus diatur ke nol sebelum CertVerifyCTLUsage dipanggil. Untuk informasi selengkapnya, lihat CTL_VERIFY_USAGE_STATUS.

Mengembalikan nilai

Jika subjek dipercaya untuk penggunaan yang ditentukan, TRUE akan dikembalikan. Jika tidak, FALSE dikembalikan. GetLastError dapat mengembalikan salah satu kode kesalahan berikut.

Nilai Deskripsi
CRYPT_E_NO_VERIFY_USAGE_DLL
Tidak ditemukan DLL atau fungsi yang diekspor untuk memverifikasi penggunaan subjek.
CRYPT_E_NO_VERIFY_USAGE_CHECK
Fungsi yang dipanggil tidak dapat melakukan pemeriksaan penggunaan pada subjek.
CRYPT_E_VERIFY_USAGE_OFFLINE
Server sedang offline; oleh karena itu, fungsi yang dipanggil tidak dapat menyelesaikan pemeriksaan penggunaan.
CRYPT_E_NOT_IN_CTL
Subjek tidak ditemukan dalam CTL.
CRYPT_E_NO_TRUSTED_SIGNER
Tidak ada penanda tangan tepercaya yang ditemukan untuk memverifikasi tanda tangan pesan atau daftar kepercayaan.
 

Anggota dwError dari CTL_VERIFY_USAGE_PARA yang diarahkan oleh pVerifyUsageStatus diatur ke kode kesalahan yang sama.

Keterangan

CertVerifyCTLUsage adalah dispatcher ke fungsi yang dapat diinstal dengan menggunakan pengidentifikasi objek (OID). Pertama, ia mencoba menemukan fungsi OID yang cocok dengan pengidentifikasi objek penggunaan pertama dalam struktur CLT_USAGE yang diarahkan oleh pSubjectUsage. Jika gagal, ia menggunakan fungsi CertDllVerifyCTLUsage default.

Fungsi CertDllVerifyCTLUsage di Cryptnet.dll dapat diinstal dengan menggunakan OID; ia memiliki properti berikut:

  • Jika penyimpanan CTL ditentukan oleh rghCtlStore di pVerifyUsagePara, hanya toko tersebut yang dicari untuk menemukan CTL. Jika tidak, penyimpanan sistem Kepercayaan dicari untuk menemukan CTL.
  • Jika CERT_VERIFY_TRUSTED_SIGNERS_FLAG diatur, hanya penyimpanan penanda tangan yang ditentukan oleh rghSignerStore di pVerifyUsagePara yang dicari untuk menemukan sertifikat yang sesuai dengan pengeluar sertifikat dan nomor seri penanda tangan. Jika tidak, penyimpanan pesan CTL, penyimpanan penanda tangan yang ditentukan oleh rghSignerStore di pVerifyUsagePara, penyimpanan sistem Kepercayaan, penyimpanan sistem CA, ROOT, dan penyimpanan sistem Sertifikat Penerbit Perangkat Lunak (SPC) dicari untuk menemukan sertifikat penanda tangan. Dalam kedua kasus, kunci publik dalam sertifikat yang ditemukan digunakan untuk memverifikasi tanda tangan CTL.
  • Jika CTL memiliki anggota NextUpdate yang ditetapkan dan CERT_VERIFY_NO_TIME_CHECK tidak diatur, CTL akan diverifikasi untuk validitas waktu.
  • Jika CTL yang diperoleh dari penyimpanan memiliki waktu yang tidak valid, upaya dilakukan untuk mendapatkan versi yang valid waktu. Fungsi CertDllVerifyCTLUsage menggunakan properti NextUpdateLocation atau ekstensi NextUpdateLocation dari CTL, atau mencari informasi penanda tangan untuk atribut NextUpdateLocation .

Persyaratan

   
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

CTL_VERIFY_USAGE_PARA

CTL_VERIFY_USAGE_STATUS

CertFindCTLInStore

CertFindSubjectInCTL

Fungsi Verifikasi Menggunakan CTL