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