Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi BCryptExportKey mengekspor kunci ke BLOB memori yang dapat dipertahankan untuk digunakan nanti.
Sintaksis
NTSTATUS BCryptExportKey(
[in] BCRYPT_KEY_HANDLE hKey,
[in] BCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[out] PUCHAR pbOutput,
[in] ULONG cbOutput,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Parameter
[in] hKey
Handel kunci yang akan diekspor.
[in] hExportKey
Handel kunci untuk membungkus kunci yang diekspor. Gunakan parameter ini saat mengekspor BLOB jenis BCRYPT_AES_WRAP_KEY_BLOB; jika tidak, atur ke NULL.
Nota
Handel hExportKey harus disediakan oleh penyedia yang sama yang menyediakan handel hKey , dan hExportKey harus menjadi handel ke kunci konten yang dapat digunakan dalam algoritma pembungkus kunci Standar Enkripsi Lanjutan (AES). Ketika handel hKey berasal dari penyedia Microsoft, hExportKey harus menjadi handel kunci AES.
Windows Server 2008 dan Windows Vista: Parameter ini tidak digunakan dan harus diatur ke NULL.
[in] pszBlobType
String Unicode yang dihentikan null yang berisi pengidentifikasi yang menentukan jenis BLOB yang akan diekspor. Ini bisa menjadi salah satu nilai berikut.
| Nilai | Arti |
|---|---|
| BCRYPT_AES_WRAP_KEY_BLOB | Ekspor kunci AES yang dibungkus kunci. Parameter hExportKey harus mereferensikan penunjuk BCRYPT_KEY_HANDLE yang valid ke kunci enkripsi kunci, dan kunci yang diwakili oleh parameter hKey harus memiliki kelipatan panjang 8 byte. Windows Server 2008 dan Windows Vista: Jenis BLOB ini tidak didukung. |
| BCRYPT_DH_PRIVATE_BLOB | Ekspor pasangan kunci publik/privat Diffie-Hellman. Buffer pbOutput menerima struktur BCRYPT_DH_KEY_BLOB segera diikuti oleh data utama. |
| BCRYPT_DH_PUBLIC_BLOB | Ekspor kunci umum Diffie-Hellman. Buffer pbOutput menerima struktur BCRYPT_DH_KEY_BLOB segera diikuti oleh data utama. |
| BCRYPT_DSA_PRIVATE_BLOB | Ekspor pasangan kunci publik/privat DSA. Buffer pbOutput menerima struktur BCRYPT_DSA_KEY_BLOB atau BCRYPT_DSA_KEY_BLOB_V2 segera diikuti oleh data utama.
BCRYPT_DSA_KEY_BLOB digunakan untuk panjang kunci dari 512 hingga 1024 bit.
BCRYPT_DSA_KEY_BLOB_V2 digunakan untuk panjang kunci yang melebihi 1024 bit tetapi kurang dari atau sama dengan 3072 bit. Windows 8: Dukungan untuk BCRYPT_DSA_KEY_BLOB_V2 dimulai. |
| BCRYPT_DSA_PUBLIC_BLOB | Mengekspor kunci publik DSA. Buffer pbOutput menerima struktur BCRYPT_DSA_KEY_BLOB atau BCRYPT_DSA_KEY_BLOB_V2 segera diikuti oleh data utama.
BCRYPT_DSA_KEY_BLOB digunakan untuk panjang kunci dari 512 hingga 1024 bit.
BCRYPT_DSA_KEY_BLOB_V2 digunakan untuk panjang kunci yang melebihi 1024 bit tetapi kurang dari atau sama dengan 3072 bit. Windows 8: Dukungan untuk BCRYPT_DSA_KEY_BLOB_V2 dimulai. |
| BCRYPT_ECCPRIVATE_BLOB | Ekspor kunci privatkriptografi kurva elips (ECC). Buffer pbOutput menerima struktur BCRYPT_ECCKEY_BLOB segera diikuti oleh data kunci. |
| BCRYPT_ECCPUBLIC_BLOB | Mengekspor kunci publik ECC. Buffer pbOutput menerima struktur BCRYPT_ECCKEY_BLOB segera diikuti oleh data kunci. |
| BCRYPT_KEY_DATA_BLOB | Ekspor kunci konten ke BLOB data. Buffer pbOutput menerima struktur BCRYPT_KEY_DATA_BLOB_HEADER segera diikuti oleh BLOB kunci. |
| BCRYPT_MLKEM_PRIVATE_SEED_BLOB | Ekspor kunci seed privat ML-KEM. Buffer pbOutput menerima struktur BCRYPT_MLKEM_KEY_BLOB segera diikuti oleh kumpulan parameter dan data kunci. Catatan: ML-KEM handel kunci yang berisi kunci privat yang diimpor menggunakan BCRYPT_MLKEM_PRIVATE_BLOB memiliki informasi yang tidak mencukupi untuk mengekspor kunci benih privat. Windows Insider (build 27843): Dukungan untuk ML-KEM dimulai. |
| BCRYPT_MLKEM_PRIVATE_BLOB | Ekspor kunci privat (dekapsulasi) ML-KEM. Buffer pbOutput menerima struktur BCRYPT_MLKEM_KEY_BLOB segera diikuti oleh kumpulan parameter dan data kunci. Windows Insider (build 27843): Dukungan untuk ML-KEM dimulai. |
| BCRYPT_MLKEM_PUBLIC_BLOB | Ekspor kunci publik (enkapsulasi) ML-KEM. Buffer pbOutput menerima struktur BCRYPT_MLKEM_KEY_BLOB segera diikuti oleh kumpulan parameter dan data kunci. Windows Insider (build 27843): Dukungan untuk ML-KEM dimulai. |
| BCRYPT_OPAQUE_KEY_BLOB | Ekspor kunci konten dalam format yang khusus untuk penyedia layanan kriptografi tunggal (CSP). BLOB buram tidak dapat ditransfer dan harus diimpor dengan menggunakan CSP yang sama yang menghasilkan BLOB. BLOB buram hanya dimaksudkan untuk digunakan untuk transfer kunci antarproseksi dan tidak cocok untuk dipertahankan dan dibaca di seluruh versi penyedia. |
| BCRYPT_PQDSA_PRIVATE_SEED_BLOB | Ekspor kunci seed privat Post-Quantum Digital Signature algorithm (PQDSA). Buffer pbOutput menerima struktur BCRYPT_PQDSA_KEY_BLOB segera diikuti oleh kumpulan parameter dan data kunci. Nota: Handel kunci PQDSA yang berisi kunci privat yang diimpor menggunakan BCRYPT_PQDSA_PRIVATE_BLOB memiliki informasi yang tidak mencukupi untuk mengekspor kunci benih privat. Windows Insider (build 27843): Dukungan untuk ML-DSA dimulai. |
| BCRYPT_PQDSA_PRIVATE_BLOB | Ekspor kunci privat PQDSA. Buffer pbOutput menerima struktur BCRYPT_PQDSA_KEY_BLOB segera diikuti oleh kumpulan parameter dan data kunci. Windows Insider (build 27843): Dukungan untuk ML-DSA dimulai. |
| BCRYPT_PQDSA_PUBLIC_BLOB | Mengekspor kunci publik PQDSA. Buffer pbOutput menerima struktur BCRYPT_PQDSA_KEY_BLOB segera diikuti oleh kumpulan parameter dan data kunci. Windows Insider (build 27843): Dukungan untuk ML-DSA dimulai. |
| BCRYPT_PRIVATE_KEY_BLOB | Ekspor kunci privat generik dari jenis apa pun. Kunci privat tidak selalu berisi kunci publik. Jenis kunci dalam BLOB ini ditentukan oleh anggota Magic dari struktur BCRYPT_KEY_BLOB . |
| BCRYPT_PUBLIC_KEY_BLOB | Ekspor kunci umum generik dari jenis apa pun. Jenis kunci dalam BLOB ini ditentukan oleh anggota Magic dari struktur BCRYPT_KEY_BLOB . |
| BCRYPT_RSAFULLPRIVATE_BLOB | Ekspor pasangan kunci publik/privat RSA lengkap. Buffer pbOutput menerima struktur BCRYPT_RSAKEY_BLOB segera diikuti oleh data kunci. BLOB ini akan mencakup materi kunci tambahan dibandingkan dengan jenis BCRYPT_RSAPRIVATE_BLOB . |
| BCRYPT_RSAPRIVATE_BLOB | Ekspor pasangan kunci publik/privat RSA. Buffer pbOutput menerima struktur BCRYPT_RSAKEY_BLOB segera diikuti oleh data kunci. |
| BCRYPT_RSAPUBLIC_BLOB | Ekspor kunci publik RSA. Buffer pbOutput menerima struktur BCRYPT_RSAKEY_BLOB segera diikuti oleh data kunci. |
| LEGACY_DH_PRIVATE_BLOB | Ekspor blob Kunci PrivatDiffie-Hellman Versi 3 warisan yang berisi pasangan kunci publik/privat Diffie-Hellman yang dapat diimpor dengan menggunakan CryptoAPI. |
| LEGACY_DH_PUBLIC_BLOB | Ekspor blob Kunci UmumDiffie-Hellman Versi 3 warisan yang berisi kunci umum Diffie-Hellman yang dapat diimpor dengan menggunakan CryptoAPI. |
| LEGACY_DSA_PRIVATE_BLOB | Ekspor pasangan kunci publik/privat DSA dalam formulir yang dapat diimpor dengan menggunakan CryptoAPI. |
| LEGACY_DSA_PUBLIC_BLOB | Ekspor kunci publik DSA dalam formulir yang dapat diimpor dengan menggunakan CryptoAPI. |
| LEGACY_DSA_V2_PRIVATE_BLOB | Ekspor kunci privat DSA versi 2 dalam formulir yang dapat diimpor dengan menggunakan CryptoAPI. |
| LEGACY_RSAPRIVATE_BLOB | Ekspor pasangan kunci publik/privat RSA dalam formulir yang dapat diimpor dengan menggunakan CryptoAPI. |
| LEGACY_RSAPUBLIC_BLOB | Ekspor kunci publik RSA dalam formulir yang dapat diimpor dengan menggunakan CryptoAPI. |
[out] pbOutput
Alamat buffer yang menerima BLOB kunci. Parameter cbOutput berisi ukuran buffer ini. Jika parameter ini adalah NULL, fungsi ini akan menempatkan ukuran yang diperlukan, dalam byte, di ULONG yang ditunjukkan oleh parameter pcbResult .
[in] cbOutput
Berisi ukuran, dalam byte, dari buffer pbOutput .
[out] pcbResult
Pointer ke ULONG yang menerima jumlah byte yang disalin ke buffer pbOutput . Jika parameter pbOutput adalah NULL, fungsi ini akan menempatkan ukuran yang diperlukan, dalam byte, di ULONG yang ditunjukkan oleh parameter ini.
[in] dwFlags
Sekumpulan bendera yang mengubah perilaku fungsi ini. Tidak ada bendera yang didefinisikan untuk fungsi ini.
Mengembalikan nilai
Mengembalikan kode status yang menunjukkan keberhasilan atau kegagalan fungsi.
Kemungkinan kode pengembalian termasuk, tetapi tidak terbatas pada, berikut ini.
| Mengembalikan kode | Deskripsi |
|---|---|
| STATUS_SUCCESS | Fungsi berhasil. |
| STATUS_BUFFER_TOO_SMALL | Ukuran yang ditentukan oleh parameter cbOutput tidak cukup besar untuk menahan ciphertext. Jika buffer pbOutput terlalu kecil, pcbResult menerima jumlah byte yang diperlukan untuk pbOutput. |
| STATUS_INVALID_HANDLE | Handel kunci dalam parameter hKey tidak valid. |
| STATUS_INVALID_PARAMETER | Satu atau beberapa parameter tidak valid. |
| STATUS_NOT_SUPPORTED | Jenis BLOB yang ditentukan tidak didukung oleh penyedia. Jika handel kunci yang disediakan tidak mendukung ekspor benih privat. Lihat komentar. |
Komentar
Saat menggunakan penyedia algoritma yang didukung, BCryptExportKey dapat dipanggil baik dari mode pengguna atau mode kernel. Pemanggil mode kernel dapat menjalankan baik di PASSIVE_LEVELIRQL atau IRQL DISPATCH_LEVEL. Jika tingkat IRQL saat ini DISPATCH_LEVEL, handel yang disediakan dalam parameter hKey harus berasal dari handel algoritma yang dikembalikan oleh penyedia yang dibuka dengan bendera BCRYPT_PROV_DISPATCH , dan penunjuk apa pun yang diteruskan ke fungsi BCryptExportKey harus merujuk ke memori yang tidak dipagasi (atau dikunci).
Untuk memanggil fungsi ini dalam mode kernel, gunakan Cng.lib, yang merupakan bagian dari Driver Development Kit (DDK).
Windows Server 2008 dan Windows Vista: Untuk memanggil fungsi ini dalam mode kernel, gunakan Ksecdd.lib.
Persyaratan
| Syarat | Nilai |
|---|---|
| Klien minimum yang didukung | Windows Vista [aplikasi desktop | Aplikasi UWP] |
| Server minimum yang didukung | Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
| Platform Target | Windows |
| Header | bcrypt.h |
| Perpustakaan | Bcrypt.lib |
| DLL | Bcrypt.dll |