Fungsi CertOpenStore (wincrypt.h)

Fungsi CertOpenStore membuka penyimpanan sertifikat dengan menggunakan jenis penyedia penyimpanan tertentu. Meskipun fungsi ini dapat membuka penyimpanan sertifikat untuk sebagian besar tujuan, CertOpenSystemStore disarankan untuk membuka penyimpanan sertifikat yang paling umum. CertOpenStore diperlukan untuk opsi yang lebih kompleks dan kasus khusus.

Sintaks

HCERTSTORE CertOpenStore(
  [in] LPCSTR            lpszStoreProvider,
  [in] DWORD             dwEncodingType,
  [in] HCRYPTPROV_LEGACY hCryptProv,
  [in] DWORD             dwFlags,
  [in] const void        *pvPara
);

Parameter

[in] lpszStoreProvider

Penunjuk ke string ANSI yang dihentikan null yang berisi jenis penyedia penyimpanan.

Nilai berikut mewakili jenis penyimpanan yang telah ditentukan sebelumnya. Jenis penyedia toko menentukan konten parameter pvPara dan penggunaan dan arti kata tinggi dari parameter dwFlags . Penyedia penyimpanan tambahan dapat diinstal atau didaftarkan dengan menggunakan fungsi CryptInstallOIDFunctionAddress atau CryptRegisterOIDFunction . Untuk informasi selengkapnya tentang menambahkan penyedia toko, lihat Memperluas Fungsionalitas CertOpenStore.

Nilai Makna
CERT_STORE_PROV_COLLECTION
sz_CERT_STORE_PROV_COLLECTION
Membuka toko yang akan menjadi koleksi toko lain. Penyimpanan ditambahkan atau dihapus dari koleksi dengan menggunakan CertAddStoreToCollection dan CertRemoveStoreFromCollection. Saat penyimpanan ditambahkan ke koleksi, semua sertifikat, CRL, dan CCL di penyimpanan tersebut tersedia untuk pencarian atau enumerasi penyimpanan koleksi.

Kata tinggi dwFlags diatur ke nol.

nilai pvPara: Parameter pvPara harus NULL.

CERT_STORE_PROV_FILE
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL yang dibaca dari file terbuka tertentu. Penyedia ini mengharapkan file hanya berisi penyimpanan berseri dan bukan pesan bertanda tangan PKCS #7 atau satu sertifikat yang dikodekan.

Penunjuk file harus diposisikan di awal informasi penyimpanan berseri. Setelah data di penyimpanan serial dimuat ke penyimpanan sertifikat, penunjuk file diposisikan di awal data apa pun yang dapat mengikuti data penyimpanan berseri dalam file. Jika CERT_FILE_STORE_COMMIT_ENABLE diatur dalam dwFlags, handel file diduplikasi dan penyimpanan selalu diterapkan sebagai penyimpanan berseri. File tidak ditutup ketika penyimpanan ditutup.

nilai pvPara: Parameter pvPara harus berisi pointer ke handel file yang dibuka dengan menggunakan CreateFile.

CERT_STORE_PROV_FILENAME_A
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari file. Penyedia membuka file dan pertama-tama mencoba membaca file sebagai penyimpanan serial, lalu sebagai pesan bertanda tangan PKCS #7, dan akhirnya sebagai satu sertifikat yang dikodekan.

Parameter dwEncodingType harus berisi jenis pengodean yang akan digunakan dengan pesan dan sertifikat. Jika file berisi sertifikat yang dikodekan X.509 , operasi terbuka gagal dan panggilan ke fungsi GetLastError akan mengembalikan ERROR_ACCESS_DENIED. Jika bendera CERT_FILE_STORE_COMMIT_ENABLE diatur dalam dwFlags, nilai dwCreationDisposition yang diteruskan ke CreateFile adalah sebagai berikut:

  • Jika bendera CERT_STORE_CREATE_NEW_FLAG diatur, CreateFile menggunakan CREATE_NEW.
  • Jika bendera CERT_STORE_OPEN_EXISTING_FLAG diatur, CreateFile menggunakan OPEN_EXISTING.
  • Untuk semua pengaturan dwFlags lainnya, CreateFile menggunakan OPEN_ALWAYS.

