// Необходимые действия по инициализации криптопровайдера, // получению подписи и подготовке открытого ключа отправителя … /* BYTE * pbData - указатель на буфер с данными DWORD dwDataLen - длина исходных данных BYTE * pbSignature - указатель на буфер с подписью DWORD dwSigLen - длина подписи ALG_ID alg_id - алгоритм получения хеш-данных HCRYPTKEY hSigSenderKey - дескриптор открытого ключа отправителя из ключевой пары для подписи */ HCRYPTHASH hHash = 0; CryptCreateHash(hProv, alg_id, 0 , 0, &hHash)); CryptHashData(hHash, pbData, dwDataLen,0); if ( ! CryptVerifySignature(hHash, pbSignature, dwSigLen, hSigSenderKey, 0, 0) ) { if (GetLastError() == NTE_BAD_IGNATURE) { // неверная подпись } else { // другая ошибка } } CryptDestroyHash(hHash);