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 BCryptSignHash membuat tanda tangan nilai hash.
Sintaksis
NTSTATUS BCryptSignHash(
[in] BCRYPT_KEY_HANDLE hKey,
[in, optional] VOID *pPaddingInfo,
[in] PUCHAR pbInput,
[in] ULONG cbInput,
[out] PUCHAR pbOutput,
[in] ULONG cbOutput,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Parameter
[in] hKey
Handel kunci yang digunakan untuk menandatangani hash.
[in, optional] pPaddingInfo
Penunjuk ke struktur yang berisi informasi padding. Jenis struktur aktual yang dituju parameter ini bergantung pada nilai parameter dwFlags . Parameter ini hanya digunakan dengan kunci asimetris dan harus NULL sebaliknya.
pPaddingInfo harus NULL untuk LMS dan XMSS karena tidak ada informasi tambahan yang diperlukan untuk menghasilkan tanda tangan selain kunci dan input.
[in] pbInput
Penunjuk ke buffer yang berisi nilai hash untuk ditandatangani. Parameter cbInput berisi ukuran buffer ini.
[in] cbInput
Jumlah byte dalam buffer pbInput untuk ditandatangani.
[out] pbOutput
Alamat buffer untuk menerima tanda tangan yang dihasilkan oleh fungsi ini. Parameter cbOutput berisi ukuran buffer ini.
Jika parameter ini adalah NULL, fungsi ini akan menghitung ukuran yang diperlukan untuk tanda tangan dan mengembalikan ukuran di lokasi yang ditunjukkan oleh parameter pcbResult .
[in] cbOutput
Ukurannya, dalam byte, dari buffer pbOutput . Parameter ini diabaikan jika parameter pbOutput adalah NULL.
[out] pcbResult
Penunjuk ke variabel ULONG yang menerima jumlah byte yang disalin ke buffer pbOutput .
Jika pbOutput adalah NULL, ini menerima ukuran, dalam byte, diperlukan untuk tanda tangan.
[in] dwFlags
Sekumpulan bendera yang mengubah perilaku fungsi ini. Set bendera yang diizinkan tergantung pada jenis kunci yang ditentukan oleh parameter hKey .
dwFlags harus nol untuk LMS dan XMSS karena tidak ada informasi tambahan yang diperlukan untuk menghasilkan tanda tangan selain kunci dan input.
Ini bisa menjadi salah satu nilai berikut:
| Nilai | Arti |
|---|---|
| BCRYPT_PAD_PKCS1 | Gunakan skema padding PKCS1. Parameter pPaddingInfo adalah penunjuk ke struktur BCRYPT_PKCS1_PADDING_INFO . |
| BCRYPT_PAD_PQDSA | Gunakan skema padding PQ untuk ML-DSA atau SLH-DSA. Parameter pPaddingInfo adalah penunjuk ke struktur BCRYPT_PQDSA_PADDING_INFO . Nota: Ini harus diatur jika menggunakan varian ML-DSA pra-hash. |
| BCRYPT_PAD_PSS | Gunakan skema padding Probabilistic Signature Scheme (PSS). Parameter pPaddingInfo adalah penunjuk ke struktur BCRYPT_PSS_PADDING_INFO . |
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_INVALID_HANDLE | Handel kunci yang ditentukan oleh parameter hKey tidak valid. |
| STATUS_NOT_SUPPORTED | Penyedia algoritma yang digunakan untuk membuat handel kunci yang ditentukan oleh parameter hKey bukan algoritma penandatanganan. |
| STATUS_NO_MEMORY | Terjadi kegagalan alokasi memori. |
| STATUS_BUFFER_TOO_SMALL | Ukuran memori yang ditentukan oleh parameter cbOutput tidak cukup besar untuk menahan tanda tangan. |
Komentar
Fungsi ini akan mengenkripsi nilai hash dengan kunci yang ditentukan untuk membuat tanda tangan.
Untuk kemudian memverifikasi bahwa tanda tangan valid, panggil fungsi BCryptVerifySignature dengan kunci yang identik dan hash identik dari data asli.
Bergantung pada mode prosesor apa yang didukung penyedia, BCryptSignHash 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 setiap penunjuk yang diteruskan ke fungsi BCryptSignHash 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 |