PFN_CMSG_CNG_IMPORT_KEY_TRANS回调函数 (wincrypt.h)
PFN_CMSG_CNG_IMPORT_KEY_TRANS回调函数 (适用于密钥传输接收方的 CEK) 导入和解密内容加密密钥。 可以使用加密 API 安装PFN_CMSG_CNG_IMPORT_KEY_TRANS:下一代 (CNG) 对象标识符 (OID) 。
语法
PFN_CMSG_CNG_IMPORT_KEY_TRANS PfnCmsgCngImportKeyTrans;
BOOL PfnCmsgCngImportKeyTrans(
[in, out] PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo,
[in] PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara,
[in] DWORD dwFlags,
void *pvReserved
)
{...}
参数
[in, out] pCNGContentDecryptInfo
指向要用解密的 CEK 字节更新 的 CMSG_CNG_CONTENT_DECRYPT_INFO 结构的指针。 此参数包含用于解密 CEK 的密钥。 以下 pKeyTransDecryptPara 参数包含要解密的 CEK 字节。
[in] pKeyTransDecryptPara
指向CMSG_CTRL_KEY_TRANS_DECRYPT_PARA 结构的指针,该结构包含CMSG_CTRL_DECRYPT或CMSG_CTRL_KEY_TRANS_DECRYPT情况下传递给 CryptMsgControl 函数的密钥传输信息。 对于 CMSG_CTRL_DECRYPT 情况, CryptMsgControl 将 CMSG_CTRL_DECRYPT_PARA 结构转换为 CMSG_CTRL_KEY_TRANS_DECRYPT_PARA 结构。
pKeyTrans 成员的 EncryptedKey 成员包含要解密的 CEK 字节。 由于 CMSG_CTRL_KEY_TRANS_DECRYPT_PARA 结构可能包含 HCRYPTPROV 选项,因此其 hNCryptKey 成员不得用于解密 EncryptedKey。 相反,必须使用 pCNGContentDecryptInfo 参数中指定的 hNCryptKey。
此函数不得更新 CMSG_CTRL_KEY_TRANS_DECRYPT_PARA 结构的成员。
[in] dwFlags
此参数为保留参数。 将其设置为零。
pvReserved
此参数为保留参数。 将其设置为 NULL。
返回值
如果函数成功,则返回值为非零 (TRUE) 。
如果函数失败,则返回值为零 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError。
如果此回调函数不支持密钥加密算法,则必须返回 FALSE 并使用 ERROR_NOT_SUPPORTED调用 SetLastError 。
注解
CryptMsgControl 函数为 dwCtrlType 参数指定的以下操作调用此函数:
CMSG_CTRL_DECRYPTCMSG_CTRL_KEY_TRANS_DECRYPT 可以使用 OID 支持函数 部署此回调函数。 Wincrypt.h 为此定义以下常量。
一直 | 定义 |
---|---|
CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC | “CryptMsgDllCNGImportKeyTrans” |
示例
有关部署 OID 可安装的回调函数的示例,请参阅 扩展 CryptoAPI 功能。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |