#include "hash.hpp" #include <string> #include <cstring> void sha256(std::string &str) { sha256_context ctx; unsigned char *data = new unsigned char[str.length()]; unsigned char digest[32]; char cdigest[64]; std::memcpy(static_cast<void *>(data), static_cast<const void *>(str.c_str()), str.length()); sha256_starts(&ctx); sha256_update(&ctx, data, str.length()); sha256_finish(&ctx, digest); for (int i = 0; i <= 32; ++i) { cdigest[i*2] = "0123456789abcdef"[((digest[i] >> 4) & 0x0F)]; cdigest[i*2+1] = "0123456789abcdef"[((digest[i]) & 0x0F)]; } str.assign(cdigest, 64); delete data; }