cryptSignMessage 函式 (wincrypt.h)
CryptSignMessage 函式會建立指定內容的哈希、簽署哈希,然後編碼原始訊息內容和已簽署的哈希。
語法
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
);
參數
[in] pSignPara
包含簽章參數 之CRYPT_SIGN_MESSAGE_PARA 結構的指標。
[in] fDetachedSignature
如果這是卸離簽章,則為TRUE。 否則為 FALSE。 如果此參數設定為 TRUE,則只有帶正負號的哈希會以 pbSignedBlob 編碼。 否則,會編碼 rgpbToBeSigned 和帶正負號的哈希。
[in] cToBeSigned
rgpbToBeSigned 和 rgcbToBeSigned 中的陣列元素數目計數。 除非 fDetachedSignature 設定為 TRUE,否則此參數必須設定為一個。
[in] rgpbToBeSigned
緩衝區的指標陣列,其中包含要簽署的內容。
[in] rgcbToBeSigned
在 rgpbToBeSigned 中指向之內容緩衝區的大小陣列,以位元組為單位。
[out] pbSignedBlob
如果 fDetachedSignature 為 TRUE,則為接收已編碼之帶正負號哈希之緩衝區的指標,如果 fDetachedSignature 為 FALSE,則為編碼內容和帶正負號哈希的指標。
此參數可以是 NULL ,可設定此資訊的大小以供記憶體配置之用。 如需詳細資訊,請參閱 擷取未知長度的數據。
[in, out] pcbSignedBlob
DWORD 的指標,指定 pbSignedBlob 緩衝區的大小,以位元組為單位。 當函式傳回時,此變數會包含帶正負號和編碼訊息的大小,以位元組為單位。
傳回值
如果函式成功,傳回值為非零 (TRUE) 。
如果函式失敗,傳回值為零, (FALSE) 。
如需擴充的錯誤資訊,請呼叫 GetLastError。
下列列出 GetLastError 函式最常傳回的錯誤碼。
傳回碼 | Description |
---|---|
|
如果 pbSignedBlob 參數指定的緩衝區不夠大,無法保存傳回的數據,此函式會設定ERROR_MORE_DATA程序代碼,並將所需的緩衝區大小以位元組為單位儲存到 以 mb 為單位的變數中。 |
|
訊息編碼類型無效。 目前僅支援PKCS_7_ASN_ENCODING。 *pSignPara 中的 cbSize 無效。 |
|
*pSignPara 中的 pSigningCert 沒有 CERT_KEY_PROV_INFO_PROP_ID 或 CERT_KEY_CONTEXT_PROP_ID 屬性。 |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | wincrypt.h |
程式庫 | Crypt32.lib |
Dll | Crypt32.dll |