SOIL C++
C++ Unified Device Interface
Hasher.cpp
Go to the documentation of this file.
1#include "Hasher.h"
2#include <openssl/sha.h>
3#include <sstream>
4#include <iomanip>
5
6
7
8std::vector<unsigned char> SIGN::Hasher::sha256(const unsigned char* data, size_t length)
9{
10 SHA256_CTX context;
11 SHA256_Init(&context);
12 SHA256_Update(&context, data, length);
13 std::vector<unsigned char> buffer(SHA256_DIGEST_LENGTH);
14 SHA256_Final(buffer.data(), &context);
15 return buffer;
16
17}
18
20{
21}
22
23
25{
26}
27
28std::vector<unsigned char> SIGN::Hasher::hash()
29{
30 return sha256(data.data(), data.size());
31}
32
34{
35 data.clear();
36}
37
39{
40 return SHA256_DIGEST_LENGTH; ;
41}
42
43std::string SIGN::Hasher::print(std::vector<unsigned char> bytes, bool uppercase)
44{
45 std::ostringstream result;
46
47 for (std::string::size_type i = 0; i < bytes.size();i++)
48 {
49 result << std::hex << std::setfill('0') << std::setw(2) << (uppercase ? std::uppercase : std::nouppercase) << (int)bytes[i];
50 if (i != bytes.size() - 1)
51 {
52 result << std::setw(1) << " ";
53 }
54 }
55
56
57 return result.str();
58}
std::vector< unsigned char > hash()
Hash the data buffer.
Definition: Hasher.cpp:28
static std::vector< unsigned char > sha256(const unsigned char *data, size_t length)
SHA256 hash.
Definition: Hasher.cpp:8
size_t size(void)
Digest size.
Definition: Hasher.cpp:38
~Hasher()
Destructor.
Definition: Hasher.cpp:24
static std::string print(std::vector< unsigned char > bytes, bool uppercase=true)
Print Bytestring.
Definition: Hasher.cpp:43
Hasher()
Constructor.
Definition: Hasher.cpp:19
void reset()
Reset data buffer.
Definition: Hasher.cpp:33