std::ostream& operator<<(std::ostream& os, Digest<Hash>& digest) { using namespace CryptoPP; std::string output; ConstBufferPtr buffer = digest.computeDigest(); StringSource(buffer->buf(), buffer->size(), true, new HexEncoder(new FileSink(os))); return os; }
bool Validator::verifySignature(const uint8_t* buf, const size_t size, const DigestSha256& sig) { try { ConstBufferPtr buffer = crypto::computeSha256Digest(buf, size); const Block& sigValue = sig.getValue(); if (buffer != nullptr && buffer->size() == sigValue.value_size() && buffer->size() == crypto::SHA256_DIGEST_SIZE) { const uint8_t* p1 = buffer->buf(); const uint8_t* p2 = sigValue.value(); return 0 == memcmp(p1, p2, crypto::SHA256_DIGEST_SIZE); } else return false; } catch (const CryptoPP::Exception& e) { return false; } }