35 #include <boost/thread/mutex.hpp> 36 #include <boost/thread/lock_guard.hpp> 37 #include <boost/optional.hpp> 38 #include <type_traits> 69 using secret_key = epee::mlocked<tools::scrubbed<ec_scalar>>;
72 std::vector<public_key> keys;
77 std::vector<secret_key> keys;
107 sizeof(
signature) == 64,
"Invalid structure size");
155 inline void rand(
size_t N, uint8_t *bytes) {
162 typename std::enable_if<std::is_pod<T>::value,
T>::type
rand() {
163 typename std::remove_cv<T>::type res;
240 const public_key *
const *pubs, std::size_t pubs_count,
246 const public_key *
const *pubs, std::size_t pubs_count,
254 const std::vector<const public_key *> &pubs,
260 const std::vector<const public_key *> &pubs,
266 epee::to_hex::formatted(o, epee::as_byte_span(v));
return o;
269 epee::to_hex::formatted(o, epee::as_byte_span(v));
return o;
272 epee::to_hex::formatted(o, epee::as_byte_span(v));
return o;
275 epee::to_hex::formatted(o, epee::as_byte_span(v));
return o;
278 epee::to_hex::formatted(o, epee::as_byte_span(v));
return o;
void derivation_to_scalar(const key_derivation &derivation, size_t output_index, ec_scalar &res)
Definition: crypto.h:199
POD_CLASS ec_point
Definition: crypto.h:57
const uint32_t T[512]
Definition: groestl_tables.h:33
#define CRYPTO_MAKE_COMPARABLE(type)
Definition: generic-ops.h:38
static bool derive_public_key(const key_derivation &, std::size_t, const public_key &, public_key &)
void derive_secret_key(const key_derivation &derivation, std::size_t output_index, const secret_key &base, secret_key &derived_key)
Definition: crypto.h:202
static bool secret_key_to_public_key(const secret_key &, public_key &)
Definition: crypto.cpp:164
static bool check_signature(const hash &, const public_key &, const signature &)
Definition: crypto.cpp:291
list B
Definition: base.py:26
static void generate_key_image(const public_key &, const secret_key &, key_image &)
Definition: crypto.cpp:483
POD_CLASS key_derivation
Definition: crypto.h:85
static bool check_key(const public_key &)
Definition: crypto.cpp:159
bool check_ring_signature(const hash &prefix_hash, const key_image &image, const public_key *const *pubs, std::size_t pubs_count, const signature *sig)
Definition: crypto.h:245
void generate_signature(const hash &prefix_hash, const public_key &pub, const secret_key &sec, signature &sig)
Definition: crypto.h:212
crypto namespace.
Definition: crypto.cpp:59
epee::mlocked< tools::scrubbed< ec_scalar > > secret_key
Definition: crypto.h:69
#define CRYPTO_MAKE_HASHABLE_CONSTANT_TIME(type)
Definition: generic-ops.h:79
POD_CLASS secret_keyV
Definition: crypto.h:76
#define POD_CLASS
Definition: pod-class.h:43
bool generate_key_derivation(const public_key &key1, const secret_key &key2, key_derivation &derivation)
Definition: crypto.h:192
void random32_unbiased(unsigned char *bytes)
Definition: crypto.cpp:111
static bool derive_subaddress_public_key(const public_key &, const key_derivation &, std::size_t, public_key &)
Definition: crypto.cpp:229
const crypto::secret_key null_skey
Definition: crypto.cpp:74
void generate_random_bytes_thread_safe(size_t N, uint8_t *bytes)
Definition: crypto.cpp:92
void generate_tx_proof(const hash &prefix_hash, const public_key &R, const public_key &A, const boost::optional< public_key > &B, const public_key &D, const secret_key &r, signature &sig)
Definition: crypto.h:223
void generate_key_image(const public_key &pub, const secret_key &sec, key_image &image)
Definition: crypto.h:236
void rand(size_t N, uint8_t *bytes)
Definition: crypto.h:155
const crypto::public_key null_pkey
Definition: crypto.cpp:73
POD_CLASS public_keyM
Definition: crypto.h:81
POD_CLASS ec_scalar
Definition: crypto.h:61
bool derive_subaddress_public_key(const public_key &out_key, const key_derivation &derivation, std::size_t output_index, public_key &result)
Definition: crypto.h:206
static secret_key generate_keys(public_key &pub, secret_key &sec, const secret_key &recovery_key=secret_key(), bool recover=false)
Definition: crypto.cpp:137
void generate_ring_signature(const hash &prefix_hash, const key_image &image, const public_key *const *pubs, std::size_t pubs_count, const secret_key &sec, std::size_t sec_index, signature *sig)
Definition: crypto.h:239
friend class crypto_ops
Definition: crypto.h:97
static void generate_tx_proof(const hash &, const public_key &, const public_key &, const boost::optional< public_key > &, const public_key &, const secret_key &, signature &)
Definition: crypto.cpp:315
static void derive_secret_key(const key_derivation &, std::size_t, const secret_key &, secret_key &)
secret_key generate_keys(public_key &pub, secret_key &sec, const secret_key &recovery_key=secret_key(), bool recover=false)
Definition: crypto.h:170
POD_CLASS public_key
Definition: crypto.h:63
static bool generate_key_derivation(const public_key &, const secret_key &, key_derivation &)
Definition: crypto.cpp:174
bool check_tx_proof(const hash &prefix_hash, const public_key &R, const public_key &A, const boost::optional< public_key > &B, const public_key &D, const signature &sig)
Definition: crypto.h:226
POD_CLASS signature
Definition: crypto.h:95
POD_CLASS key_image
Definition: crypto.h:89
void operator=(const crypto_ops &)
bool derive_public_key(const key_derivation &derivation, std::size_t output_index, const public_key &base, public_key &derived_key)
Definition: crypto.h:195
bool check_key(const public_key &key)
Definition: crypto.h:176
void hash_to_scalar(const void *data, size_t length, ec_scalar &res)
Definition: crypto.cpp:127
static bool check_ring_signature(const hash &, const key_image &, const public_key *const *, std::size_t, const signature *)
static bool check_tx_proof(const hash &, const public_key &, const public_key &, const boost::optional< public_key > &, const public_key &, const signature &)
Definition: crypto.cpp:387
POD_CLASS hash
Definition: hash.h:49
static void generate_ring_signature(const hash &, const key_image &, const public_key *const *, std::size_t, const secret_key &, std::size_t, signature *)
std::vector< secret_keyV > column_vectors
Definition: crypto.h:84
std::ostream & operator<<(std::ostream &o, const crypto::public_key &v)
Definition: crypto.h:265
bool secret_key_to_public_key(const secret_key &sec, public_key &pub)
Definition: crypto.h:182
POD_CLASS public_keyV
Definition: crypto.h:71
static void generate_signature(const hash &, const public_key &, const secret_key &, signature &)
Definition: crypto.cpp:261
#define CRYPTO_MAKE_HASHABLE(type)
Definition: generic-ops.h:75
static void derivation_to_scalar(const key_derivation &derivation, size_t output_index, ec_scalar &res)
Definition: crypto.cpp:189
bool check_signature(const hash &prefix_hash, const public_key &pub, const signature &sig)
Definition: crypto.h:215
int rows
Definition: crypto.h:73