Jika dwFlags menyertakan CERT_FILE_STORE_COMMIT_ENABLE, file diterapkan sebagai PKCS #7 atau penyimpanan serial tergantung pada jenis file yang dibuka. Jika file kosong atau jika nama file memiliki ekstensi .p7c atau .spc, file diterapkan sebagai PKCS #7. Jika tidak, file diterapkan sebagai penyimpanan berseri.

Nilai pvPara: Parameter pvPara harus berisi pointer ke string ANSI yang dihentikan null yang berisi nama file yang sudah ada dan tidak dibuka.

CERT_STORE_PROV_FILENAME(_W)
sz_CERT_STORE_PROV_FILENAME(_W)
Sama seperti CERT_STORE_PROV_FILENAME_A.

Nilai pvPara: Parameter pvPara harus berisi pointer ke string Unicode yang dihentikan null yang berisi nama file yang sudah ada dan tidak dibuka.

CERT_STORE_PROV_LDAP(_W)
sz_CERT_STORE_PROV_LDAP(_W)
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari hasil kueri LDAP.

Untuk melakukan operasi tulis di penyimpanan, string kueri harus menentukan kueri BASE tanpa filter dan atribut tunggal.

Nilai pvPara: Jika parameter dwFlags berisi CERT_LDAP_STORE_OPENED_FLAG, atur pvPara ke alamat struktur CERT_LDAP_STORE_OPENED_PARA yang menentukan sesi LDAP yang ditetapkan untuk digunakan.

Jika tidak, atur pvPara untuk menunjuk ke string Unicode yang dihentikan null yang berisi string kueri LDAP. Untuk informasi selengkapnya tentang string kueri LDAP, lihat Dialek LDAP.

CERT_STORE_PROV_MEMORY
sz_CERT_STORE_PROV_MEMORY
Membuat penyimpanan sertifikat dalam memori cache. Tidak ada sertifikat, daftar pencabutan sertifikat (CRL), atau daftar kepercayaan sertifikat (CCL) yang awalnya dimuat ke dalam penyimpanan. Biasanya digunakan untuk membuat penyimpanan sementara.

Setiap penambahan sertifikat, CRL, atau CCL atau perubahan properti sertifikat, CRL, atau CCL di penyimpanan memori tidak disimpan secara otomatis. Mereka dapat disimpan ke file atau ke BLOB memori dengan menggunakan CertSaveStore.

nilai pvPara: Parameter pvPara tidak digunakan.

CERT_STORE_PROV_MSG
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari pesan kriptografi yang ditentukan. Parameter dwEncodingType harus berisi jenis pengodean yang digunakan dengan pesan dan sertifikat.

Nilai pvPara: Parameter pvPara berisi handel HCRYPTMSG dari pesan yang dikodekan, dikembalikan oleh panggilan ke CryptMsgOpenToDecode.

CERT_STORE_PROV_PHYSICAL(_W)
sz_CERT_STORE_PROV_PHYSICAL(_W)
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari penyimpanan fisik tertentu yang merupakan anggota penyimpanan sistem logis.

Dua nama dipisahkan dengan garis miring terbelakang (\), misalnya "Root.Default". Di sini, "Root" adalah nama penyimpanan sistem dan ". Default" adalah nama penyimpanan fisik. Nama penyimpanan sistem dan fisik tidak boleh berisi garis miring terbelakang. Tingginya kata dwFlags menunjukkan lokasi penyimpanan sistem, biasanya CERT_SYSTEM_STORE_CURRENT_USER. Untuk informasi selengkapnya, lihat dwFlags nanti dalam topik ini dan lihat Lokasi Penyimpanan Sistem. Beberapa lokasi toko fisik dapat dibuka dari jarak jauh.

Nilai pvPara: Parameter pvPara menunjuk ke string Unicode yang dihentikan null yang berisi nama penyimpanan sistem dan nama fisik.

CERT_STORE_PROV_PKCS7
sz_CERT_STORE_PROV_PKCS7
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari pesan bertanda tangan PKCS #7 yang dikodekan. Parameter dwEncodingType harus menentukan jenis pengodean yang akan digunakan dengan pesan dan sertifikat.

Nilai pvPara: Parameter pvPara menunjuk ke struktur CRYPT_DATA_BLOB yang mewakili pesan yang dikodekan.

CERT_STORE_PROV_PKCS12
sz_CERT_STORE_PROV_PKCS12
Menginisialisasi penyimpanan dengan konten paket PKCS #12 .

Jika paket PKCS #12 dilindungi dengan kata sandi NULL atau kosong, fungsi ini akan berhasil membuka penyimpanan.

Dimulai dengan Windows 8 dan Windows Server 2012, jika kata sandi yang disematkan dalam paket PFX dilindungi ke perwakilan Direktori Aktif (AD) dan pengguna saat ini, sebagai anggota prinsipal tersebut, memiliki izin untuk mendekripsi kata sandi, fungsi ini akan berhasil membuka penyimpanan. Untuk informasi selengkapnya, lihat parameter pvPara dan bendera PKCS12_PROTECT_TO_DOMAIN_SIDS fungsi PFXExportCertStoreEx .

Anda dapat melindungi kata sandi PFX ke prinsip ad yang dimulai di Windows 8 dan Windows Server 2012.

Nilai pvPara: Parameter pvPara menunjuk ke struktur CRYPT_DATA_BLOB yang mewakili paket PKCS #12.

CERT_STORE_PROV_REG
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari subkuntang registri.

Penyedia ini membuka atau membuat sertifikat subkunci registri, CRL, dan CCL di bawah kunci yang diteruskan di pvPara. Kunci input tidak ditutup oleh penyedia. Sebelum kembali, penyedia membuka salinan kuncinya sendiri yang diteruskan di pvPara. Jika CERT_STORE_READONLY_FLAG diatur dalam kata rendah dwFlags, subkuntang registri dibuka dengan menggunakan RegOpenKey dengan KEY_READ_ACCESS. Jika tidak, subkunci registri dibuat dengan menggunakan RegCreateKey dengan KEY_ALL_ACCESS. Setiap perubahan pada konten penyimpanan yang dibuka segera dipertahankan ke registri. Namun, jika CERT_STORE_READONLY_FLAG diatur dalam kata rendah dwFlags, setiap upaya untuk menambahkan ke konten toko atau untuk mengubah properti konteks menghasilkan kesalahan dengan GetLastError mengembalikan kode E_ACCESSDENIED.

Nilai pvPara: Parameter pvPara berisi handel kunci registri terbuka.

CERT_STORE_PROV_SERIALIZED
sz_CERT_STORE_PROV_SERIALIZED
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari lokasi memori yang berisi penyimpanan serial.

nilai pvPara: Parameter pvPara menunjuk ke struktur CRYPT_DATA_BLOB yang berisi BLOB memori berseri.

CERT_STORE_PROV_SMART_CARD(_W)
sz_CERT_STORE_PROV_SMART_CARD(_W)
Saat ini tidak digunakan.
CERT_STORE_PROV_SYSTEM_A
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari penyimpanan sistem yang ditentukan.

Penyimpanan sistem adalah penyimpanan koleksi logis yang terdiri dari satu atau beberapa penyimpanan fisik. Penyimpanan fisik yang terkait dengan penyimpanan sistem terdaftar dengan fungsi CertRegisterPhysicalStore . Setelah penyimpanan sistem dibuka, semua penyimpanan fisik yang terkait dengannya juga dibuka oleh panggilan ke CertOpenStore dan ditambahkan ke koleksi penyimpanan sistem dengan menggunakan fungsi CertAddStoreToCollection . Kata tinggi dwFlags menunjukkan lokasi penyimpanan sistem, biasanya diatur ke CERT_SYSTEM_STORE_CURRENT_USER. Untuk detail tentang lokasi registri, lihat dwFlags nanti di topik ini dan Lokasi Penyimpanan Sistem. Beberapa lokasi penyimpanan sistem dapat dibuka dari jarak jauh; untuk informasi selengkapnya, lihat Lokasi Penyimpanan Sistem.

Nilai pvPara: Parameter pvPara menunjuk ke string ANSI yang dihentikan null yang berisi nama penyimpanan sistem, seperti "My" atau "Root".

CERT_STORE_PROV_SYSTEM(_W)
sz_CERT_STORE_PROV_SYSTEM(_W)
Sama seperti CERT_STORE_PROV_SYSTEM_A.

nilai pvPara: Parameter pvPara menunjuk ke string Unicode yang dihentikan null yang berisi nama penyimpanan sistem, seperti "My" atau "Root".

CERT_STORE_PROV_SYSTEM_REGISTRY_A
Menginisialisasi penyimpanan dengan sertifikat, CRL, dan CCL dari penyimpanan registri fisik. Penyimpanan fisik tidak dibuka sebagai penyimpanan koleksi. Enumerasi dan pencarian hanya melalui sertifikat, CRL, dan CTL di satu penyimpanan fisik.

