Fungsi NCryptCreatePersistedKey (ncrypt.h)
Fungsi NCryptCreatePersistedKey membuat kunci baru dan menyimpannya di penyedia penyimpanan kunci yang ditentukan. Setelah Anda membuat kunci dengan menggunakan fungsi ini, Anda dapat menggunakan fungsi NCryptSetProperty untuk mengatur propertinya; namun, kunci tidak dapat digunakan sampai fungsi NCryptFinalizeKey dipanggil.
Sintaks
SECURITY_STATUS NCryptCreatePersistedKey(
[in] NCRYPT_PROV_HANDLE hProvider,
[out] NCRYPT_KEY_HANDLE *phKey,
[in] LPCWSTR pszAlgId,
[in, optional] LPCWSTR pszKeyName,
[in] DWORD dwLegacyKeySpec,
[in] DWORD dwFlags
);
Parameter
[in] hProvider
Handel penyedia penyimpanan kunci untuk membuat kunci. Handel ini diperoleh dengan menggunakan fungsi NCryptOpenStorageProvider .
[out] phKey
Alamat variabel NCRYPT_KEY_HANDLE yang menerima handel kunci. Setelah Anda selesai menggunakan handel ini, lepaskan dengan meneruskannya ke fungsi NCryptFreeObject . Untuk menghapus file kunci pada disk, teruskan handel ke fungsi NCryptDeleteKey . Ini juga akan merilis handel. Jadi aplikasi dapat meneruskan handel ke NCryptFreeObject atau NCryptDeleteKey, tetapi tidak keduanya.
[in] pszAlgId
Penunjuk ke string Unicode yang dihentikan null yang berisi pengidentifikasi algoritma kriptografi untuk membuat kunci. Ini bisa menjadi salah satu Pengidentifikasi Algoritma CNG standar atau pengidentifikasi untuk algoritma terdaftar lainnya.
[in, optional] pszKeyName
Penunjuk ke string Unicode yang dihentikan null yang berisi nama kunci. Jika parameter ini NULL, fungsi ini akan membuat kunci ephemeral yang tidak bertahan.
[in] dwLegacyKeySpec
Pengidentifikasi warisan yang menentukan jenis kunci. Ini bisa menjadi salah satu nilai berikut:
Nilai | Makna |
---|---|
AT_KEYEXCHANGE | Kuncinya adalah kunci pertukaran kunci. |
AT_SIGNATURE | Kuncinya adalah kunci tanda tangan. |
0 | Kuncinya bukan jenis di atas. |
[in] dwFlags
Sekumpulan bendera yang mengubah perilaku fungsi ini. Ini bisa nol atau kombinasi dari satu atau beberapa nilai berikut:
Nilai | Makna |
---|---|
NCRYPT_MACHINE_KEY_FLAG | Kunci berlaku untuk komputer lokal. Jika bendera ini tidak ada, kunci berlaku untuk pengguna saat ini. |
NCRYPT_OVERWRITE_KEY_FLAG | Jika kunci sudah ada dalam kontainer dengan nama yang ditentukan, kunci yang ada akan ditimpa. Jika bendera ini tidak ditentukan dan kunci dengan nama yang ditentukan sudah ada, fungsi ini akan mengembalikan NTE_EXISTS. |
NCRYPT_REQUIRE_VBS_FLAG | Menunjukkan kunci harus dilindungi dengan keamanan berbasis Virtualisasi (VBS). Secara default, ini membuat kunci persisten cross-boot yang disimpan pada disk yang bertahan di seluruh siklus reboot. Operasi akan gagal jika VBS tidak tersedia. (*Lihat Keterangan) |
NCRYPT_PREFER_VBS_FLAG | Menunjukkan kunci harus dilindungi dengan keamanan berbasis Virtualisasi (VBS). Secara default, ini membuat kunci persisten cross-boot yang disimpan pada disk yang bertahan di seluruh siklus reboot Operasi akan menghasilkan kunci yang terisolasi perangkat lunak jika VBS tidak tersedia. (*Lihat Keterangan) |
NCRYPT_USE_PER_BOOT_KEY_FLAG | Bendera tambahan yang dapat digunakan bersama dengan NCRYPT_REQUIRE_VBS_FLAG atau NCRYPT_PREFER_VBS_FLAG. Menginstruksikan keamanan berbasis Virtualisasi (VBS) untuk melindungi kunci klien dengan kunci per boot yang disimpan dalam disk tetapi tidak dapat digunakan kembali di seluruh siklus boot. (*Lihat Keterangan) |
Mengembalikan nilai
Mengembalikan kode status yang menunjukkan keberhasilan atau kegagalan fungsi.
Kemungkinan kode pengembalian termasuk, tetapi tidak terbatas pada, berikut ini:
Menampilkan kode | Deskripsi |
---|---|
ERROR_SUCCESS | Fungsi berhasil. |
NTE_BAD_FLAGS | Parameter dwFlags berisi nilai yang tidak valid. |
NTE_EXISTS | Kunci dengan nama yang ditentukan sudah ada dan NCRYPT_OVERWRITE_KEY_FLAG tidak ditentukan. |
NTE_INVALID_HANDLE | Parameter hProvider tidak valid. |
NTE_INVALID_PARAMETER | Satu atau beberapa parameter tidak valid. |
NTE_NO_MEMORY | Terjadi kegagalan alokasi memori. |
NTE_VBS_UNAVAILABLE | VBS tidak tersedia. |
Keterangan
Penting
Informasi mengenai bendera VBS berkaitan dengan produk prarilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Jika Anda membuat pasangan kunci RSA, Anda juga dapat menyimpan kunci dalam penyimpanan warisan sehingga dapat digunakan dengan CryptoAPI dengan meneruskan bendera NCRYPT_WRITE_KEY_TO_LEGACY_STORE_FLAG ke fungsi NCryptFinalizeKey saat kunci diselesaikan.
Layanan tidak boleh memanggil fungsi ini dari Fungsi StartService-nya. Jika layanan memanggil fungsi ini dari fungsi StartService-nya, kebuntuan dapat terjadi, dan layanan mungkin berhenti merespons.
Persyaratan perangkat keras tambahan untuk kunci VBS
Meskipun Anda mungkin memiliki OS yang sesuai yang diinstal pada komputer Anda, persyaratan perangkat keras tambahan berikut harus dipenuhi untuk menggunakan VBS untuk menghasilkan dan melindungi kunci.
- VBS diaktifkan (lihat Keamanan berbasis virtualisasi (VBS))
- TPM diaktifkan
- Untuk lingkungan bare-metal, TPM 2.0 diperlukan.
- Untuk lingkungan VM, vTPM (Virtual TPM) didukung.
- BIOS harus ditingkatkan ke UEFI dengan profil SecureBoot
Untuk informasi selengkapnya tentang persyaratan perangkat keras:
- VBS memiliki beberapa persyaratan perangkat keras untuk dijalankan, termasuk Hyper-V (hypervisor Windows), arsitektur 64 bit, dan dukungan IOMMU. Daftar lengkap persyaratan perangkat keras VBS dapat ditemukan di sini.
- Persyaratan untuk perangkat yang sangat aman dapat ditemukan di sini.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | ncrypt.h |
Pustaka | Ncrypt.lib |
DLL | Ncrypt.dll |