Bagikan melalui


Fungsi BCryptExportKey (bcrypt.h)

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

Lihat juga

BCryptImportKey

BCryptImportKeyPair