Kata tinggi dwFlags menunjukkan lokasi penyimpanan sistem, biasanya diatur ke CERT_SYSTEM_STORE_CURRENT_USER. Untuk informasi selengkapnya, lihat dwFlags nanti dalam topik ini. Beberapa lokasi penyimpanan sistem dapat dibuka dari jarak jauh; untuk informasi selengkapnya, lihat Lokasi Penyimpanan Sistem.

Nilai pvPara: Parameter pvPara menunjuk ke string ANSI yang dihentikan null yang berisi nama penyimpanan sistem, seperti "My" atau "Root".

CERT_STORE_PROV_SYSTEM_REGISTRY(_W)
sz_CERT_STORE_PROV_SYSTEM_REGISTRY(_W)
Sama seperti CERT_STORE_PROV_SYSTEM_REGISTRY_A.

nilai pvPara: Parameter pvPara menunjuk ke string Unicode yang dihentikan null yang berisi nama penyimpanan sistem, seperti "My" atau "Root".

[in] dwEncodingType

Menentukan jenis pengodean sertifikat dan jenis pengodean pesan. Pengodean hanya digunakan ketika parameter dwSaveAs dari fungsi CertSaveStore berisi CERT_STORE_SAVE_AS_PKCS7. Jika tidak, parameter dwMsgAndCertEncodingType tidak digunakan.

Parameter ini hanya berlaku ketika jenis penyedia CERT_STORE_PROV_MSG, CERT_STORE_PROV_PKCS7, atau CERT_STORE_PROV_FILENAME ditentukan dalam parameter lpszStoreProvider . Untuk semua jenis penyedia lainnya, parameter ini tidak digunakan dan harus diatur ke nol.

Parameter ini bisa menjadi kombinasi dari satu atau beberapa nilai berikut.

Nilai Makna
PKCS_7_ASN_ENCODING
65536 (0x10000)
Menentukan pengodean pesan PKCS #7.
X509_ASN_ENCODING
1 (0x1)
Menentukan pengodean sertifikat X.509.

[in] hCryptProv

Parameter ini tidak digunakan dan harus diatur ke NULL.

Windows Server 2003 dan Windows XP: Handel ke penyedia kriptografi. Meneruskan NULL untuk parameter ini menyebabkan penyedia default yang sesuai untuk digunakan. Disarankan menggunakan penyedia default. Penyedia kriptografi default atau yang ditentukan digunakan untuk semua fungsi penyimpanan yang memverifikasi tanda tangan sertifikat subjek atau CRL. Jenis data parameter ini adalah HCRYPTPROV.

[in] dwFlags

Nilai-nilai ini terdiri dari nilai kata tinggi dan kata rendah yang digabungkan dengan menggunakan operasi bitwise-OR.

Bagian kata rendah dari dwFlags mengontrol berbagai karakteristik umum penyimpanan sertifikat yang dibuka. Bagian ini dapat digunakan dengan semua jenis penyedia penyimpanan. Bagian kata rendah dari dwFlags dapat menjadi salah satu nilai berikut.

Nilai Makna
CERT_STORE_BACKUP_RESTORE_FLAG
Gunakan SE_BACKUP_NAME utas dan hak istimewa SE_RESTORE_NAME untuk membuka registri atau penyimpanan sistem berbasis file. Jika utas tidak memiliki hak istimewa ini, fungsi ini harus gagal dengan kesalahan akses ditolak.
CERT_STORE_CREATE_NEW_FLAG
Penyimpanan baru dibuat jika tidak ada. Fungsi gagal jika penyimpanan sudah ada.

Jika tidak CERT_STORE_OPEN_EXISTING_FLAG atau CERT_STORE_CREATE_NEW_FLAG diatur, penyimpanan akan dibuka jika ada atau dibuat dan dibuka jika belum ada.

CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG
Tangguhkan penutupan penyedia toko sampai semua sertifikat, CRL, atau CCL yang diperoleh dari toko tidak lagi digunakan. Toko ini benar-benar ditutup ketika sertifikat terakhir, CRL, atau CTL yang diperoleh dari toko dibebaskan. Setiap perubahan yang dilakukan pada properti sertifikat, CRL, dan CTL ini, bahkan setelah panggilan ke CertCloseStore, dipertahankan.

