Функция CryptMsgVerifyCountersignatureEncoded (wincrypt.h)
Функция CryptMsgVerifyCountersignatureEncoded проверяет контригнатуру с точки зрения структуры SignerInfo (как определено в PKCS 7).
Синтаксис
BOOL CryptMsgVerifyCountersignatureEncoded(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwEncodingType,
[in] PBYTE pbSignerInfo,
[in] DWORD cbSignerInfo,
[in] PBYTE pbSignerInfoCountersignature,
[in] DWORD cbSignerInfoCountersignature,
[in] PCERT_INFO pciCountersigner
);
Параметры
[in] 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] pciCountersigner
Указатель на CERT_INFO , включающую в себя с издателем и серийным номером счетчика. Дополнительные сведения см. в подразделе "Примечания".
Возвращаемое значение
Если функция выполнена успешно, возвращается ненулевое значение (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 |