Fungsi CertGetIssuerCertificateFromStore (wincrypt.h)

Fungsi CertGetIssuerCertificateFromStore mengambil konteks sertifikat dari penyimpanan sertifikat untuk penerbit pertama atau berikutnya dari sertifikat subjek yang ditentukan. Fungsi Verifikasi Rantai Sertifikat baru direkomendasikan alih-alih penggunaan fungsi ini.

Sintaks

PCCERT_CONTEXT CertGetIssuerCertificateFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in]           PCCERT_CONTEXT pSubjectContext,
  [in, optional] PCCERT_CONTEXT pPrevIssuerContext,
  [in, out]      DWORD          *pdwFlags
);

Parameter

[in] hCertStore

Menangani penyimpanan sertifikat.

[in] pSubjectContext

Penunjuk ke struktur CERT_CONTEXT yang berisi informasi subjek. Parameter ini dapat diperoleh dari penyimpanan sertifikat apa pun atau dapat dibuat oleh aplikasi panggilan menggunakan fungsi CertCreateCertificateContext .

[in, optional] pPrevIssuerContext

Penunjuk ke struktur CERT_CONTEXT yang berisi informasi penerbit. Penerbit dapat memiliki beberapa sertifikat, terutama ketika periode validitas akan berubah. Parameter ini harus NULL pada panggilan untuk mendapatkan sertifikat penerbit pertama. Untuk mendapatkan sertifikat berikutnya untuk penerbit, atur pPrevIssuerContext ke struktur CERT_CONTEXT yang dikembalikan oleh panggilan sebelumnya.

Fungsi ini membebaskan CERT_CONTEXT yang dirujuk oleh nilai non-NULL dari parameter ini.

[in, out] pdwFlags

Bendera berikut mengaktifkan pemeriksaan verifikasi pada sertifikat yang dikembalikan. Mereka dapat digabungkan menggunakan operasi bitwise-OR untuk mengaktifkan beberapa verifikasi.

Nilai Makna
CERT_STORE_NO_CRL_FLAG
Menunjukkan tidak ada CRL yang cocok yang ditemukan.
CERT_STORE_NO_ISSUER_FLAG
Menunjukkan tidak ada sertifikat pengeluar sertifikat yang ditemukan.
CERT_STORE_REVOCATION_FLAG
Memeriksa apakah sertifikat subjek ada dalam daftar pencabutan penerbit.
CERT_STORE_SIGNATURE_FLAG
Menggunakan kunci umum dalam sertifikat penerbit untuk memverifikasi tanda tangan pada sertifikat subjek.
CERT_STORE_TIME_VALIDITY_FLAG
Mendapatkan waktu saat ini dan memverifikasi bahwa waktu tersebut berada dalam periode validitas sertifikat subjek.
 

Jika pemeriksaan verifikasi jenis yang diaktifkan berhasil, benderanya diatur ke nol. Jika gagal, benderanya tetap ditetapkan saat kembali. Untuk CERT_STORE_REVOCATION_FLAG, verifikasi berhasil jika fungsi tidak menemukan CRL yang terkait dengan sertifikat subjek.

Jika CERT_STORE_REVOCATION_FLAG diatur dan penerbit tidak memiliki CRL di penyimpanan, CERT_STORE_NO_CRL_FLAG diatur dan CERT_STORE_REVOCATION_FLAG tetap ditetapkan.

Jika CERT_STORE_SIGNATURE_FLAG atau CERT_STORE_REVOCATION_FLAG diatur, CERT_STORE_NO_ISSUER_FLAG diatur jika fungsi tidak menemukan sertifikat penerbit di penyimpanan. Untuk mengetahui detail selengkapnya, harap lihat Keterangan.

Dalam kasus kegagalan pemeriksaan verifikasi, pointer ke CERT_CONTEXT penerbit masih dikembalikan dan GetLastError tidak diperbarui.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah penunjuk ke pengeluar sertifikat baca-saja CERT_CONTEXT.

Jika fungsi gagal dan sertifikat pengeluar sertifikat pertama atau berikutnya tidak ditemukan, nilai yang dikembalikan adalah NULL.

Hanya struktur CERT_CONTEXT terakhir yang dikembalikan yang harus dibebaskan dengan memanggil CertFreeCertificateContext. Ketika CERT_CONTEXT yang dikembalikan dari satu panggilan ke fungsi disediakan sebagai parameter pPrevIssuerContext pada panggilan berikutnya, konteks dibebaskan sebagai bagian dari tindakan fungsi.

Untuk informasi kesalahan yang diperluas, hubungi GetLastError. Beberapa kemungkinan kode kesalahan mengikuti.

Menampilkan kode Deskripsi
CRYPT_E_NOT_FOUND
Tidak ada pengeluar sertifikat yang ditemukan untuk sertifikat subjek.
CRYPT_E_SELF_SIGNED
Sertifikat penerbit sama dengan sertifikat subjek. Ini adalah sertifikat akar yang ditandatangani sendiri.
E_INVALIDARG
Handel dalam parameter hCertStore tidak sama dengan konteks sertifikat yang diarahkan oleh parameter pPrevIssuerContext , atau bendera yang tidak didukung diatur dalam pdwFlags.

Keterangan

Penunjuk yang dikembalikan dibebaskan ketika diteruskan sebagai parameter pPrevIssuerContext pada panggilan berikutnya ke fungsi. Jika tidak, pointer harus dibebaskan secara eksplisit dengan memanggil CertFreeCertificateContext. pPrevIssuerContext yang bukan NULL selalu dibebaskan oleh CertGetIssuerCertificateFromStore menggunakan panggilan ke CertFreeCertificateContext, bahkan jika ada kesalahan dalam fungsi.

CertDuplicateCertificateContext dapat dipanggil untuk membuat duplikat sertifikat penerbit.

Nilai heksadesimal untuk dwFlags dapat digabungkan menggunakan operasi bitwise-OR untuk mengaktifkan beberapa verifikasi. Misalnya, untuk mengaktifkan validitas tanda tangan dan waktu, nilai 0x00000003 diteruskan dalam dwFlags pada input. Dalam hal ini, jika verifikasi CERT_STORE_SIGNATURE_FLAG berhasil tetapi verifikasi CERT_STORE_TIME_VALIDITY_FLAG gagal, dwFlags mengembalikan sebagai 0x00000002 pada output.

Persyaratan

   
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header wincrypt.h
Pustaka Crypt32.lib
DLL Crypt32.dll

Lihat juga

Fungsi Sertifikat