Jika bendera ini tidak diatur dan sertifikat, CRL, atau CCL yang diperoleh dari penyimpanan masih digunakan, setiap perubahan pada properti sertifikat, CRL, dan CCL tersebut tidak akan dipertahankan.

Jika fungsi ini dipanggil dengan CERT_CLOSE_STORE_FORCE_FLAG, CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG diabaikan.

Ketika bendera ini diatur dan nilai parameter hCryptProvnon-NULL diteruskan, penyedia tersebut akan terus digunakan bahkan setelah panggilan ke fungsi ini.

CERT_STORE_DELETE_FLAG
Penyimpanan dihapus alih-alih dibuka. Fungsi ini mengembalikan NULL untuk keberhasilan dan kegagalan penghapusan. Untuk menentukan keberhasilan penghapusan, panggil GetLastError, yang mengembalikan nol jika penyimpanan dihapus dan nilai bukan nol jika tidak dihapus.
CERT_STORE_ENUM_ARCHIVED_FLAG
Biasanya, enumerasi semua sertifikat di penyimpanan akan mengabaikan sertifikat apa pun dengan kumpulan properti CERT_ARCHIVED_PROP_ID . Jika bendera ini diatur, enumerasi sertifikat di penyimpanan akan berisi semua sertifikat di penyimpanan, termasuk yang memiliki properti CERT_ARCHIVED_PROP_ID .
CERT_STORE_MAXIMUM_ALLOWED_FLAG
Buka penyimpanan dengan sekumpulan maksimum izin yang diizinkan. Jika bendera ini ditentukan, penyimpanan registri pertama kali dibuka dengan akses tulis dan jika gagal, mereka dibuka kembali dengan akses baca-saja.
CERT_STORE_NO_CRYPT_RELEASE_FLAG
Bendera ini tidak digunakan ketika parameter hCryptProv adalah NULL. Bendera ini hanya valid ketika handel CSP non-NULL diteruskan sebagai parameter hCryptProv . Mengatur bendera ini mencegah rilis otomatis CSP nondefault saat penyimpanan sertifikat ditutup.
CERT_STORE_OPEN_EXISTING_FLAG
Hanya buka penyimpanan yang ada. Jika penyimpanan tidak ada, fungsi gagal.
CERT_STORE_READONLY_FLAG
Buka penyimpanan dalam mode baca-saja. Setiap upaya untuk mengubah isi penyimpanan akan mengakibatkan kesalahan. Ketika bendera ini diatur dan penyedia penyimpanan berbasis registri sedang digunakan, subkunjung registri dibuka dengan menggunakan RegOpenKey dengan KEY_READ_ACCESS. Jika tidak, subkunci registri dibuat dengan menggunakan RegCreateKey dengan KEY_ALL_ACCESS.
CERT_STORE_SET_LOCALIZED_NAME_FLAG
Jika bendera ini didukung, penyedia mengatur properti CERT_STORE_LOCALIZED_NAME_PROP_ID toko. Nama yang dilokalkan dapat diambil dengan memanggil fungsi CertGetStoreProperty dengan dwPropID diatur ke CERT_STORE_LOCALIZED_NAME_PROP_ID. Bendera ini didukung untuk penyedia jenis CERT_STORE_PROV_FILENAME, CERT_STORE_PROV_SYSTEM, CERT_STORE_PROV_SYSTEM_REGISTRY, dan CERT_STORE_PROV_PHYSICAL_W.
CERT_STORE_SHARE_CONTEXT_FLAG
Saat membuka penyimpanan beberapa kali, Anda dapat mengatur bendera ini untuk memastikan penggunaan memori yang efisien dengan menggunakan kembali memori untuk bagian sertifikat, CRL, atau konteks CTL yang dikodekan di seluruh instans toko yang dibuka.
CERT_STORE_UPDATE_KEYID_FLAG
Lists pengidentifikasi kunci ada dalam CurrentUser dan LocalMachine. Pengidentifikasi kunci ini memiliki properti seperti properti sertifikat. Jika CERT_STORE_UPDATE_KEYID_FLAG diatur, maka untuk setiap pengidentifikasi kunci di lokasi penyimpanan yang memiliki properti CERT_KEY_PROV_INFO_PROP_ID , properti tersebut secara otomatis diperbarui dari properti pengidentifikasi kunci CERT_KEY_PROV_INFO_PROP_ID atau CERT_KEY_IDENTIFIER_PROP_ID sertifikat yang terkait dengan pengidentifikasi kunci tersebut.
 

