структура CMSG_ENVELOPED_ENCODE_INFO (wincrypt.h)
Структура CMSG_ENVELOPED_ENCODE_INFO содержит сведения, необходимые для кодирования сообщения в конверте. Он передается в CryptMsgOpenToEncode , если параметр dwMsgType CMSG_ENVELOPED.
Синтаксис
typedef struct _CMSG_ENVELOPED_ENCODE_INFO {
DWORD cbSize;
HCRYPTPROV_LEGACY hCryptProv;
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
void *pvEncryptionAuxInfo;
DWORD cRecipients;
PCERT_INFO *rgpRecipients;
PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
DWORD cCertEncoded;
PCERT_BLOB rgCertEncoded;
DWORD cCrlEncoded;
PCRL_BLOB rgCrlEncoded;
DWORD cAttrCertEncoded;
PCERT_BLOB rgAttrCertEncoded;
DWORD cUnprotectedAttr;
PCRYPT_ATTRIBUTE rgUnprotectedAttr;
} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;
Члены
cbSize
Размер данной структуры (в байтах).
hCryptProv
Этот элемент не используется и должен иметь значение NULL.
Windows Server 2003 и Windows XP: Указывает дескриптор для поставщика служб шифрования (CSP), используемого для шифрования содержимого, шифрования ключа получателя и экспорта. Закрытые ключи hCryptProv не используются.
Тип данных этого элемента — HCRYPTPROV.
Если нет веской причины для передачи определенного поставщика шифрования в hCryptProv, передайте ноль для использования поставщика RSA или DSS по умолчанию.
ContentEncryptionAlgorithm
Структура CRYPT_ALGORITHM_IDENTIFIER , содержащая тип алгоритма подписи и все связанные дополнительные параметры в закодированной форме.
Элемент pszObjId структуры указывает алгоритм, используемый для шифрования содержимого сообщения.
Для следующих алгоритмов шифрования требуется закодированный восьмибайтовый вектор инициализации (IV) в элементе Parameters структуры. Дополнительные сведения см. в разделе CryptSetKeyParam.
Значение | Значение |
---|---|
|
szOID_OIWSEC_desCBC |
|
szOID_RSA_DES_EDE3_CBC |
Если элемент cbData элемента Parameters равен нулю, то с помощью CryptGenRandom создается абстрактная синтаксическая нотация 1 (ASN.1) в кодировке OCTET STRING, содержащая iv.
Алгоритм szOID_RSA_RC2CBC (CALG_RC2) требует, чтобы элемент pbDataэлемента Parameters был закодированной CRYPT_RC2_CBC_PARAMETERS структуре. Если элемент cbData элемента Parameters равен нулю, создается CRYPT_RC2_CBC_PARAMETERS в кодировке ASN.1 со значением по умолчанию 40 для элемента dwVersion . При этом длина ключа по умолчанию равна 40 битам. Эту длину ключа по умолчанию можно переопределить с помощью параметра pvEncryptionAuxInfo , указывающего на структуру CMSG_RC2_AUX_INFO , содержащую нужную длину ключа.
pvEncryptionAuxInfo
Указатель на структуру в зависимости от алгоритма шифрования.
Значение | Значение |
---|---|
|
|
|
|
|
|
|
NULL |
cRecipients
Число элементов в массиве rgpRecipients или rgCmsRecipients .
rgpRecipients
Массив указателей на структуры CERT_INFO , каждая из которых содержит издателя сертификата получателя, SerialNumber и SubjectPublicKeyInfo. Этот массив можно использовать только для получателей, определенных по издателю и серийному номеру. Если rgpRecipients не имеет значение NULL, rgCmsRecipients должен иметь значение NULL.
rgCmsRecipients
Необязательный элемент. Массив указателей на CMSG_RECIPIENT_ENCODE_INFO структуры, содержащие сведения о получателях. Если rgCmsRecipients не имеет значение NULL, rgpRecipients должно иметь значение NULL. для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
cCertEncoded
Необязательный элемент. Значение DWORD , указывающее количество закодированных сертификатов в массиве rgCertEncoded . для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
rgCertEncoded
Необязательный элемент. Массив структур CERT_BLOB . для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
cCrlEncoded
Необязательный элемент. Значение DWORD , указывающее количество закодированных списков отзыва сертификатов в массиве rgCRLEncoded . для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
rgCrlEncoded
Необязательный элемент. Массив структур CRL_BLOB . для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
cAttrCertEncoded
Необязательный элемент. Значение DWORD , указывающее количество закодированных атрибутов сертификата в массиве rgAttrCertEncoded . для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
rgAttrCertEncoded
Необязательный элемент. Массив структур CRYPT_ATTRIBUTE . для ссылки на этот элемент необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
cUnprotectedAttr
Необязательный элемент. Значение DWORD , указывающее количество незащищенных атрибутов в массиве rgUnprotectedAttr . для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
rgUnprotectedAttr
Необязательный элемент. Массив структур CRYPT_ATTRIBUTE . для ссылки на это поле необходимо определить CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | wincrypt.h |