структура CMSG_SIGNER_ENCODE_INFO (wincrypt.h)
Структура CMSG_SIGNER_ENCODE_INFO содержит сведения о подписывшем. Он передается в CryptMsgCountersign, CryptMsgCountersignEncoded и при необходимости в CryptMsgOpenToEncode в качестве члена структуры CMSG_SIGNED_ENCODE_INFO , если параметр dwMsgType имеет CMSG_SIGNED.
Синтаксис
typedef struct _CMSG_SIGNER_ENCODE_INFO {
DWORD cbSize;
PCERT_INFO pCertInfo;
union {
HCRYPTPROV hCryptProv;
NCRYPT_KEY_HANDLE hNCryptKey;
BCRYPT_KEY_HANDLE hBCryptKey;
} DUMMYUNIONNAME;
DWORD dwKeySpec;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
CERT_ID SignerId;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;
Члены
cbSize
Размер данной структуры (в байтах).
pCertInfo
Указатель на структуру CERT_INFO , содержащую
Элементы Issuer, SerialNumber и SubjectPublicKeyInfo .
Объединенные элементы pbData структур Issuer и SerialNumber однозначно идентифицируют сертификат. Элемент Algorithm структуры SubjectPublicKeyInfo указывает используемый алгоритм хэш-шифрования .
DUMMYUNIONNAME
DUMMYUNIONNAME.hCryptProv
Дескриптор поставщика служб шифрования (CSP). Если параметр HashEncryptionAlgorithm имеет значение szOID_PKIX_NO_SIGNATURE, этот дескриптор может быть дескриптором CSP, полученного с помощью параметра dwFlags , для которого задано значение CRYPT_VERIFYCONTEXT. Функция CNG NCryptIsKeyHandle вызывается для определения выбора объединения.
DUMMYUNIONNAME.hNCryptKey
Дескриптор CSP CNG. Функция CNG NCryptIsKeyHandle вызывается для определения выбора объединения. Новые алгоритмы шифрования поддерживаются только в функциях CNG. Функция CNG NCryptTranslateHandle будет вызвана для преобразования варианта CryptoAPI hCryptProv при необходимости. Рекомендуется, чтобы приложения передавали члену hNCryptKey дескриптор CSP CNG, возвращаемый функцией NCryptOpenKey .
DUMMYUNIONNAME.hBCryptKey
dwKeySpec
Указывает используемый закрытый ключ. Этот элемент не используется при использовании элемента hNCryptKey .
Если параметр dwKeySpec равен нулю, используется значение AT_KEYEXCHANGE по умолчанию.
Следующие значения dwKeySpec определяются для поставщика по умолчанию.
Значение | Значение |
---|---|
|
Ключи, используемые для шифрования и расшифровки ключей сеанса. |
|
Ключи, используемые для создания и проверки цифровых подписей. |
HashAlgorithm
Структура CRYPT_ALGORITHM_IDENTIFIER , задающая хэш-алгоритм.
pvHashAuxInfo
Не используется. Для этого элемента необходимо задать значение NULL.
cAuthAttr
Количество элементов в массиве rgAuthAttr . Если в rgAuthAttr нет атрибутов, прошедших проверку подлинности, значение cAuthAttr равно нулю.
rgAuthAttr
Массив указателей на CRYPT_ATTRIBUTE структуры, каждая из которых содержит сведения об атрибутах, прошедших проверку подлинности.
Стандарт PKCS #9 предписывает, что при наличии атрибутов должно быть по крайней мере два: идентификатор объекта типа контента (OID) и хэш сообщения. Эти атрибуты автоматически добавляются системой.
cUnauthAttr
Количество элементов в массиве rgUnauthAttr . Если атрибуты, не прошли проверку подлинности, значение cUnauthAttr равно нулю.
rgUnauthAttr
Массив указателей на CRYPT_ATTRIBUTE структуры, каждая из которых содержит сведения об атрибутах без проверки подлинности. Атрибуты без проверки подлинности могут содержать, помимо прочего, встречные знаки.
SignerId
Структура CERT_ID , содержащая уникальный идентификатор сертификата подписывателя. При необходимости этот элемент можно использовать с PKCS 7 с синтаксисом криптографических сообщений (CMS). Если этот элемент не равен NULL , а его член dwIdChoice не равен нулю, он используется для идентификации сертификата вместо членов Issuer и SerialNumberструктуры CERT_INFO , на которую указывает pCertInfo. CMS поддерживает структуры KEY_IDENTIFIER и ISSUER_SERIAL_NUMBER CERT_ID. PKCS версии 1.5 поддерживает только ISSUER_SERIAL_NUMBER CERT_ID вариант. Этот элемент используется с CMS для обработки PKCS 7 и может использоваться только в том случае, если определен CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.
HashEncryptionAlgorithm
Структура CRYPT_ALGORITHM_IDENTIFIER , используемая при необходимости с PKCS #7 с CMS. Если этот элемент не имеет значение NULL, то вместо алгоритма SubjectPublicKeyInfo.Algorithm используется определенный алгоритм. Если для этого элемента задано значение szOID_PKIX_NO_SIGNATURE, значение подписи содержит только хэш-октеты.
Для RSA алгоритм хэш-шифрования обычно совпадает с алгоритмом открытого ключа. Для DSA алгоритм хэш-шифрования обычно является алгоритмом подписи DSS.
Этот элемент используется с CMS для обработки PKCS 7 и может использоваться только в том случае, если определен CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.
pvHashEncryptionAuxInfo
Этот элемент не используется. Этот элемент должен иметь значение NULL , если он присутствует в структуре данных. Этот элемент присутствует только в том случае, если определен CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | wincrypt.h |