Fungsi CertSelectCertificateChains (wincrypt.h)
Fungsi CertSelectCertificateChains mengambil rantai sertifikat berdasarkan kriteria pilihan yang ditentukan.
Sintaks
BOOL CertSelectCertificateChains(
[in, optional] LPCGUID pSelectionContext,
[in] DWORD dwFlags,
[in, optional] PCCERT_SELECT_CHAIN_PARA pChainParameters,
[in] DWORD cCriteria,
[in, optional] PCCERT_SELECT_CRITERIA rgpCriteria,
[in] HCERTSTORE hStore,
[out] PDWORD pcSelection,
[out] PCCERT_CHAIN_CONTEXT **pprgpSelection
);
Parameter
[in, optional] pSelectionContext
Penunjuk ke GUID skenario pemilihan sertifikat yang akan digunakan untuk panggilan ini.
[in] dwFlags
Bendera untuk mengontrol proses pemilihan sertifikat. Parameter ini dapat berupa kombinasi nol atau lebih dari bendera berikut:
[in, optional] pChainParameters
Penunjuk ke struktur CERT_SELECT_CHAIN_PARA untuk menentukan parameter untuk pembuatan rantai. Jika NULL, parameter default akan digunakan.
Anggota pChainPara dari struktur CERT_SELECT_CHAIN_PARA menunjuk ke struktur CERT_CHAIN_PARA yang dapat digunakan untuk mengaktifkan penandatanganan yang kuat.
[in] cCriteria
Jumlah elemen dalam array yang ditujukkan oleh array rgpCriteria .
[in, optional] rgpCriteria
Penunjuk ke array struktur CERT_SELECT_CRITERIA yang menentukan kriteria pilihan. Jika parameter ini diatur ke NULL, nilai parameter cCriteria harus nol.
[in] hStore
Handel ke penyimpanan untuk memilih sertifikat.
[out] pcSelection
Penunjuk ke nilai DWORD untuk menerima jumlah elemen dalam array yang ditujukkan oleh parameter pprgpSelection .
[out] pprgpSelection
Penunjuk ke penunjuk ke lokasi untuk menerima array struktur CERT_CHAIN_CONTEXT . Fungsi CertSelectCertificateChains hanya mengembalikan rantai sertifikat yang cocok dengan semua kriteria pilihan. Entri dalam array diurutkan berdasarkan kualitas, yaitu rantai dengan kualitas tertinggi adalah entri pertama.
Penyimpanan untuk array dialokasikan oleh fungsi CertSelectCertificateChains . Untuk membebaskan memori yang dialokasikan, Anda harus terlebih dahulu merilis setiap konteks rantai individual dalam array dengan memanggil fungsi CertFreeCertificateChain . Kemudian Anda harus membebaskan memori dengan memanggil fungsi CertFreeCertificateChainList .
Nilai kembali
Jika fungsi berhasil, fungsi mengembalikan TRUE.
Jika fungsi gagal, fungsi mengembalikan nol (FALSE). Untuk informasi kesalahan yang diperluas, panggil fungsi GetLastError .
Keterangan
Kriteria pilihan dapat ditentukan melalui parameter dwFlags , melalui parameter rgpCriteria , atau melalui kedua parameter. Jika tidak ada kriteria pilihan yang ditentukan, fungsi berhasil dan mengembalikan rantai sertifikat untuk semua sertifikat di penyimpanan yang ditentukan oleh parameter hStore .
Rantai sertifikat yang dipilih diurutkan berdasarkan logika preferensi berikut:
- Lebih suka sertifikat yang merupakan sertifikat kartu pintar daripada sertifikat yang tidak berbasis kartu pintar.
- Pilih sertifikat yang memiliki periode validitas yang lebih lama (tanggal kedaluwarsa nanti.)
- Jika beberapa sertifikat memiliki tanggal kedaluwarsa yang sama, pilih sertifikat yang diterbitkan baru-baru ini.
- Jika ada dasi, lebih suka rantai yang lebih pendek.
- CERT_SELECT_BY_ISSUER_NAME
- CERT_SELECT_BY_ISSUER_ATTR
- CERT_SELECT_BY_POLICY_OID
- Buat struktur CERT_STRONG_SIGN_PARA , tentukan parameter penandatanganan kuat yang diperlukan, dan atur pointer ke struktur di anggota pStrongSignPara dari struktur CERT_CHAIN_PARA .
- Atur penunjuk ke struktur CERT_CHAIN_PARA di anggota pChainPara dari struktur CERT_SELECT_CHAIN_PARA .
- Atur penunjuk ke struktur CERT_SELECT_CHAIN_PARA dalam parameter pChainParameters dari fungsi ini (CertSelectCertificateChains)..
Saat Anda mengaktifkan pemeriksaan tanda tangan yang kuat, rantai sertifikat apa pun yang mengembalikan kesalahan CERT_TRUST_IS_NOT_SIGNATURE_VALID di bidang dwErrorStatus dari struktur CERT_TRUST_STATUS akan dilewati. (Parameter pprgpSelection menunjuk ke struktur CERT_CHAIN_CONTEXT yang, pada gilirannya, menunjuk ke struktur CERT_TRUST_STATUS .) Nilai CERT_TRUST_HAS_WEAK_SIGNATURE juga diatur untuk tanda tangan yang lemah.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | wincrypt.h |
Pustaka | Crypt32.lib |
DLL | Crypt32.dll |
Lihat juga