структура 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 определяются для поставщика по умолчанию.

Значение Значение
AT_KEYEXCHANGE
Ключи, используемые для шифрования и расшифровки ключей сеанса.
AT_SIGNATURE
Ключи, используемые для создания и проверки цифровых подписей.

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

См. также раздел

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptMsgControl

CryptMsgCountersign