Crypto ++ проверяет подпись большого файла - PullRequest
0 голосов
/ 24 октября 2018

Я использую этот код для проверки сообщения с помощью crypto ++:

CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::Verifier verifier(key);
bool result = verifier.VerifyMessage( (const CryptoPP::byte*)message.data(), message.length(), (const CryptoPP::byte*)signature.data(), signature.length() );

Теперь я хотел бы проверить подпись, которую я ранее создал для файла.Файл довольно большой (ГБ), и я не хочу загружать его в память одним куском (в переменную сообщения).

Есть ли способ, которым crypto ++ может проверить подпись большого файла?

1 Ответ

0 голосов
/ 27 октября 2018

Этот код делает то, что мне нужно:

 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::PublicKey key; key.Load(queue);
 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::Verifier verifier(key);

 CryptoPP::SignatureVerificationFilter verificationFilter(verifier, NULL, CryptoPP::SignatureVerificationFilter::SIGNATURE_AT_BEGIN);
 CryptoPP::FileSource fileSource( file, false, new CryptoPP::Redirector(verificationFilter));
 CryptoPP::StringSource signatureSource( (const CryptoPP::byte*)signature.data(), signature.length(), false, new CryptoPP::Redirector(verificationFilter));
 signatureSource.Pump(signature.length());
 fileSource.PumpAll();

 return verificationFilter.GetLastResult();
...