Функция 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 .

Код возврата Описание
CRYPT_E_AUTH_ATTR_MISSING
Сообщение не содержит ожидаемого атрибута, прошедшего проверку подлинности.
CRYPT_E_HASH_VALUE
Неправильное значение хэша.
CRYPT_E_UNEXPECTED_ENCODING
Сообщение не закодировано должным образом.
CRYPT_E_UNKNOWN_ALGO
Алгоритм шифрования неизвестен.
E_INVALIDARG
Один или несколько аргументов недопустимы.
E_OUTOFMEMORY
Не хватает памяти.
 

Могут быть возвращены распространенные ошибки из следующих функций.

В случае сбоя функции 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

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

CryptMsgCountersign

CryptMsgCountersignEncoded

Функции сообщений низкого уровня

Упрощенные функции сообщений