Jenis penyedia CERT_STORE_PROV_SYSTEM, CERT_STORE_PROV_SYSTEM_REGISTRY, dan CERT_STORE_PROV_PHYSICAL menggunakan kata-kata tinggi dwFlags berikut untuk menentukan lokasi registri penyimpanan sistem:

CERT_SYSTEM_STORE_CURRENT_SERVICE

CERT_SYSTEM_STORE_CURRENT_USER

CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY

CERT_SYSTEM_STORE_LOCAL_MACHINE

CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE

CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY

CERT_SYSTEM_STORE_SERVICES

CERT_SYSTEM_STORE_USERS

Secara default, lokasi penyimpanan sistem dibuka relatif terhadap kunci registri HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, atau HKEY_USERS yang telah ditentukan sebelumnya. Untuk informasi selengkapnya, lihat Lokasi Penyimpanan Sistem.

Bendera kata tinggi berikut mengambil alih perilaku default ini.

Nilai Makna
CERT_SYSTEM_STORE_RELOCATE_FLAG
Saat diatur, pvPara harus berisi penunjuk ke struktur CERT_SYSTEM_STORE_RELOCATE_PARA daripada string. Struktur menunjukkan nama penyimpanan dan lokasinya di registri.
CERT_SYSTEM_STORE_UNPROTECTED_FLAG
Secara default, ketika penyimpanan "Root" CurrentUser dibuka, akar SystemRegistry apa pun yang tidak ada di daftar akar yang dilindungi dihapus dari cache sebelum fungsi ini kembali. Ketika bendera ini diatur, default ini ditimpa dan semua akar di SystemRegistry dikembalikan dan tidak ada pemeriksaan daftar akar yang dilindungi yang dibuat.
 

Penyedia CERT_STORE_PROV_REGISTRY menggunakan bendera kata tinggi berikut.

Nilai Makna
CERT_REGISTRY_STORE_REMOTE_FLAG
pvPara berisi handel ke kunci registri pada komputer jarak jauh. Untuk mengakses kunci registri pada komputer jarak jauh, izin keamanan pada komputer jarak jauh harus diatur untuk mengizinkan akses. Untuk informasi selengkapnya, lihat Keterangan.
CERT_REGISTRY_STORE_SERIALIZED_FLAG
Penyedia CERT_STORE_PROV_REG menyimpan sertifikat, CRL, dan CCL dalam satu subkunci penyimpanan berseri alih-alih melakukan operasi penyimpanan default. Defaultnya adalah bahwa setiap sertifikat, CRL, atau CTL disimpan sebagai subkuntang registri terpisah di bawah subkuntang yang sesuai.

Bendera ini terutama digunakan untuk penyimpanan yang diunduh dari templat kebijakan grup (GPT), seperti penyimpanan CurrentUserGroupPolicy dan LocalMachineGroupPolicy.

Saat CERT_REGISTRY_STORE_SERIALIZED_FLAG diatur, penambahan penyimpanan, penghapusan, atau perubahan properti tidak dipertahankan hingga ada panggilan ke CertCloseStore atau CertControlStore menggunakan CERT_STORE_CTRL_COMMIT.

 

Jenis penyedia CERT_STORE_PROV_FILE dan CERT_STORE_PROV_FILENAME menggunakan bendera kata tinggi berikut.

Nilai Makna
CERT_FILE_STORE_COMMIT_ENABLE
Mengatur bendera ini menerapkan penambahan apa pun ke penyimpanan atau perubahan apa pun yang dilakukan pada properti konteks di penyimpanan ke penyimpanan file baik ketika CertCloseStore dipanggil atau ketika CertControlStore dipanggil dengan CERT_STORE_CONTROL_COMMIT.

CertOpenStore gagal dengan E_INVALIDARG jika CERT_FILE_STORE_COMMIT_ENABLE dan CERT_STORE_READONLY_FLAG diatur dalam dwFlags.

 

Jenis penyedia CERT_STORE_PROV_LDAP menggunakan bendera kata tinggi berikut.

Nilai Makna
CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG
Melakukan pencarian DNS khusus A-Record pada URL bernama dalam parameter pvPara . Ini mencegah kueri DNS palsu dihasilkan saat menyelesaikan nama host URL. Gunakan bendera ini saat meneruskan nama host dibandingkan dengan nama domain untuk parameter pvPara .
CERT_LDAP_STORE_OPENED_FLAG
Gunakan bendera ini untuk menggunakan sesi LDAP yang ada. Ketika bendera ini ditentukan, parameter pvPara adalah alamat struktur CERT_LDAP_STORE_OPENED_PARA yang berisi informasi tentang sesi LDAP yang akan digunakan.
CERT_LDAP_STORE_SIGN_FLAG
Untuk memberikan integritas yang diperlukan oleh beberapa aplikasi, tanda tangani semua lalu lintas LDAP secara digital ke dan dari server LDAP dengan menggunakan protokol autentikasi Kerberos.
CERT_LDAP_STORE_UNBIND_FLAG
Gunakan bendera ini dengan bendera CERT_LDAP_STORE_OPENED_FLAG untuk menyebabkan sesi LDAP tidak terikat saat penyimpanan ditutup. Sistem akan membatalkan ikatan sesi LDAP dengan menggunakan fungsi ldap_unbind saat penyimpanan ditutup.

[in] pvPara

Nilai 32-bit yang dapat berisi informasi tambahan untuk fungsi ini. Isi parameter ini tergantung pada nilai lpszStoreProvider dan parameter lainnya.

Mengembalikan nilai

Jika fungsi berhasil, fungsi mengembalikan handel ke penyimpanan sertifikat. Setelah Anda selesai menggunakan penyimpanan, lepaskan handel dengan memanggil fungsi CertCloseStore .

Jika fungsi gagal, fungsi akan mengembalikan NULL. Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

CatatanKesalahan CreateFile, ReadFile, atau registri mungkin disebarluaskan dan kode kesalahannya dikembalikan. CertOpenStore memiliki satu kode kesalahan sendiri, kode ERROR_FILE_NOT_FOUND, yang menunjukkan bahwa fungsi tidak dapat menemukan penyedia yang ditentukan oleh parameter lpszStoreProvider .
 

Keterangan

Penyimpanan sistem adalah koleksi yang terdiri dari satu atau beberapa toko saudara fisik. Untuk setiap penyimpanan sistem, ada toko saudara fisik yang telah ditentukan sebelumnya. Setelah membuka penyimpanan sistem seperti "My" di CERT_SYSTEM_STORE_CURRENT_USER, CertOpenStore dipanggil untuk membuka semua toko fisik dalam koleksi penyimpanan sistem. Masing-masing penyimpanan fisik ini ditambahkan ke koleksi penyimpanan sistem dengan menggunakan fungsi CertAddStoreToCollection . Semua sertifikat, CRL, dan CCL di penyimpanan fisik tersebut tersedia melalui pengumpulan penyimpanan sistem logis.

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

Lokasi penyimpanan sistem berikut dapat dibuka dari jarak jauh:

  • CERT_SYSTEM_STORE_LOCAL_MACHINE
  • CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY
  • CERT_SYSTEM_STORE_SERVICES
  • CERT_SYSTEM_STORE_USERS

Lokasi penyimpanan sistem dibuka dari jarak jauh dengan mengawali nama penyimpanan dalam string yang diteruskan ke pvPara dengan nama komputer. Contoh nama penyimpanan sistem jarak jauh adalah:

  • ComputerName\CA
  • \\ComputerName\CA
  • ComputerName\ServiceName\Trust
  • \\ComputerName\ServiceName\Trust

Untuk informasi selengkapnya tentang penyimpanan sistem, lihat Lokasi Penyimpanan Sistem.

Untuk informasi selengkapnya tentang penyimpanan yang dimigrasikan secara otomatis, lihat Migrasi Penyimpanan Sertifikat.

Contoh

Contoh berikut menunjukkan pembukaan beberapa penyimpanan sertifikat dari berbagai jenis penyedia penyimpanan. Contohnya menggunakan fungsi CreateMyDACL , yang ditentukan dalam topik Membuat DACL , untuk memastikan file terbuka dibuat dengan DACL yang tepat. Untuk contoh selengkapnya tentang membuka jenis penyedia penyimpanan lainnya, lihat Contoh Kode C untuk Membuka Penyimpanan Sertifikat.

//-------------------------------------------------------------------
// Open a system store, in this case, the My store.

HCERTSTORE hSysStore = NULL;
if(hSysStore = CertOpenStore(
   CERT_STORE_PROV_SYSTEM,          // The store provider type
   0,                               // The encoding type is
                                    // not needed
   NULL,                            // Use the default HCRYPTPROV
   CERT_SYSTEM_STORE_CURRENT_USER,  // Set the store location in a
                                    // registry location
   L"MY"                            // The store name as a Unicode 
                                    // string
   ))
{
    printf("The system store was created successfully.\n");
}
else
{
    printf("An error occurred during creation "
        "of the system store!\n");
    exit(1);
}

// Other common system stores include "Root", "Trust", and "Ca".


//-------------------------------------------------------------------
// Open a memory store. 

HCERTSTORE hMemStore = NULL;
if(hMemStore = CertOpenStore(
   CERT_STORE_PROV_MEMORY,   // The memory provider type
   0,                        // The encoding type is not needed
   NULL,                     // Use the default HCRYPTPROV
   0,                        // Accept the default dwFlags
   NULL                      // pvPara is not used
   ))
{
    printf("The memory store was created successfully.\n");
}
else
{
    printf("An error occurred during creation "
        "of the memory store!\n");
    exit(1);
}

//-------------------------------------------------------------------
// Open a read-only store from disk.

HANDLE       hFile = NULL;
HCERTSTORE   hFileStore = NULL;
LPCSTR       pszFileName = "TestStor2.sto";
SECURITY_ATTRIBUTES  sa;        // For DACL

// Create a DACL to use when opening the file.
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;  

// Call function to set the DACL. The DACL is set in the 
// SECURITY_ATTRIBUTES lpSecurityDescriptor member.
if (!CreateMyDACL(&sa))
{
     // Error encountered; generate message and exit.
     printf("Failed CreateMyDACL.\n");
        exit(1);
}

// Obtain the file handle of an existing file.
if (hFile = CreateFile(
     pszFileName,                  // The file name
     GENERIC_READ|GENERIC_WRITE,   // Access mode: Read from and
                                   // write to this file
     0,                            // Share mode
     &sa,                          // Uses the DACL created 
                                   // previously 
     OPEN_ALWAYS,                  // How to create
     FILE_ATTRIBUTE_NORMAL,        // File attributes
     NULL))                        // Template
{
    printf("The file was opened successfully.\n");
}
else
{
    printf("An error occurred during opening of the file!\n");
    exit(1);
}

//-------------------------------------------------------------------
//  This file can contain data before the store itself.
//  At this point, read and use data in the open file that precedes
//  the serialized certificate store data. 
//  To open the certificate store, the file pointer must
//  be placed at the beginning of the certificate store data.

//-------------------------------------------------------------------
//  Open the store.

if(hFileStore = CertOpenStore(
    CERT_STORE_PROV_FILE,     // Load certificates from a file
    0,                        // Encoding type not used
    NULL,                     // Use the default HCRYPTPROV
    CERT_STORE_READONLY_FLAG, // Read-only store
    hFile                     // The handle for the open file 
                              // that is the source of the 
                              // certificates
    ))
{
    printf("The file store was created successfully.\n");
}
else
{
    printf("An error occurred during creation of the file store!\n");
    exit(1);
}

//-------------------------------------------------------------------
// After processing, close the certificate stores and the file.

if(CertCloseStore(
        hSysStore, 
        CERT_CLOSE_STORE_CHECK_FLAG))
{
    printf("The system store was closed successfully.\n");
}
else
{
    printf("An error occurred during closing of the "
        "system store.\n");
}

if(CertCloseStore(
        hMemStore, 
        CERT_CLOSE_STORE_CHECK_FLAG))
{
    printf("The memory store was closed successfully.\n");
}
else
{
    printf("An error occurred during closing of the "
        "memory store.\n");
}

if(CertCloseStore(
        hFileStore, 
        CERT_CLOSE_STORE_CHECK_FLAG))
{
    printf("The file store was closed successfully.\n");
}
else
{
    printf("An error occurred during closing of the file store.\n");
}

if(CloseHandle(hFile))
{
    printf("The file was closed successfully.\n");
}
else
{
    printf("An error occurred during closing of the file.\n");
}

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

CERT_SYSTEM_STORE_RELOCATE_PARA

CertCloseStore

CertSaveStore

Fungsi Penyimpanan Sertifikat