Monero
Classes | Namespaces | Typedefs | Functions | Variables
crypto.h File Reference
#include <cstddef>
#include <iostream>
#include <boost/optional.hpp>
#include <type_traits>
#include <vector>
#include <random>
#include "common/pod-class.h"
#include "memwipe.h"
#include "mlocker.h"
#include "generic-ops.h"
#include "hex.h"
#include "span.h"
#include "hash.h"
#include "random.h"
Include dependency graph for crypto.h:

Go to the source code of this file.

Classes

class  crypto::crypto_ops
 
struct  crypto::random_device
 
struct  crypto::secret_key_explicit_print_ref
 

Namespaces

 crypto
 crypto namespace.
 

Typedefs

using crypto::secret_key = epee::mlocked< tools::scrubbed< ec_scalar > >
 

Functions

void crypto::generate_random_bytes_not_thread_safe (size_t n, void *result)
 
void crypto::add_extra_entropy_not_thread_safe (const void *ptr, size_t bytes)
 
 crypto::public_key_memsafe (const public_key &original)
 
void crypto::hash_to_scalar (const void *data, size_t length, ec_scalar &res)
 
void crypto::random32_unbiased (unsigned char *bytes)
 
void crypto::generate_random_bytes_thread_safe (size_t N, uint8_t *bytes)
 
void crypto::add_extra_entropy_thread_safe (const void *ptr, size_t bytes)
 
void crypto::rand (size_t N, uint8_t *bytes)
 
template<typename T >
T crypto::rand ()
 
template<typename T >
std::enable_if< std::is_integral< T >::value, T >::type crypto::rand_range (T range_min, T range_max)
 
template<typename T >
std::enable_if< std::is_unsigned< T >::value, T >::type crypto::rand_idx (T sz)
 
secret_key crypto::generate_keys (public_key &pub, secret_key &sec, const secret_key &recovery_key=secret_key(), bool recover=false)
 
bool crypto::check_key (const public_key &key)
 
bool crypto::secret_key_to_public_key (const secret_key &sec, public_key &pub)
 
bool crypto::generate_key_derivation (const public_key &key1, const secret_key &key2, key_derivation &derivation)
 
bool crypto::derive_public_key (const key_derivation &derivation, std::size_t output_index, const public_key &base, public_key &derived_key)
 
void crypto::derivation_to_scalar (const key_derivation &derivation, size_t output_index, ec_scalar &res)
 
void crypto::derive_secret_key (const key_derivation &derivation, std::size_t output_index, const secret_key &base, secret_key &derived_key)
 
bool crypto::derive_subaddress_public_key (const public_key &out_key, const key_derivation &derivation, std::size_t output_index, public_key &result)
 
void crypto::generate_signature (const hash &prefix_hash, const public_key &pub, const secret_key &sec, signature &sig)
 
bool crypto::check_signature (const hash &prefix_hash, const public_key &pub, const signature &sig)
 
void crypto::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)
 
void crypto::generate_tx_proof_v1 (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)
 
bool crypto::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, const int version)
 
void crypto::generate_key_image (const public_key &pub, const secret_key &sec, key_image &image)
 
void crypto::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)
 
bool crypto::check_ring_signature (const hash &prefix_hash, const key_image &image, const public_key *const *pubs, std::size_t pubs_count, const signature *sig)
 
void crypto::generate_ring_signature (const hash &prefix_hash, const key_image &image, const std::vector< const public_key *> &pubs, const secret_key &sec, std::size_t sec_index, signature *sig)
 
bool crypto::check_ring_signature (const hash &prefix_hash, const key_image &image, const std::vector< const public_key *> &pubs, const signature *sig)
 
void crypto::derive_view_tag (const key_derivation &derivation, std::size_t output_index, view_tag &vt)
 
std::ostream & crypto::operator<< (std::ostream &o, const crypto::public_key &v)
 
std::ostream & crypto::operator<< (std::ostream &o, const secret_key_explicit_print_ref v)
 
std::ostream & crypto::operator<< (std::ostream &o, const crypto::key_derivation &v)
 
std::ostream & crypto::operator<< (std::ostream &o, const crypto::key_image &v)
 
std::ostream & crypto::operator<< (std::ostream &o, const crypto::signature &v)
 
std::ostream & crypto::operator<< (std::ostream &o, const crypto::view_tag &v)
 
bool crypto::operator< (const public_key &p1, const public_key &p2)
 
bool crypto::operator> (const public_key &p1, const public_key &p2)
 

Variables

POD_CLASS crypto::ec_point
 
POD_CLASS crypto::ec_scalar
 
POD_CLASS crypto::public_key
 
POD_CLASS crypto::public_key_memsafe
 
POD_CLASS crypto::public_keyV
 
int crypto::rows
 
POD_CLASS crypto::secret_keyV
 
POD_CLASS crypto::public_keyM
 
std::vector< secret_keyV > crypto::column_vectors
 
POD_CLASS crypto::key_derivation
 
POD_CLASS crypto::key_image
 
POD_CLASS crypto::signature
 
POD_CLASS crypto::view_tag