Функция CryptMsgVerifyCountersignatureEncodedEx (wincrypt.h)
Функция CryptMsgVerifyCountersignatureEncodedEx проверяет, содержит ли параметр pbSignerInfoCounterSignature зашифрованный хэш поля encryptedDigest структуры параметров pbSignerInfo . Подписыватель может быть структурой CERT_PUBLIC_KEY_INFO , контекстом сертификата или контекстом цепочки.
Синтаксис
BOOL CryptMsgVerifyCountersignatureEncodedEx(
[in, optional] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwEncodingType,
[in] PBYTE pbSignerInfo,
[in] DWORD cbSignerInfo,
[in] PBYTE pbSignerInfoCountersignature,
[in] DWORD cbSignerInfoCountersignature,
[in] DWORD dwSignerType,
[in] void *pvSigner,
DWORD dwFlags,
void *pvExtra
);
Параметры
[in, optional] hCryptProv
Этот параметр не используется и должен иметь значение NULL.
Windows Server 2003 и Windows XP: NULL или дескриптор поставщика шифрования , используемый для хэширования поля encryptedDigest pbSignerInfo. Тип данных этого параметра — HCRYPTPROV.
Если нет веской причины для передачи определенного поставщика шифрования в hCryptProv, передайте значение NULL , чтобы использовать поставщик RSA или DSS по умолчанию.
[in] dwEncodingType
Используемый тип кодирования. В настоящее время используются только X509_ASN_ENCODING и PKCS_7_ASN_ENCODING; однако в будущем могут быть добавлены дополнительные типы кодирования. Для любого текущего типа кодирования используйте:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.
[in] pbSignerInfo
Указатель на закодированный BLOB-объект , содержащий подписыватель содержимого сообщения, которое будет подсвечено.
[in] cbSignerInfo
Количество в байтах закодированного большого двоичного объекта для подписывателя содержимого.
[in] pbSignerInfoCountersignature
Указатель на закодированный BLOB-объект, содержащий сведения о подписчике.
[in] cbSignerInfoCountersignature
Число в байтах закодированного большого двоичного объекта для счетчика сообщения.
[in] dwSignerType
Структура, содержащая сведения о подписывшем. В следующей таблице показаны предопределенные значения и указанные структуры.
Значение | Значение |
---|---|
|
pvSigner — это указатель на структуру CERT_PUBLIC_KEY_INFO . |
|
pvSigner — это указатель на структуру CERT_CONTEXT . |
|
pvSigner — это указатель на структуру CERT_CHAIN_CONTEXT . |
[in] pvSigner
Указатель на структуру CERT_PUBLIC_KEY_INFO , контекст сертификата или контекст цепочки в зависимости от значения dwSignerType.
dwFlags
Флаги, изменяющие поведение функции. Это может быть ноль или следующее значение.
Значение | Значение |
---|---|
|
Выполняет строгое проверка подписи после успешной проверки подписи. Задайте параметр pvExtra так, чтобы он указывал на CERT_STRONG_SIGN_PARA структуру, содержащую параметры, необходимые для проверка сигнатуры.
Windows 8 и Windows Server 2012: начинается поддержка этого флага. |
pvExtra
Если для параметра dwFlags задано значение CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG, задайте этот параметр (pvExtra), чтобы указать на CERT_STRONG_SIGN_PARA структуру, содержащую параметры, используемые для проверка надежности сигнатуры.
Возвращаемое значение
Если функция выполнена успешно, возвращается ненулевое значение (TRUE).
Если функция завершается сбоем, возвращаемое значение равно нулю (FALSE). Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.
Следующие коды ошибок чаще всего возвращаются функцией GetLastError .
Код возврата | Описание |
---|---|
|
Сообщение не содержит ожидаемого атрибута, прошедшего проверку подлинности. |
|
Неправильное значение хэша. |
|
Сообщение не закодировано должным образом. |
|
Алгоритм шифрования неизвестен. |
|
Один или несколько аргументов недопустимы. |
|
Не хватает памяти. |
Могут быть возвращены распространенные ошибки из следующих функций.
В случае сбоя функции GetLastError может вернуть ошибку кодирования и декодирования абстрактного синтаксиса (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.Комментарии
Проверка счетчика выполняется с помощью структуры PKCS No 7 SIGNERINFO . Подпись должна содержать зашифрованный хэш поля encryptedDigest pbSignerInfo.
Издатель и серийный номер счетчика должны соответствовать сведениям о подрисовщике из pbSignerInfoCountersignature. Единственными полями, на которые ссылается pciCountersigner , являются SerialNumber, Issuer и SubjectPublicKeyInfo. SubjectPublicKeyInfo используется для доступа к открытому ключу, который затем используется для шифрования хэша от pciCountersigner, поэтому сравните его с хэшом из pbSignerInfo.
Примеры
Пример использования этой функции см. в разделе Пример программы C: кодирование и декодирование сообщения с встречным знаком.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |