структура CRYPT_SIGN_MESSAGE_PARA (wincrypt.h)
Структура CRYPT_SIGN_MESSAGE_PARA содержит сведения для подписывания сообщений с помощью указанного контекста сертификата подписи.
Синтаксис
typedef struct _CRYPT_SIGN_MESSAGE_PARA {
DWORD cbSize;
DWORD dwMsgEncodingType;
PCCERT_CONTEXT pSigningCert;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cMsgCert;
PCCERT_CONTEXT *rgpMsgCert;
DWORD cMsgCrl;
PCCRL_CONTEXT *rgpMsgCrl;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
DWORD dwFlags;
DWORD dwInnerContentType;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;
Члены
cbSize
Размер этой структуры в байтах.
dwMsgEncodingType
Тип используемой кодировки. Всегда допустимо указывать типы кодирования сертификатов и сообщений, объединяя их с побитовой операцией ИЛИ , как показано в следующем примере:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
В настоящее время определены следующие типы кодирования:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
pSigningCert
Указатель на CERT_CONTEXT , который будет использоваться при подписи.
Для контекста необходимо задать свойство CERT_KEY_PROV_INFO_PROP_ID или CERT_KEY_CONTEXT_PROP_ID, чтобы предоставить доступ к закрытому ключу подписи.
HashAlgorithm
CRYPT_ALGORITHM_IDENTIFIER, содержащий алгоритм хэширования, используемый для хэширования подписываемого данных.
pvHashAuxInfo
В настоящее время не используется и должен иметь значение NULL.
cMsgCert
Число элементов в массиве rgpMsgCertCERT_CONTEXT структур. Если задано значение "Ноль", в подписанное сообщение не включаются сертификаты.
rgpMsgCert
Массив указателей на CERT_CONTEXT структуры, которые будут включены в подписанное сообщение. Если необходимо включить pSigningCert , указатель на него должен находиться в массиве rgpMsgCert .
cMsgCrl
Число элементов в массиве rgpMsgCrl указателей на структуры CRL_CONTEXT . Если задано нулевое значение, то в подписанное сообщение не включаются CRL_CONTEXT структуры.
rgpMsgCrl
Массив указателей на CRL_CONTEXT структуры, которые будут включены в подписанное сообщение.
cAuthAttr
Количество элементов в массиве rgAuthAttr . Если в rgAuthAttr нет атрибутов, прошедших проверку подлинности, этот элемент имеет значение 0.
rgAuthAttr
Массив указателей на CRYPT_ATTRIBUTE структуры, каждая из которых содержит сведения об атрибутах, прошедших проверку подлинности. При наличии атрибутов, прошедших проверку подлинности, стандарт PKCS 9 предписывает наличие по крайней мере двух атрибутов: идентификатор объекта типа контента (OID) и хэш самого сообщения. Эти атрибуты автоматически добавляются системой.
cUnauthAttr
Количество элементов в массиве rgUnauthAttr . Если в rgUnauthAttr нет атрибутов, не прошли проверку подлинности, этот элемент равен нулю.
rgUnauthAttr
Массив указателей на CRYPT_ATTRIBUTE структуры, каждая из которых содержит сведения об атрибутах, не прошли проверку подлинности. Атрибуты без проверки подлинности можно использовать для хранения подстановок, среди прочего.
dwFlags
Обычно ноль. Если закодированные выходные данные должны быть CMSG_SIGNED внутренним содержимым внешнего криптографического сообщения, например CMSG_ENVELOPED сообщения, необходимо задать CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG. Если он не задан, сообщение будет закодировано как внутренний тип контента CMSG_DATA.
CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG можно настроить так, чтобы инкапсулировать внутреннее содержимое , отличное от данных, в строку OCTET. CRYPT_MESSAGE_KEYID_SIGNER_FLAG можно настроить для идентификации подписывателей по идентификатору ключа, а не по издателю и серийному номеру.
CRYPT_MESSAGE_SILENT_KEYSET_FLAG можно настроить так, чтобы поставщик служб CSP подавлял любой пользовательский интерфейс. Дополнительные сведения о флаге CRYPT_SILENT см. в разделе CryptAcquireContext.
dwInnerContentType
Обычно ноль. Задайте для параметра тип кодирования входного сообщения, если входные данные для подписи являются закодированными выходными данными другого криптографического сообщения.
HashEncryptionAlgorithm
CRYPT_ALGORITHM_IDENTIFIER. Если он присутствует, а не null, он используется вместо элемента PublicKeyInfo.Algorithm сертификата подписывщего. Обратите внимание, что для RSA алгоритм хэш-шифрования обычно совпадает с алгоритмом открытого ключа. Для DSA алгоритм хэш-шифрования обычно является алгоритмом подписи DSS. Этот элемент можно использовать, только если определен CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS.
pvHashEncryptionAuxInfo
В настоящее время не используется и должен иметь значение NULL. Этот элемент можно использовать, только если определен CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS.
Комментарии
Члены HashEncryptionAlgorithm и pvHashEncryptionAuxInfo можно использовать, только если определен CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | wincrypt.h |