CMSG_CNG_CONTENT_DECRYPT_INFO 结构 (wincrypt.h)
CMSG_CNG_CONTENT_DECRYPT_INFO结构包含在 CryptMsgControl 和对象标识符之间传递的所有相关信息, (OID) 可安装函数,用于导入和解密加密 API:下一代 (CNG) 内容加密密钥 (CEK) 。 CryptMsgControl 函数使用此结构调用以下函数:
语法
typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO {
DWORD cbSize;
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
PFN_CMSG_ALLOC pfnAlloc;
PFN_CMSG_FREE pfnFree;
NCRYPT_KEY_HANDLE hNCryptKey;
BYTE *pbContentEncryptKey;
DWORD cbContentEncryptKey;
BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
BYTE *pbCNGContentEncryptKeyObject;
} CMSG_CNG_CONTENT_DECRYPT_INFO, *PCMSG_CNG_CONTENT_DECRYPT_INFO;
成员
cbSize
包含此结构的大小(以字节为单位)。
ContentEncryptionAlgorithm
一个CRYPT_ALGORITHM_IDENTIFIER结构,指定用于加密消息内容和任何关联参数的算法。
pfnAlloc
指向用于为任何更新成员分配内存的可安装函数的指针。
pfnFree
指向用于释放 pfnAlloc 分配的内存的可安装函数的指针。
hNCryptKey
CNG 私钥的句柄,用于解密 pKeyTransDecryptPara 参数或 PFN_CMSG_CNG_IMPORT_KEY_TRANS 函数的 pKeyAgreeDecryptPara 参数中包含的 CEK。 回调函数必须使用此密钥而不是 DecryptPara 结构中包含的密钥,因为该结构可能包含转换后的 HCRYPTPROV 句柄。
pbContentEncryptKey
使用 hNCryptKey 成员, PFN_CMSG_CNG_IMPORT_KEY_TRANS 函数必须通过解密 pKeyTransDecryptPara 参数中的 CEK 来更新此成员, 否则PFN_CMSG_CNG_IMPORT_KEY_AGREE 函数必须通过解密 pKeyAgreeDecryptPara 参数中的 EncryptedKey 来更新此成员。 必须使用 pfnAlloc 成员分配此成员的内存。 PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY函数将使用这些字节作为机密来生成 hCNGContentEncryptKey 成员。 即使发生错误,也必须使用 pfnFree 成员释放并零分配的任何内存。
cbContentEncryptKey
PFN_CMSG_CNG_IMPORT_KEY_TRANS 或 PFN_CMSG_CNG_IMPORT_KEY_AGREE 函数必须使用上述 pbContentEncryptKey 成员的大小(以字节为单位)更新此成员。
hCNGContentEncryptKey
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY函数必须使用生成的BCRYPT_KEY_HANDLE更新此成员,以便用于内容解密。 即使发生错误,也必须使用 BCryptDestroyKey 函数释放此句柄。
pbCNGContentEncryptKeyObject
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY 函数必须使用 pfnAlloc 成员分配的内存更新此成员,以便与 hCNGContentEncryptKey 成员相关联。 即使发生错误,也必须使用 pfnFree 成员释放并零分配的任何内存。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
标头 | wincrypt.h |