структура CMSG_CNG_CONTENT_DECRYPT_INFO (wincrypt.h)
Структура CMSG_CNG_CONTENT_DECRYPT_INFO содержит всю соответствующую информацию, передаваемую между CryptMsgControl и устанавливаемыми функциями идентификатора объекта (OID) для импорта и расшифровки ключа шифрования содержимого (CNG) API шифрования следующего поколения (CNG). Функция 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, который будет использоваться для расшифровки CEK, содержащегося в параметре pKeyTransDecryptPara или параметре pKeyAgreeDecryptPara функции PFN_CMSG_CNG_IMPORT_KEY_TRANS . Функции обратного вызова должны использовать этот ключ вместо ключа, содержащегося в структуре DecryptPara , так как эта структура может содержать преобразованный дескриптор HCRYPTPROV .
pbContentEncryptKey
Используя элемент hNCryptKey , функция PFN_CMSG_CNG_IMPORT_KEY_TRANS должна обновить этот элемент путем расшифровки CEK в параметре pKeyTransDecryptPara , или функция PFN_CMSG_CNG_IMPORT_KEY_AGREE должна обновить этот элемент путем расшифровки EncryptedKey в параметре pKeyAgreeDecryptPara . Память для этого элемента должна быть выделена с помощью элемента 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 , который будет использоваться для расшифровки содержимого. Даже при возникновении ошибки необходимо освободить этот дескриптор с помощью функции BCryptDeographyKey .
pbCNGContentEncryptKeyObject
Функция PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY должна обновить этот элемент, указав память, выделенную элементом pfnAlloc , чтобы ее можно было связать с элементом hCNGContentEncryptKey . Даже при возникновении ошибки необходимо освободить и обнулить выделенную память с помощью элемента pfnFree .
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Верхняя часть | wincrypt.h |