Bagikan melalui


Fungsi CertAddSerializedElementToStore (wincrypt.h)

Fungsi CertAddSerializedElementToStore menambahkan sertifikat berseri ,daftar pencabutan sertifikat (CRL), atau elemen daftar kepercayaan sertifikat (CTL) ke penyimpanan. Elemen berseri berisi sertifikat, CRL, atau CTL yang dikodekan dan properti yang diperluas. Properti yang diperluas dikaitkan dengan sertifikat dan bukan bagian dari sertifikat seperti yang dikeluarkan oleh otoritas sertifikasi. Properti yang diperluas tidak tersedia pada sertifikat saat digunakan pada platform non-Microsoft.

Sintaks

BOOL CertAddSerializedElementToStore(
  [in]  HCERTSTORE hCertStore,
  [in]  const BYTE *pbElement,
  [in]  DWORD      cbElement,
  [in]  DWORD      dwAddDisposition,
  [in]  DWORD      dwFlags,
  [in]  DWORD      dwContextTypeFlags,
  [out] DWORD      *pdwContextType,
  [out] const void **ppvContext
);

Parameter

[in] hCertStore

Handel penyimpanan sertifikat tempat sertifikat yang dibuat akan disimpan. Jika hCertStore adalah NULL, fungsi membuat salinan sertifikat, CRL, atau konteks CTL dengan properti yang diperluas, tetapi sertifikat, CRL, atau CTL tidak bertahan di penyimpanan apa pun.

[in] pbElement

Penunjuk ke buffer yang berisi informasi sertifikat, CRL, atau CTL yang akan diserialisasikan dan ditambahkan ke penyimpanan sertifikat.

[in] cbElement

Ukuran, dalam byte, dari penyangga pbElement .

[in] dwAddDisposition

Menentukan tindakan yang akan diambil jika sertifikat, CRL, atau CTL sudah ada di penyimpanan. Nilai disposisi yang ditentukan saat ini diperlihatkan dalam tabel berikut.

Nilai Makna
CERT_STORE_ADD_NEW
Jika sertifikat, CRL, atau CTL baru, sertifikat dibuat dan disimpan ke penyimpanan. Operasi gagal jika sertifikat identik, CRL, atau CTL sudah ada di penyimpanan. Kode kesalahan terakhir diatur ke CRYPT_E_EXISTS.
CERT_STORE_ADD_USE_EXISTING
Jika sertifikat, CRL, atau CTL baru, sertifikat ditambahkan ke penyimpanan. Jika sertifikat, CRL, atau CTL yang identik sudah ada, elemen yang ada akan digunakan. Jika ppvContext bukan NULL, konteks yang ada diduplikasi. Fungsi ini hanya menambahkan properti yang belum ada. Properti hash SHA-1 dan MD5 tidak disalin.
CERT_STORE_ADD_REPLACE_EXISTING
Jika sertifikat, CRL, atau CTL yang identik sudah ada di penyimpanan, sertifikat, CRL, atau konteks CTL yang ada dihapus sebelum membuat dan menambahkan konteks baru.
CERT_STORE_ADD_ALWAYS
Tidak ada pemeriksaan yang dilakukan untuk menentukan apakah sertifikat yang identik, CRL, atau CTL sudah ada. Elemen baru selalu dibuat. Ini dapat menyebabkan duplikat di toko. Untuk menentukan apakah elemen sudah ada di penyimpanan, panggil CertGetCRLFromStore atau CertGetSubjectCertificateFromStore.
CERT_STORE_ADD_NEWER
Jika CRL atau CTL yang cocok atau tautan ke CRL atau CTL yang cocok ada, fungsi membandingkan waktu NotBefore pada CRL atau CTL. Jika CRL atau CTL yang ada memiliki waktu NotBefore kurang dari waktu NotBefore pada elemen baru, elemen atau tautan lama diganti sama seperti CERT_STORE_ADD_REPLACE_EXISTING. Jika elemen yang ada memiliki waktu NotBefore yang lebih besar dari atau sama dengan waktu NotBefore pada elemen yang akan ditambahkan, fungsi gagal dengan GetLastError mengembalikan kode CRYPT_E_EXISTS.

