PFN_CMSG_CNG_IMPORT_KEY_AGREE callback function (wincrypt.h)
The PFN_CMSG_CNG_IMPORT_KEY_AGREE callback function decrypts a content encryption key (CEK) that is intended for a key agreement recipient. PFN_CMSG_CNG_IMPORT_KEY_AGREE can be installed by using a Cryptography API: Next Generation (CNG) object identifier (OID).
Syntax
PFN_CMSG_CNG_IMPORT_KEY_AGREE PfnCmsgCngImportKeyAgree;
BOOL PfnCmsgCngImportKeyAgree(
[in, out] PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo,
[in] PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara,
[in] DWORD dwFlags,
void *pvReserved
)
{...}
Parameters
[in, out] pCNGContentDecryptInfo
A pointer to a CMSG_CNG_CONTENT_DECRYPT_INFO structure to be updated with the decrypted CEK bytes. This parameter contains the key used to decrypt the CEK. The following pKeyTransDecryptPara parameter contains the CEK bytes to be decrypted.
[in] pKeyAgreeDecryptPara
A pointer to a CMSG_CTRL_KEY_AGREE_DECRYPT_PARA structure that contains the key agreement information passed to the CryptMsgControl function in the CMSG_CTRL_KEY_AGREE_DECRYPT case.
The EncryptedKey member of the pKeyAgree member contains the CEK bytes to be decrypted. Because a CMSG_CTRL_KEY_AGREE_DECRYPT_PARA structure might contain an HCRYPTPROV choice, its hNCryptKey member must not be used to decrypt EncryptedKey. Instead, you must use the hNCryptKey member specified in the pCNGContentDecryptInfo parameter.
This function must not update members of the CMSG_CTRL_KEY_AGREE_DECRYPT_PARA structure.
[in] dwFlags
This parameter is reserved. Set it to zero.
pvReserved
This parameter is reserved. Set it to NULL.
Return value
If the function succeeds, the return value is nonzero (TRUE).
If the function fails, the return value is zero (FALSE). For extended error information, call GetLastError.
If this callback function does not support the key encryption algorithm, it must return FALSE and call SetLastError with ERROR_NOT_SUPPORTED.
Remarks
The CryptMsgControl function calls this function for the following operations specified by the dwCtrlType parameter:
CMSG_CTRL_KEY_AGREE_DECRYPT You can use OID Support Functions to deploy this callback function. Wincrypt.h defines the following constant for this purpose.
Constant | Definition |
---|---|
CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC | "CryptMsgDllCNGImportKeyAgree" |
Examples
For an example that deploys an OID-installable callback function, see Extending CryptoAPI Functionality.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows Vista [desktop apps only] |
Minimum supported server | Windows Server 2008 [desktop apps only] |
Target Platform | Windows |
Header | wincrypt.h |