Bagikan melalui


Fungsi BCryptDuplicateKey (bcrypt.h)

Fungsi BCryptDuplicateKey membuat duplikat kunci simetris .

Sintaksis

NTSTATUS BCryptDuplicateKey(
  [in]  BCRYPT_KEY_HANDLE hKey,
  [out] BCRYPT_KEY_HANDLE *phNewKey,
  [out] PUCHAR            pbKeyObject,
  [in]  ULONG             cbKeyObject,
  [in]  ULONG             dwFlags
);

Parameter

[in] hKey

Handel kunci untuk diduplikasi. Ini harus menjadi handel untuk kunci simetris.

[out] phNewKey

Penunjuk ke variabel BCRYPT_KEY_HANDLE yang menerima handel kunci duplikat. Handel ini digunakan dalam fungsi berikutnya yang memerlukan kunci, seperti BCryptEncrypt. Handel ini harus dirilis ketika tidak lagi diperlukan dengan meneruskannya ke fungsi BCryptDestroyKey.

[out] pbKeyObject

Penunjukopsionalke buffer yang menerima objek kunci duplikat. Parameter cbKeyObject berisi ukuran buffer ini. Ukuran buffer ini yang diperlukan dapat diperoleh dengan memanggil fungsi BCryptGetProperty untuk mendapatkan properti BCRYPT_OBJECT_LENGTH. Ini akan memberikan ukuran objek kunci untuk algoritma yang ditentukan.

Memori ini hanya dapat dibebaskan setelah phNewKey handel kunci dihancurkan.

Jika nilai parameter ini NULL dan nilai parameter cbKeyObject adalah nol, memori untuk objek kunci duplikat dialokasikan oleh fungsi ini dan dibebaskan oleh BCryptDestroyKey. Windows 7: Fungsionalitas manajemen memori ini tersedia dimulai dengan Windows 7.

[in] cbKeyObject

Ukurannya, dalam byte, dari pbKeyObject buffer.

Jika nilai parameter ini nol dan nilai parameter pbKeyObjectNULL, memori untuk objek kunci duplikat dialokasikan oleh fungsi ini dan dibebaskan oleh BCryptDestroyKey. Windows 7: Fungsionalitas manajemen memori ini tersedia dimulai dengan Windows 7.

[in] dwFlags

Sekumpulan bendera yang mengubah perilaku fungsi ini. Tidak ada bendera yang saat ini ditentukan, jadi parameter ini harus nol.

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 objek kunci yang ditentukan oleh parameter cbKeyObject tidak cukup besar untuk menahan objek kunci.
STATUS_INVALID_HANDLE
Handel kunci dalam parameter hKey tidak valid. Nilai ini juga dikembalikan jika kunci untuk diduplikasi bukan kunci simetris.
STATUS_INVALID_PARAMETER
Satu atau beberapa parameter tidak valid.

Komentar

Bergantung pada mode prosesor apa yang didukung penyedia, BCryptDuplicateKey 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 BCryptDuplicateKey harus mengacu pada 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