Bagikan melalui


Fungsi BCryptExportKey (bcrypt.h)

Fungsi BCryptExportKey mengekspor kunci ke memori BLOB 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.

Note Handel hExportKey harus disediakan oleh penyedia yang sama yang menyediakan handel hKey , dan hExportKey harus menjadi pegangan 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: Tipe 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 kriptografi kurva elips (ECC) kunci privat. Buffer pbOutput menerima struktur BCRYPT_ECCKEY_BLOB segera diikuti oleh data utama.
BCRYPT_ECCPUBLIC_BLOB
Mengekspor kunci publik ECC. Buffer pbOutput menerima struktur BCRYPT_ECCKEY_BLOB segera diikuti oleh data utama.
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_OPAQUE_KEY_BLOB
Ekspor kunci konten dalam format yang khusus untuk satu penyedia layanan kriptografi (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_PUBLIC_KEY_BLOB
Ekspor kunci umum generik dari jenis apa pun. Jenis kunci dalam BLOB ini ditentukan oleh Magic anggota struktur BCRYPT_KEY_BLOB.
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 Magic anggota 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 utama. 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 utama.
BCRYPT_RSAPUBLIC_BLOB
Ekspor kunci publik RSA. Buffer pbOutput menerima struktur BCRYPT_RSAKEY_BLOB segera diikuti oleh data utama.
LEGACY_DH_PRIVATE_BLOB
Ekspor BLOB Kunci Privat Diffie-Hellman Versi 3 warisan yang berisi pasangan kunci publik/privat Diffie-Hellman yang dapat diimpor dengan menggunakan CryptoAPI.
LEGACY_DH_PUBLIC_BLOB
Ekspor Diffie-Hellman blob Kunci Umum 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 NULL, fungsi ini akan menempatkan ukuran yang diperlukan, dalam byte, dalam ULONG yang ditunjukkan oleh parameter pcbResult .

[in] cbOutput

Berisi ukuran, dalam byte, dari pbOutput buffer.

[out] pcbResult

Pointer ke ULONG yang menerima jumlah byte yang disalin ke pbOutput buffer. Jika parameter pbOutput NULL, fungsi ini akan menempatkan ukuran yang diperlukan, dalam byte, dalam ULONG 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.
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.

Komentar

Bergantung pada mode prosesor apa yang didukung penyedia, 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 pointer 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
Pustaka Bcrypt.lib
DLL Bcrypt.dll

Lihat juga

BCryptImportKey

BCryptImportKeyPair