Go to the documentation of this file.
   17 #ifndef USGOV_075dfff39e95d4a4a7a088fe2ea0fc252d6fa47e6b62b043b4babd2e2b511780 
   18 #define USGOV_075dfff39e95d4a4a7a088fe2ea0fc252d6fa47e6b62b043b4babd2e2b511780 
   20 #include <secp256k1.h> 
   30 namespace us { 
namespace gov {
 
   40     ec& operator = (
const ec&)=
delete;
 
   47             static constexpr uint32_t ser_size = 33;
 
   51             pub_t(
const string& b58);
 
   52             pub_t(
const vector<unsigned char>& ser);
 
   53             const hash_t& hash() 
const;
 
   54             pub_t& operator =(
const string&);
 
   55             hash_t compute_hash() 
const;
 
   56             string to_b58() 
const;
 
   57             bool to_vector(vector<unsigned char>& out) 
const;
 
   59             bool set_b58(
const string&);
 
   60             static pub_t from_b58(
const string&);
 
   62             void read_b58(
const string&);
 
   63             void read_ser(
const vector<unsigned char>&);
 
   65             bool operator == (
const pub_t& other) 
const;
 
   66             bool operator != (
const pub_t& other) 
const;
 
   67             bool operator == (
const string& b58) 
const;
 
   68             bool operator != (
const string& b58) 
const;
 
   70             inline void zero() { valid=
false; }
 
   73             mutable bool h{
false};
 
   77         struct priv_t: array<unsigned char,32> {
 
   84             inline void zero() { memset(
this,0,32); }
 
  104             uint32_t unable_serialize_pubkey{0};
 
  105             uint32_t invalid_b58_pubkey{0};
 
  106             uint32_t invalid_ser_pubkey{0};
 
  107             uint32_t error_signing{0};
 
  108             uint32_t error_serializing_signature{0};
 
  109             uint32_t signatures_created{0};
 
  110             uint32_t error_creating_shared_secret{0};
 
  112             uint32_t signature_verification_der_parse_error{0};
 
  113             uint32_t signature_verification_pass{0};
 
  114             uint32_t signature_verification_fail{0};
 
  115             uint32_t privkey_verification_pass{0};
 
  116             uint32_t privkey_verification_fail{0};
 
  117             uint32_t error_priv_2_pub{0};
 
  118             void dump(ostream&os) 
const;
 
  120         static counters_t counters;
 
  123     static constexpr uint32_t 
bit_size() { 
return 256; }
 
  125     typedef vector<unsigned char> 
sig_t;
 
  126     static vector<unsigned char> 
from_b58(
const string& hex);
 
  156         is.setstate(ios_base::failbit);
 
  171         is.setstate(ios_base::failbit);
 
  
 
bool operator!=(const pub_t &other) const
Definition: ec.cpp:252
void reset(const priv_t &)
bool set_b58(const string &)
us::gov::crypto::ec c
Definition: ec.cpp:30
bool verify(const keys::pub_t &pk, const sigmsg_hasher_t::value_type &msgh, const sig_t &signature_der, ostream &err) const
hasher_t::value_type hash_t
Definition: ec.h:46
bool to_vector(vector< unsigned char > &out) const
Definition: ec.cpp:152
static constexpr uint32_t bit_size()
Definition: ec.h:123
bool verify_not_normalized(const keys::pub_t &pk, const string &text, const sig_t &signature_der) const
void finalize(unsigned char hash[output_size])
pub_t & operator=(const string &)
Definition: ec.cpp:236
void write(const unsigned char *data, size_t len)
bool verify(const keys::pub_t &pk, const sigmsg_hasher_t::value_type &msgh, const sig_t &signature_der) const
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
size_t operator()(const us::gov::crypto::ec::keys::pub_t &) const
Definition: ec.cpp:636
bool operator==(const pub_t &other) const
Definition: ec.cpp:246
secp256k1_ecdsa_signature signature
Definition: ec.h:35
static pub_t from_b58(const string &)
Definition: ec.cpp:232
static priv_t from_b58(const string &)
bool valid
Definition: ec.h:71
void read_b58(const string &)
Definition: ec.cpp:212
bool h
Definition: ec.h:73
static pub_t get_pubkey(const priv_t &privkey)
static pub_t from_hex(const string &)
void read_ser(const vector< unsigned char > &)
Definition: ec.cpp:193
ko sign(const keys::priv_t &pk, const vector< unsigned char > &msg, sig_t &signature) const
static ec instance
Definition: ec.h:143
hash_t compute_hash() const
Definition: ec.cpp:113
pub_t()
Definition: ec.cpp:94
std::vector< unsigned char > decode(const std::string &s)
Definition: base58.cpp:54
bool verify(const keys::pub_t &pk, const vector< unsigned char > &msg, const sig_t &signature_der) const
ko generate_shared_key(unsigned char *, size_t, const keys::priv_t &, const keys::pub_t &)
peer::daemon::pub_t pub_t
Definition: auth_app.h:53
bool verify_not_normalized(const keys::pub_t &pk, const sigmsg_hasher_t::value_type &, const sig_t &signature_der) const
const ko_t * ko
Definition: ko.h:27
void zero()
Definition: ec.h:70
Definition: ripemd160.h:34
priv_t priv
Definition: ec.h:98
pub_t pub
Definition: ec.h:99
Definition: client.cpp:417
static constexpr ko ok
Definition: ko.h:28
static bool verify(const priv_t &privkey)
crypto::ripemd160 hasher_t
Definition: ec.h:45
crypto::ec::keys keys
Definition: app.h:52
bool set_b58(const string &)
Definition: ec.cpp:241
#define likely(x)
Definition: likely.h:29
int reset_if_distinct(const priv_t &)
keys()
Definition: ec.h:88
std::string encode(const std::string &s)
Definition: base58.cpp:62
ko sign(const keys::priv_t &pk, const sigmsg_hasher_t::value_type &, sig_t &signature) const
priv_t(const string &b58)
ko sign(const keys::priv_t &pk, const string &text, sig_t &signature) const
const hash_t & hash() const
Definition: ec.cpp:105
Definition: base58.cpp:19
bool verify(const keys::pub_t &pk, const string &text, const sig_t &signature_der) const
void write(const vector< unsigned char > &)
bool verify_not_normalized(const keys::pub_t &pk, const vector< unsigned char > &msg, const sig_t &signature_der) const
sha256 sigmsg_hasher_t
Definition: ec.h:36
string to_b58() const
Definition: ec.cpp:173
static vector< unsigned char > from_b58(const string &hex)
static void secperr_callback(const char *str, void *data)
Definition: ec.cpp:38
void finalize(unsigned char hash[output_size])
void zero()
Definition: ec.h:84
vector< unsigned char > sig_t
Definition: ec.h:125
#define log
Definition: gov.h:83
hash_t hash_cached
Definition: ec.h:74
secp256k1_context * ctx
Definition: ec.h:144
istream & operator>>(istream &is, ec::keys::pub_t &k)
Definition: ec.h:152