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