Jika CRL atau CTL yang cocok atau tautan ke CRL atau CTL yang cocok tidak ditemukan di penyimpanan, elemen baru ditambahkan ke penyimpanan.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
Tindakan ini sama dengan untuk CERT_STORE_ADD_NEWER. Namun, jika CRL atau CTL yang lebih lama diganti, properti elemen yang lebih lama dimasukkan ke dalam penggantian.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Jika sertifikat yang cocok ada di penyimpanan, konteks yang ada akan dihapus sebelum membuat dan menambahkan konteks baru. Konteks baru yang ditambahkan mewarisi properti dari sertifikat yang ada.

[in] dwFlags

Dicadangkan untuk digunakan di masa mendatang dan harus nol.

[in] dwContextTypeFlags

Menentukan konteks yang dapat ditambahkan. Misalnya, untuk menambahkan sertifikat, CRL, atau CTL, atur dwContextTypeFlags ke CERT_STORE_CERTIFICATE_CONTEXT_FLAG atau CERT_STORE_CRL_CONTEXT_FLAG.

Bendera jenis konteks yang saat ini ditentukan diperlihatkan dalam tabel berikut.

Nilai Makna
CERT_STORE_ALL_CONTEXT_FLAG
Menambahkan konteks apa pun.
CERT_STORE_CERTIFICATE_CONTEXT_FLAG
Hanya menambahkan konteks sertifikat.
CERT_STORE_CRL_CONTEXT_FLAG
Hanya menambahkan konteks CRL.
CERT_STORE_CTL_CONTEXT_FLAG
Hanya menambahkan konteks CTL.

[out] pdwContextType

Penunjuk ke jenis konteks elemen berseri yang ditambahkan. Ini adalah parameter opsional dan dapat berupa NULL, yang menunjukkan bahwa aplikasi panggilan tidak memerlukan jenis konteks .

Jenis konteks yang ditentukan saat ini diperlihatkan dalam tabel berikut.

Nilai Makna
CERT_STORE_CERTIFICATE_CONTEXT
Sertifikat
CERT_STORE_CRL_CONTEXT
CRL
CERT_STORE_CTL_CONTEXT
CTL

[out] ppvContext

Penunjuk ke penunjuk ke sertifikat, CRL, atau konteks CTL yang didekodekan. Ini adalah parameter opsional dan dapat berupa NULL, yang menunjukkan bahwa aplikasi panggilan tidak memerlukan konteks sertifikat yang ditambahkan atau yang ada, CRL, atau CTL.

Jika ppvContext bukan NULL, itu harus menjadi alamat penunjuk ke CERT_CONTEXT, CRL_CONTEXT, atau CTL_CONTEXT. Ketika aplikasi selesai dengan konteks, konteks harus dibebaskan dengan menggunakan CertFreeCertificateContext untuk sertifikat, CertFreeCRLContext untuk CRL, atau CertFreeCTLContext untuk CTL.

Nilai kembali

Jika fungsi berhasil, fungsi mengembalikan bukan nol.

Jika fungsi gagal, fungsi akan mengembalikan nol. Untuk informasi kesalahan yang diperluas, hubungi GetLastError. Beberapa kemungkinan kode kesalahan mengikuti.

Menampilkan kode Deskripsi
CRYPT_E_EXISTS
Jika parameter dwAddDisposition diatur ke CERT_STORE_ADD_NEW, sertifikat, CRL, atau CTL sudah ada di penyimpanan.
E_INVALIDARG
Nilai disposisi yang tidak valid ditentukan dalam parameter dwAddDisposition .
 

Jika fungsi gagal, GetLastError dapat mengembalikan kesalahan pengodean/pendekodean Abstract Syntax Notation One (ASN.1). Untuk informasi tentang kesalahan ini, lihat Nilai Pengembalian Pengodean/Pendekodean ASN.1.

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

CertSerializeCRLStoreElement

CertSerializeCertificateStoreElement

Fungsi Pemeliharaan Penyimpanan Sertifikat dan Sertifikat