структура CMSG_KEY_AGREE_ENCRYPT_INFO (wincrypt.h)
Структура CMSG_KEY_AGREE_ENCRYPT_INFO содержит сведения о шифровании, применимые ко всем получателям соглашения ключа в конвертированном сообщении. Функция PFN_CMSG_EXPORT_KEY_AGREE обновляет эту структуру.
Синтаксис
typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO {
DWORD cbSize;
DWORD dwRecipientIndex;
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
CRYPT_DATA_BLOB UserKeyingMaterial;
DWORD dwOriginatorChoice;
union {
CERT_ID OriginatorCertId;
CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo;
} DUMMYUNIONNAME;
DWORD cKeyAgreeKeyEncryptInfo;
PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO *rgpKeyAgreeKeyEncryptInfo;
DWORD dwFlags;
} CMSG_KEY_AGREE_ENCRYPT_INFO, *PCMSG_KEY_AGREE_ENCRYPT_INFO;
Члены
cbSize
Размер данной структуры (в байтах).
dwRecipientIndex
Значение типа , указывающее порядковый номер получателя в списке получателей, заданном параметром pContentEncryptInfo функции PFN_CMSG_EXPORT_KEY_AGREE .
KeyEncryptionAlgorithm
Структура CRYPT_ALGORITHM_IDENTIFIER , указывающая алгоритм, используемый для шифрования ключа шифрования содержимого. Функция CryptMsgOpenToEncode использует элемент pszObjId структуры CRYPT_ALGORITHM_IDENTIFIER для получения адреса функции, используемой для экспорта ключа. Функцию можно установить с помощью API шифрования: идентификатор объекта (OID) следующего поколения (CNG).
UserKeyingMaterial
Структура CRYPT_DATA_BLOB , содержащая материал ключа пользователя, предоставленный отправителем, чтобы гарантировать, что другой ключ создается каждый раз, когда те же две стороны создают парный ключ.
dwOriginatorChoice
Значение DWORD, указывающее используемый идентификатор ключа. Этот элемент может быть одним из следующих значений.
Значение | Значение |
---|---|
|
OriginatorCertId |
|
OriginatorPublicKeyInfo |
DUMMYUNIONNAME
DUMMYUNIONNAME.OriginatorCertId
Структура CERT_ID , которая идентифицирует открытый ключ инициатора сообщения.
DUMMYUNIONNAME.OriginatorPublicKeyInfo
Структура CERT_PUBLIC_KEY_INFO , содержащая открытый ключ инициатора сообщения.
cKeyAgreeKeyEncryptInfo
Значение типа , указывающее количество получателей в параметре rgpKeyAgreeKeyEncryptInfo .
rgpKeyAgreeKeyEncryptInfo
Массив CMSG_KEY_AGREE_KEY_ENCRYPT_INFO структур, содержащих зашифрованный ключ для каждого получателя.
dwFlags
Значение типа , указывающее, какие элементы были обновлены и чье выделение памяти должно быть освобождено с помощью функции CryptMsgOpenToEncode .
Значение | Значение |
---|---|
|
Обновлен элемент UserKeyingMaterial . |
|
Обновлен элемент pszObjIdструктуры CRYPT_ALGORITHM_IDENTIFIER , на который ссылается элемент KeyEncryptionAlgorithm . |
|
Обновлен элемент Parametersструктуры CRYPT_ALGORITHM_IDENTIFIER , на которую ссылается элемент KeyEncryptionAlgorithm . |
|
Обновлен элемент Algorithm.pszObjIdструктуры CERT_PUBLIC_KEY_INFO , на который ссылается член OriginatorPublicKeyInfo . |
|
Обновлен элемент PublicKeyструктуры CERT_PUBLIC_KEY_INFO , на которую ссылается член OriginatorPublicKeyInfo . |
|
Обновлен элемент Algorithm.Parametersструктуры CERT_PUBLIC_KEY_INFO , на которую ссылается член OriginatorPublicKeyInfo . |
Комментарии
При вызове с параметром dwMsgType , заданным CMSG_ENVELOPED, функция CryptMsgOpenToEncode инициализирует структуру CMSG_KEY_AGREE_ENCRYPT_INFO из структуры CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO . Функция CryptMsgOpenToEncode вызывает функцию PFN_CMSG_EXPORT_KEY_AGREE для обновления структуры CMSG_KEY_AGREE_ENCRYPT_INFO . Если функция обратного вызова не найдена, функция CryptMsgOpenToEncode заполняет эту структуру сведениями о ключе по умолчанию из структуры CMSG_CONTENT_ENCRYPT_INFO .
Функция обратного вызова может обновить следующие элементы структуры CMSG_KEY_AGREE_ENCRYPT_INFO :
- UserKeyingMaterial
- KeyEncryptionAlgorithm.pszObjId
- KeyEncryptionAlgorithm.Parameters
- dwOriginatorChoice
- OriginatorCertId
- OriginatorPublicKeyInfo
- dwFlags
Остальные члены доступны только для чтения.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | wincrypt.h |