Go to the documentation of this file.
17 #ifndef USGOV_58cbbc93ca211d1d3a8d23b3465a0ddfa220130869c491eb636d63f598241f67
18 #define USGOV_58cbbc93ca211d1d3a8d23b3465a0ddfa220130869c491eb636d63f598241f67
29 namespace us {
namespace gov {
35 static constexpr uint32_t output_size = 32;
50 void write(
const unsigned char* data,
size_t len);
51 void write(
const vector<unsigned char>&);
54 void finalize(
unsigned char hash[output_size]);
60 uint32_t
inline Ch(uint32_t x, uint32_t y, uint32_t z) {
return z ^ (x & (y ^ z)); }
61 uint32_t
inline Maj(uint32_t x, uint32_t y, uint32_t z) {
return (x & y) | (z & (x | y)); }
62 uint32_t
inline Sigma0(uint32_t x) {
return (x >> 2 | x << 30) ^ (x >> 13 | x << 19) ^ (x >> 22 | x << 10); }
63 uint32_t
inline Sigma1(uint32_t x) {
return (x >> 6 | x << 26) ^ (x >> 11 | x << 21) ^ (x >> 25 | x << 7); }
64 uint32_t
inline sigma0(uint32_t x) {
return (x >> 7 | x << 25) ^ (x >> 18 | x << 14) ^ (x >> 3); }
65 uint32_t
inline sigma1(uint32_t x) {
return (x >> 17 | x << 15) ^ (x >> 19 | x << 13) ^ (x >> 10); }
66 void inline Round(uint32_t a, uint32_t b, uint32_t
c, uint32_t& d, uint32_t e, uint32_t f, uint32_t g, uint32_t& h, uint32_t k, uint32_t w) {
67 uint32_t t1 = h + Sigma1(e) + Ch(e, f, g) + k + w;
68 uint32_t t2 = Sigma0(a) + Maj(a, b,
c);
72 void transform(uint32_t* s,
const unsigned char* chunk);
76 unsigned char buf[64];
97 struct hash<
us::gov::crypto::sha256::value_type> {
99 return *
reinterpret_cast<const size_t*
>(&k[0]);
uint32_t sigma1(uint32_t x)
Definition: sha256.h:65
sha256 hasher_t
Definition: sha256.h:39
void write(const string &data)
size_t operator()(const us::gov::crypto::sha256::value_type &k) const
Definition: sha256.h:98
uint32_t Sigma1(uint32_t x)
Definition: sha256.h:63
static void WriteBE32(unsigned char *ptr, uint32_t x)
Definition: endian_rw.h:24
void write(const unsigned char *data, size_t len)
Definition: ripemd160.h:38
#define unlikely(x)
Definition: likely.h:30
ostream & operator<<(ostream &os, const ec::keys::pub_t &k)
Definition: ec.h:147
value_type(int)
Definition: sha256.h:42
us::gov::crypto::sha256 c
Definition: sha256.cpp:29
static value_type from_b58(const string &)
uint32_t Maj(uint32_t x, uint32_t y, uint32_t z)
Definition: sha256.h:61
void write(const ripemd160::value_type &data)
void initialize(uint32_t *s)
std::vector< unsigned char > decode(const std::string &s)
Definition: base58.cpp:54
static void WriteBE64(unsigned char *ptr, uint64_t x)
Definition: endian_rw.h:25
uint64_t bytes
Definition: sha256.h:77
uint32_t Ch(uint32_t x, uint32_t y, uint32_t z)
Definition: sha256.h:60
void write(const vector< unsigned char > &)
Definition: client.cpp:417
value_type()
Definition: sha256.h:41
void transform(uint32_t *s, const unsigned char *chunk)
std::string encode(const std::string &s)
Definition: base58.cpp:62
Definition: base58.cpp:19
void finalize(value_type &)
uint32_t Sigma0(uint32_t x)
Definition: sha256.h:62
void Round(uint32_t &a, uint32_t b, uint32_t &c, uint32_t d, uint32_t e, uint32_t f, uint32_t x, uint32_t k, int r)
Definition: ripemd160.cpp:50
void finalize(unsigned char hash[output_size])
uint32_t sigma0(uint32_t x)
Definition: sha256.h:64
static uint32_t ReadBE32(const unsigned char *ptr)
Definition: endian_rw.h:22
istream & operator>>(istream &is, ec::keys::pub_t &k)
Definition: ec.h:152
void Round(uint32_t a, uint32_t b, uint32_t c, uint32_t &d, uint32_t e, uint32_t f, uint32_t g, uint32_t &h, uint32_t k, uint32_t w)
Definition: sha256.h:66