Fungsi CryptSignMessage (wincrypt.h)

Fungsi CryptSignMessage membuat hash konten yang ditentukan, menandatangani hash, lalu mengodekan konten pesan asli dan hash yang ditandatangani.

Sintaks

BOOL CryptSignMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA pSignPara,
  [in]      BOOL                     fDetachedSignature,
  [in]      DWORD                    cToBeSigned,
  [in]      const BYTE * []          rgpbToBeSigned,
  [in]      DWORD []                 rgcbToBeSigned,
  [out]     BYTE                     *pbSignedBlob,
  [in, out] DWORD                    *pcbSignedBlob
);

Parameter

[in] pSignPara

Penunjuk ke struktur CRYPT_SIGN_MESSAGE_PARA yang berisi parameter tanda tangan.

[in] fDetachedSignature

TRUE jika ini akan menjadi tanda tangan yang dilepas. Jika tidak, FALSE. Jika parameter ini diatur ke TRUE, hanya hash yang ditandatangani yang dikodekan dalam pbSignedBlob. Jika tidak, baik rgpbToBeSigned maupun hash yang ditandatangani dikodekan.

[in] cToBeSigned

Jumlah jumlah elemen array dalam rgpbToBeSigned dan rgcbToBeSigned. Parameter ini harus diatur ke satu kecuali fDetachedSignature diatur ke TRUE.

[in] rgpbToBeSigned

Array pointer ke buffer yang berisi konten yang akan ditandatangani.

[in] rgcbToBeSigned

Array ukuran, dalam byte, dari buffer konten yang diarahkan ke rgpbToBeSigned.

[out] pbSignedBlob

Penunjuk ke buffer untuk menerima hash bertanda tangan yang dikodekan, jika fDetachedSignatureTRUE, atau ke konten yang dikodekan dan hash yang ditandatangani jika fDetachedSignatureFALSE.

Parameter ini bisa NULL untuk mengatur ukuran informasi ini untuk tujuan alokasi memori. Untuk informasi selengkapnya, lihat Mengambil Data Dengan Panjang Tidak Diketahui.

[in, out] pcbSignedBlob

Penunjuk ke DWORD yang menentukan ukuran, dalam byte, dari buffer pbSignedBlob . Ketika fungsi kembali, variabel ini berisi ukuran, dalam byte, dari pesan yang ditandatangani dan dikodekan.

Catatan Saat memproses data yang dikembalikan, aplikasi harus menggunakan ukuran aktual data yang dikembalikan. Ukuran aktual bisa sedikit lebih kecil dari ukuran buffer yang ditentukan pada input. (Pada input, ukuran buffer biasanya ditentukan cukup besar untuk memastikan bahwa data output terbesar yang mungkin akan pas di buffer.) Pada output, variabel yang diacu oleh parameter ini diperbarui untuk mencerminkan ukuran aktual data yang disalin ke buffer.
 

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol (TRUE).

Jika fungsi gagal, nilai yang dikembalikan adalah nol (FALSE).

Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Berikut ini mencantumkan kode kesalahan yang paling umum dikembalikan oleh fungsi GetLastError .

Menampilkan kode Deskripsi
ERROR_MORE_DATA
Jika buffer yang ditentukan oleh parameter pbSignedBlob tidak cukup besar untuk menyimpan data yang dikembalikan, fungsi mengatur kode ERROR_MORE_DATA, dan menyimpan ukuran buffer yang diperlukan, dalam byte, ke dalam variabel yang ditunjukkan oleh pcbSignedBlob.
E_INVALIDARG
Tipe pengodean pesan tidak valid. Saat ini hanya PKCS_7_ASN_ENCODING yang didukung. cbSize dalam *pSignPara tidak valid.
CRYPT_E_NO_KEY_PROPERTY
pSigningCert di *pSignPara tidak memiliki properti CERT_KEY_PROV_INFO_PROP_ID atau CERT_KEY_CONTEXT_PROP_ID.
 
Catatan Kesalahan dari fungsi yang disebut CryptCreateHash, CryptHashData, dan CryptSignHash mungkin disebarluaskan ke fungsi ini.
 
Jika fungsi gagal, GetLastError dapat mengembalikan kesalahan pengodean/pendekodean Abstract Syntax Notation One (ASN.1). Untuk informasi tentang kesalahan ini, lihat Nilai Pengembalian Pengodean/Pendekodean ASN.1.

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 Crypt32.lib
DLL Crypt32.dll

Lihat juga

CryptSignAndEncryptMessage

CryptVerifyMessageSignature

Fungsi Pesan Yang Disederhanakan