35#include <boost/optional.hpp>
75 std::vector<public_key> keys;
80 std::vector<secret_key> keys;
177 static_assert(std::is_standard_layout<T>(),
"cannot write random bytes into non-standard layout type");
178 static_assert(std::is_trivially_copyable<T>(),
"cannot write random bytes into non-trivially copyable type");
179 typename std::remove_cv<T>::type res;
197 typename std::enable_if<std::is_integral<T>::value,
T>::type
rand_range(
T range_min,
T range_max) {
199 std::uniform_int_distribution<T> dis(range_min, range_max);
206 typename std::enable_if<std::is_unsigned<T>::value,
T>::type
rand_idx(
T sz) {
289 const public_key *
const *pubs, std::size_t pubs_count,
295 const public_key *
const *pubs, std::size_t pubs_count,
303 const std::vector<const public_key *> &pubs,
309 const std::vector<const public_key *> &pubs,
static bool check_key(const public_key &)
Definition crypto.cpp:175
void operator=(const crypto_ops &)
static void derive_secret_key(const key_derivation &, std::size_t, const secret_key &, secret_key &)
static bool check_tx_proof(const hash &, const public_key &, const public_key &, const boost::optional< public_key > &, const public_key &, const signature &, const int)
Definition crypto.cpp:525
static void generate_signature(const hash &, const public_key &, const secret_key &, signature &)
Definition crypto.cpp:307
static bool derive_subaddress_public_key(const public_key &, const key_derivation &, std::size_t, public_key &)
Definition crypto.cpp:262
static bool derive_public_key(const key_derivation &, std::size_t, const public_key &, public_key &)
static void derive_view_tag(const key_derivation &, std::size_t, view_tag &)
crypto_ops(const crypto_ops &)
static void derivation_to_scalar(const key_derivation &derivation, size_t output_index, ec_scalar &res)
Definition crypto.cpp:222
static bool check_signature(const hash &, const public_key &, const signature &)
Definition crypto.cpp:336
static void generate_ring_signature(const hash &, const key_image &, const public_key *const *, std::size_t, const secret_key &, std::size_t, signature *)
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:440
static secret_key generate_keys(public_key &pub, secret_key &sec, const secret_key &recovery_key=secret_key(), bool recover=false)
Definition crypto.cpp:153
static bool generate_key_derivation(const public_key &, const secret_key &, key_derivation &)
Definition crypto.cpp:207
static void generate_tx_proof_v1(const hash &, const public_key &, const public_key &, const boost::optional< public_key > &, const public_key &, const secret_key &, signature &)
Definition crypto.cpp:364
static bool check_ring_signature(const hash &, const key_image &, const public_key *const *, std::size_t, const signature *)
static bool secret_key_to_public_key(const secret_key &, public_key &)
Definition crypto.cpp:197
static void generate_key_image(const public_key &, const secret_key &, key_image &)
Definition crypto.cpp:638
#define CRYPTO_MAKE_HASHABLE_CONSTANT_TIME(type)
Definition generic-ops.h:95
#define CRYPTO_MAKE_COMPARABLE(type)
Definition generic-ops.h:43
#define CRYPTO_MAKE_HASHABLE(type)
Definition generic-ops.h:91
void * memcpy(void *a, const void *b, size_t c)
Definition glibc_compat.cpp:16
crypto namespace.
Definition crypto.cpp:60
POD_CLASS secret_keyV
Definition crypto.h:79
void add_extra_entropy_thread_safe(const void *ptr, size_t bytes)
Definition crypto.cpp:105
const crypto::public_key null_pkey
Definition crypto.cpp:74
POD_CLASS public_keyM
Definition crypto.h:84
void generate_random_bytes_thread_safe(size_t N, uint8_t *bytes)
Definition crypto.cpp:99
POD_CLASS ec_point
Definition crypto.h:55
T rand()
Definition crypto.h:176
POD_CLASS signature
Definition crypto.h:98
const crypto::secret_key null_skey
Definition crypto.cpp:75
bool operator>(const public_key &p1, const public_key &p2)
Definition crypto.h:351
epee::mlocked< tools::scrubbed< ec_scalar > > secret_key
Definition crypto.h:72
static const ec_point EC_I
Definition crypto.h:116
std::enable_if< std::is_integral< T >::value, T >::type rand_range(T range_min, T range_max)
Definition crypto.h:197
unsigned char uint8_t
Definition hash.h:125
POD_CLASS public_keyV
Definition crypto.h:74
POD_CLASS key_derivation
Definition crypto.h:91
POD_CLASS view_tag
Definition crypto.h:103
POD_CLASS public_key_memsafe
Definition crypto.h:68
std::vector< secret_keyV > column_vectors
Definition crypto.h:87
unsigned __int64 uint64_t
Definition hash.h:137
bool get_valid_torsion_cleared_point_vartime(const ec_point &point, ec_point &torsion_cleared_out)
Definition crypto.cpp:180
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:288
POD_CLASS public_key
Definition crypto.h:64
void random32_unbiased(unsigned char *bytes)
Definition crypto.cpp:123
std::ostream & operator<<(std::ostream &o, const crypto::public_key &v)
Definition crypto.h:322
void rand(size_t N, uint8_t *bytes)
Definition crypto.h:169
POD_CLASS key_image
Definition crypto.h:95
bool operator<(const public_key &p1, const public_key &p2)
Definition crypto.h:350
POD_CLASS ec_scalar
Definition crypto.h:59
std::enable_if< std::is_unsigned< T >::value, T >::type rand_idx(T sz)
Definition crypto.h:206
int rows
Definition crypto.h:76
POD_CLASS hash
Definition hash.h:49
public_key pubkey_clear_torsion(const public_key &pubkey)
Definition crypto.cpp:190
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:294
span< const std::uint8_t > as_byte_span(const T &src) noexcept
Definition span.h:161
#define POD_CLASS
Definition pod-class.h:43
tools::wallet2::message_signature_result_t result
Definition signature.cpp:62
static constexpr result_type min()
Definition crypto.h:189
result_type operator()() const
Definition crypto.h:191
uint64_t result_type
Definition crypto.h:188
static constexpr result_type max()
Definition crypto.h:190
const crypto::secret_key & sk
Definition crypto.h:330
static void formatted(std::ostream &out, const span< const std::uint8_t > src)
Append < + src + > as hex to out.
Definition hex.cpp:77
Definition chaingen.h:294
void hash_to_scalar(const void *data, std::size_t length, crypto::ec_scalar &res)
Definition crypto.cpp:73
std::string data
Definition base58.cpp:37