PFN_CMSG_EXPORT_KEY_AGREE回呼函式 (wincrypt.h)

PFN_CMSG_EXPORT_KEY_AGREE回呼函式會加密並匯出信封郵件之金鑰合約收件者的內容加密金鑰。 PFN_CMSG_EXPORT_KEY_AGREE 可以使用 CryptoAPI物件識別碼 (OID) 來安裝。 當其 dwMsgType參數設定為CMSG_ENVELOPED時,CryptMsgOpenToEncode函式會呼叫此函式。

語法

PFN_CMSG_EXPORT_KEY_AGREE PfnCmsgExportKeyAgree;

BOOL PfnCmsgExportKeyAgree(
  [in]      PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
  [in]      PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,
  [in, out] PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,
  [in]      DWORD dwFlags,
            void *pvReserved
)
{...}

參數

[in] pContentEncryptInfo

包含內容加密金鑰 之CMSG_CONTENT_ENCRYPT_INFO 結構的指標。

[in] pKeyAgreeEncodeInfo

CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO結構的指標,指定用來加密內容加密金鑰的金鑰。

[in, out] pKeyAgreeEncryptInfo

包含加密內容加密金鑰 之CMSG_KEY_AGREE_ENCRYPT_INFO 結構的指標。

[in] dwFlags

不使用這個值。 將它設定為零。

pvReserved

此參數是保留的,而且必須是 Null。

傳回值

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

如果函式失敗,傳回值為零, (FALSE) 。 如需擴充的錯誤資訊,請呼叫 GetLastError

備註

對於每個收件者金鑰,PFN_CMSG_EXPORT_KEY_AGREE函式必須更新pKeyAgreeEncryptInfo參數所指向之 CMSG_KEY_AGREE_ENCRYPT_INFO結構之rgpKeyAgreeKeyEncryptInfo所參考之CMSG_KEY_AGREE_KEY_ENCRYPT_INFO結構的EncryptedKey成員。 此函式必須使用pContentEncryptInfo參數所指向之CMSG_CONTENT_ENCRYPT_INFO結構的pfnAllocpfnFree成員來管理其更新之任何值的記憶體。

如果進入時,pContentEncryptInfo成員所指向之CMSG_CONTENT_ENCRYPT_INFO結構的dwEncryptFlags成員會設定為CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAGCERT_PUBLIC_KEY_INFO 結構的暫時PublicKey 成員,由pKeyAgreeEncryptInfo所指向之CMSG_KEY_AGREE_ENCRYPT_INFO結構的OriginatorPublicKeyInfo成員所參考參數應該以零填補,以一律取得相同的編碼長度上限。

注意 產生的暫時 Y 公開金鑰長度可能會根據前置零位的數目而有所不同。

 

您可以使用 OID 支援函式 來部署此回呼函式。 Wincrypt.h 會為此目的定義下列常數。

您必須為 CAPI1 金鑰和密碼編譯 API 定義不同的回呼函式:新一代 (CNG) 金鑰。 這兩個函式都有相同的簽章,但使用不同的 OID。 呼叫哪個函式取決於pContentEncryptInfo參數所指向之CMSG_CONTENT_ENCRYPT_INFO結構的fCNG成員值。 下表顯示回呼函式與 fCNG 成員值之間的關聯性。

fCNG 值 常數 定義
FALSE CMSG_OID_EXPORT_KEY_AGREE_FUNC或CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC 「CryptMsgDllExportKeyAgree」
TRUE CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC 「CryptMsgDllCNGExportKeyAgree」

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 wincrypt.h