Fungsi CryptVerifySignatureA (wincrypt.h)
Sebelum memanggil fungsi ini, CryptCreateHash harus dipanggil untuk membuat handel objek hash. CryptHashData atau CryptHashSessionKey kemudian digunakan untuk menambahkan kunci data atau sesi ke objek hash.
Setelah CryptVerifySignature selesai, hanya CryptDestroyHash yang dapat dipanggil dengan menggunakan handel hHash .
Sintaks
BOOL CryptVerifySignatureA(
[in] HCRYPTHASH hHash,
[in] const BYTE *pbSignature,
[in] DWORD dwSigLen,
[in] HCRYPTKEY hPubKey,
[in] LPCSTR szDescription,
[in] DWORD dwFlags
);
Parameter
[in] hHash
Handel ke objek hash untuk diverifikasi.
[in] pbSignature
Alamat data tanda tangan yang akan diverifikasi.
[in] dwSigLen
Jumlah byte dalam data tanda tangan pbSignature .
[in] hPubKey
Handel ke kunci publik yang akan digunakan untuk mengautentikasi tanda tangan. Kunci publik ini harus termasuk dalam pasangan kunci yang awalnya digunakan untuk membuat tanda tangan digital.
[in] szDescription
Parameter ini tidak boleh lagi digunakan dan harus diatur ke NULL untuk mencegah kerentanan keamanan. Namun, masih didukung untuk kompatibilitas mundur di Penyedia Kriptografi Dasar Microsoft.
[in] dwFlags
Nilai bendera berikut ditentukan.
Nilai | Makna |
---|---|
|
Bendera ini digunakan dengan penyedia RSA. Saat memverifikasi tanda tangan, pengidentifikasi objek hash (OID) tidak diharapkan ada atau diperiksa. Jika bendera ini tidak diatur, hash OID dalam tanda tangan default diverifikasi seperti yang ditentukan dalam definisi DigestInfo di PKCS #7. |
|
Bendera ini tidak digunakan. |
|
Gunakan dukungan X.931 untuk versi RSA (rDSA) yang mematuhi FIPS 186-2. |
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan adalah TRUE.
Jika fungsi gagal, nilai yang dikembalikan adalah FALSE. Untuk informasi kesalahan yang diperluas, hubungi GetLastError.
Kode kesalahan yang diawali oleh "NTE" dihasilkan oleh CSP tertentu yang Anda gunakan. Beberapa kemungkinan kode kesalahan mengikuti.
Menampilkan kode | Deskripsi |
---|---|
|
Salah satu parameter menentukan handel yang tidak valid. |
|
Salah satu parameter berisi nilai yang tidak valid. Ini paling sering merupakan pointer yang tidak valid. |
|
Parameter dwFlags bukan nol. |
|
Objek hash yang ditentukan oleh parameter hHash tidak valid. |
|
Parameter hPubKey tidak berisi handel ke kunci publik yang valid. |
|
Tanda tangan tidak valid. Ini mungkin karena data itu sendiri telah berubah, string deskripsi tidak cocok, atau kunci publik yang salah ditentukan oleh hPubKey.
Kesalahan ini juga dapat dikembalikan jika algoritma hashing atau tanda tangan tidak cocok dengan yang digunakan untuk membuat tanda tangan. |
|
Konteks penyedia layanan kriptografi (CSP) yang ditentukan ketika objek hash dibuat tidak dapat ditemukan. |
|
CSP kehabisan memori selama operasi. |
Keterangan
Fungsi CryptVerifySignature menyelesaikan hash. Setelah panggilan ini, tidak ada lagi data yang dapat ditambahkan ke hash. Panggilan tambahan ke CryptHashData atau CryptHashSessionKey gagal. Setelah aplikasi selesai dengan hash, CryptDestroyHash harus dipanggil untuk menghancurkan objek hash.
Jika Anda membuat tanda tangan dengan menggunakan API .NET Framework dan mencoba memverifikasinya dengan menggunakan fungsi CryptVerifySignature, fungsi akan gagal dan GetLastError akan mengembalikan NTE_BAD_SIGNATURE. Ini karena pesanan byte yang berbeda antara API Win32 asli dan API .NET Framework.
API kriptografi asli menggunakan urutan byte little-endian sementara API .NET Framework menggunakan urutan byte big-endian. Jika Anda memverifikasi tanda tangan yang dihasilkan dengan menggunakan API .NET Framework, Anda harus menukar urutan byte tanda tangan sebelum memanggil fungsi CryptVerifySignature untuk memverifikasi tanda tangan.
Contoh
Untuk contoh yang menggunakan fungsi CryptVerifySignature , lihat Contoh Program C: Menandatangani Hash dan Memverifikasi Tanda Tangan Hash.
Catatan
Header wincrypt.h mendefinisikan CryptVerifySignature sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wincrypt.h |
Pustaka | Advapi32.lib |
DLL | Advapi32.dll |