Функция CryptVerifyDetachedMessageSignature (wincrypt.h)

Функция CryptVerifyDetachedMessageSignature проверяет подписанное сообщение, содержащее отсоединяемую подпись или подписи.

Синтаксис

BOOL CryptVerifyDetachedMessageSignature(
  [in]            PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]            DWORD                      dwSignerIndex,
  [in]            const BYTE                 *pbDetachedSignBlob,
  [in]            DWORD                      cbDetachedSignBlob,
  [in]            DWORD                      cToBeSigned,
  [in]            const BYTE * []            rgpbToBeSigned,
  [in]            DWORD []                   rgcbToBeSigned,
  [out, optional] PCCERT_CONTEXT             *ppSignerCert
);

Параметры

[in] pVerifyPara

Указатель на структуру CRYPT_VERIFY_MESSAGE_PARA , содержащую параметры проверки.

[in] dwSignerIndex

Индекс проверяемой подписи. Сообщение может иметь несколько подписывателей, и эту функцию можно вызывать многократно, изменяя dwSignerIndex для проверки других подписей. Если функция возвращает false, а GetLastError возвращает CRYPT_E_NO_SIGNER, предыдущий вызов получил последний подписыватель сообщения.

[in] pbDetachedSignBlob

Указатель на большой двоичный объект, содержащий закодированные сигнатуры сообщений.

[in] cbDetachedSignBlob

Размер отсоединяемой сигнатуры (в байтах).

[in] cToBeSigned

Число элементов массива в rgpbToBeSigned и rgcbToBeSigned.

[in] rgpbToBeSigned

Массив указателей на буферы, содержащие хэширование содержимого.

[in] rgcbToBeSigned

Массив размеров (в байтах) для буферов содержимого, на которые указывает rgpbToBeSigned.

[out, optional] ppSignerCert

Указатель на указатель на CERT_CONTEXT структуру сертификата подписывателя. Завершив использование контекста сертификата, освободите его, вызвав функцию CertFreeCertificateContext . Указатель на структуру CERT_CONTEXT не будет возвращен, если этот параметр имеет значение NULL.

Возвращаемое значение

Если функция выполнена успешно, возвращается ненулевое значение (TRUE).

Если функция завершается сбоем, возвращаемое значение равно нулю (FALSE).

Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.

Ниже перечислены коды ошибок, наиболее часто возвращаемые функцией GetLastError .

Код возврата Описание
E_INVALIDARG
Недопустимые типы кодирования сообщений и сертификатов. В настоящее время поддерживаются только PKCS_7_ASN_ENCODING и X509_ASN_ENCODING_TYPE. Недопустимый cbSize в *pVerifyPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
Не подписанное криптографическое сообщение.
CRYPT_E_NO_SIGNER
Сообщение не содержит подписывающего или подписывающего для указанного dwSignerIndex.
NTE_BAD_ALGID
Сообщение было хэшировано и подписано с помощью неизвестного или неподдерживаемого алгоритма.
NTE_BAD_SIGNATURE
Подпись сообщения не проверена.
 
Примечание В эту функцию могут распространяться ошибки из вызываемых функций CryptCreateHash, CryptHashData, CryptVerifySignature и CryptImportKey .

В случае сбоя функции GetLastError может вернуть ошибку кодирования и декодирования абстрактного синтаксиса (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.

 

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

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

CryptVerifyMessageSignature

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