Fungsi CertAddCertificateContextToStore (wincrypt.h)

Fungsi CertAddCertificateContextToStore menambahkan konteks sertifikat ke penyimpanan sertifikat.

Sintaks

BOOL CertAddCertificateContextToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            PCCERT_CONTEXT pCertContext,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppStoreContext
);

Parameter

[in] hCertStore

Menangani penyimpanan sertifikat.

[in] pCertContext

Penunjuk ke struktur CERT_CONTEXT untuk ditambahkan ke penyimpanan.

[in] dwAddDisposition

Menentukan tindakan yang akan diambil jika sertifikat yang cocok atau tautan ke sertifikat yang cocok sudah ada di penyimpanan. Nilai disposisi yang ditentukan saat ini dan penggunaannya adalah sebagai berikut.

Nilai Makna
CERT_STORE_ADD_ALWAYS
Fungsi ini tidak membuat pemeriksaan untuk sertifikat yang cocok atau tautan yang ada ke sertifikat yang cocok. Sertifikat baru selalu ditambahkan ke penyimpanan. Ini dapat menyebabkan duplikat di toko.
CERT_STORE_ADD_NEW
Jika sertifikat yang cocok atau tautan ke sertifikat yang cocok ada, operasi gagal. GetLastError mengembalikan kode CRYPT_E_EXISTS.
CERT_STORE_ADD_NEWER
Jika sertifikat yang cocok atau tautan ke sertifikat yang cocok ada dan waktu NotBefore dari konteks yang ada sama dengan atau lebih besar dari waktu NotBefore dari konteks baru yang ditambahkan, operasi gagal dan GetLastError mengembalikan kode CRYPT_E_EXISTS.

Jika waktu NotBefore dari konteks yang ada kurang dari waktu NotBefore dari konteks baru yang ditambahkan, sertifikat atau tautan yang ada akan dihapus dan sertifikat baru dibuat dan ditambahkan ke penyimpanan. Jika sertifikat yang cocok atau tautan ke sertifikat yang cocok tidak ada, tautan baru ditambahkan.

Jika daftar pencabutan sertifikat (CRL) atau daftar kepercayaan sertifikat (CTL) sedang dibandingkan, waktu ThisUpdate digunakan.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
Jika sertifikat yang cocok atau tautan ke sertifikat yang cocok ada dan waktu NotBefore dari konteks yang ada sama dengan atau lebih besar dari waktu NotBefore dari konteks baru yang ditambahkan, operasi gagal dan GetLastError mengembalikan kode CRYPT_E_EXISTS.

Jika waktu NotBefore dari konteks yang ada kurang dari waktu NotBefore dari konteks baru yang ditambahkan, konteks yang ada akan dihapus sebelum membuat dan menambahkan konteks baru. Konteks baru yang ditambahkan mewarisi properti dari sertifikat yang ada.

Jika CRL atau CTL sedang dibandingkan, waktu ThisUpdate digunakan.

CERT_STORE_ADD_REPLACE_EXISTING
Jika ada tautan ke sertifikat yang cocok, sertifikat atau tautan yang sudah ada akan dihapus dan sertifikat baru dibuat dan ditambahkan ke penyimpanan. Jika sertifikat yang cocok atau tautan ke sertifikat yang cocok tidak ada, tautan baru ditambahkan.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Jika sertifikat yang cocok ada di penyimpanan, konteks yang ada tidak diganti. Konteks yang ada mewarisi properti dari sertifikat baru.
CERT_STORE_ADD_USE_EXISTING
Jika sertifikat yang cocok atau tautan ke sertifikat yang cocok ada, sertifikat atau tautan yang ada digunakan dan properti dari sertifikat baru ditambahkan. Fungsi ini tidak gagal, tetapi tidak menambahkan konteks baru. Jika pCertContext bukan NULL, konteks yang ada diduplikasi.

Jika sertifikat yang cocok atau tautan ke sertifikat yang cocok tidak ada, sertifikat baru ditambahkan.

[out, optional] ppStoreContext

Penunjuk ke penunjuk ke salinan yang akan dibuat dari sertifikat yang ditambahkan ke penyimpanan.

Parameter ppStoreContext dapat berupa NULL, menunjukkan bahwa aplikasi panggilan tidak memerlukan salinan sertifikat yang ditambahkan. Jika salinan dibuat, salinan harus dikosongkan dengan menggunakan CertFreeCertificateContext.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah TRUE.

Jika fungsi gagal, nilai yang dikembalikan adalah FALSE. Untuk informasi kesalahan yang diperluas, hubungi GetLastError. Beberapa kemungkinan kode kesalahan mengikuti.

Menampilkan kode Deskripsi
CRYPT_E_EXISTS
Nilai ini dikembalikan jika CERT_STORE_ADD_NEW diatur dan sertifikat sudah ada di penyimpanan, atau jika CERT_STORE_ADD_NEWER diatur dan sertifikat ada di penyimpanan dengan tanggal NotBefore yang lebih besar dari atau sama dengan tanggal NotBefore pada sertifikat yang akan ditambahkan.
E_INVALIDARG
Nilai disposisi yang tidak valid ditentukan dalam parameter dwAddDisposition .
 

Kesalahan dari fungsi yang disebut, CertAddEncodedCertificateToStore dan CertSetCertificateContextProperty, dapat disebarluaskan ke fungsi ini.

Keterangan

Konteks sertifikat tidak diduplikasi menggunakan CertDuplicateCertificateContext. Sebagai gantinya, fungsi membuat salinan konteks baru dan menambahkannya ke penyimpanan.

Selain sertifikat yang dikodekan, CertDuplicateCertificateContext juga menyalin properti konteks, dengan pengecualian properti CERT_KEY_PROV_HANDLE_PROP_ID dan CERT_KEY_CONTEXT_PROP_ID.

Untuk menghapus konteks sertifikat dari penyimpanan sertifikat, gunakan fungsi CertDeleteCertificateFromStore .

Catatan Urutan konteks sertifikat mungkin tidak dipertahankan dalam penyimpanan. Untuk mengakses sertifikat tertentu, Anda harus melakukan iterasi di seluruh sertifikat di penyimpanan.
 

Persyaratan

Persyaratan Nilai
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

CertAddEncodedCertificateToStore

CertSetCertificateContextProperty

Fungsi Sertifikat