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_TRANSPFN_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