PFN_CMSG_EXPORT_KEY_AGREE回呼函式 (wincrypt.h)
PFN_CMSG_EXPORT_KEY_AGREE 回呼函式會加密並匯出信封郵件之金鑰合約收件者的內容加密金鑰。 您可以使用 CryptoAPI物件識別碼 (OID) 來安裝 PFN_CMSG_EXPORT_KEY_AGREE。 當 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 函式必須更新 rgpKeyAgreeKeyEncryptIn fo 所參考之 CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 結構的 EncryptedKey 成員,CMSG_KEY_AGREE_ENCRYPT_INFO 結構的成員 pKeyAgreeEncryptInfo 參數所指向。 此函式必須使用 pfnAlloc 和 pfnFreepContentEncryptInfo 參數所指向之 CMSG_CONTENT_ENCRYPT_INFO 結構的成員來管理其更新之任何值的記憶體。
如果,在輸入時, pContentEncryptInfo 成員所指向之 CMSG_CONTENT_ENCRYPT_INFO 結構的 dwEncryptFlags 成員會設定為 CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG, e OriginatorPublicKeyInfo 所參考之 CERT_PUBLIC_KEY_INFO 結構的暫時 PublicKey 成員 CMSG_KEY_AGREE_ENCRYPT_INFO 結構pKeyAgreeEncryptInfo 參數應該以零填補,以一律取得相同的編碼長度上限。
您可以使用 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 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wincrypt.h |