CryptSignAndEncryptMessage 函式 (wincrypt.h)

CryptSignAndEncryptMessage 函式會建立指定內容的哈希、簽署哈希、加密內容、哈希加密內容和已簽署哈希,然後編碼加密的內容和已簽署的哈希。 結果與哈希第一次簽署並加密相同。

語法

BOOL CryptSignAndEncryptMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA    pSignPara,
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeSignedAndEncrypted,
  [in]      DWORD                       cbToBeSignedAndEncrypted,
  [out]     BYTE                        *pbSignedAndEncryptedBlob,
  [in, out] DWORD                       *pcbSignedAndEncryptedBlob
);

參數

[in] pSignPara

包含簽章參數 之CRYPT_SIGN_MESSAGE_PARA 結構的指標。

[in] pEncryptPara

包含加密參數 之CRYPT_ENCRYPT_MESSAGE_PARA 結構的指標。

[in] cRecipientCert

rgpRecipientCert 中的陣列元素數目。

[in] rgpRecipientCert

CERT_CONTEXT 結構的指標數位。 每個結構都是郵件預定收件者的憑證。

[in] pbToBeSignedAndEncrypted

緩衝區的指標,其中包含要簽署和加密的內容。

[in] cbToBeSignedAndEncrypted

pbToBeSignedAndEncrypted 緩衝區的大小,以位元組為單位。

[out] pbSignedAndEncryptedBlob

要接收加密和編碼訊息之緩衝區的指標。

此參數可以是 NULL ,可針對記憶體配置目的設定此資訊的大小。 如需詳細資訊,請參閱 擷取未知長度的數據

[in, out] pcbSignedAndEncryptedBlob

DWORD 的指標,指定 pbSignedAndEncryptedBlob 所指向之緩衝區的大小,以位元組為單位。 當函式傳回時,此變數會包含已簽署和加密訊息的大小,以位元組為單位,複製到 *pbSignedAndEncryptedBlob

注意 處理傳回的數據時,應用程式必須使用傳回之數據的實際大小。 實際大小可能比輸入上指定的緩衝區大小稍微小一點。 (輸入時,通常會指定足夠的緩衝區大小,以確保最大可能的輸出數據會符合 buffer.) On 輸出中,此參數所指向的變數會更新,以反映複製到緩衝區的數據的實際大小。
 

傳回值

如果函式成功,則傳回值為非零 (TRUE) 。

如果函式失敗,則傳回值為零, (FALSE) 。

如需擴充錯誤資訊,請呼叫 GetLastError

下列列出 GetLastError 函式最常傳回的錯誤碼。

傳回碼 Description
ERROR_MORE_DATA
如果 pbSignedAndEncryptedBlob 參數指定的緩衝區不足以保存傳回的數據,則函式會設定ERROR_MORE_DATA程序代碼,並以位元組為單位,將所需的緩衝區大小儲存到 由bsSignedAndEncryptedBlob 所指向的變數中。
 
注意 來自所呼叫函式 CryptSignMessageCryptEncryptMessage 的錯誤可能會傳播至此函式。
 

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

簡化的訊息函式