Electroneum
crypto.cpp File Reference
#include <unistd.h>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <cstdlib>
#include <cstring>
#include <boost/thread/mutex.hpp>
#include <boost/thread/lock_guard.hpp>
#include <boost/shared_ptr.hpp>
#include "common/varint.h"
#include "crypto.h"
#include "hash.h"
#include "crypto-ops.h"
#include "random.h"
Include dependency graph for crypto.cpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  crypto::ge_p2
 
struct  crypto::ge_p3
 
struct  crypto::ge_p1p1
 
struct  crypto::ge_precomp
 
struct  crypto::ge_cached
 
struct  crypto::s_comm
 
struct  crypto::s_comm_2
 
struct  crypto::s_comm_3
 

Namespaces

 crypto
 crypto namespace.
 

Typedefs

typedef int32_t crypto::fe[10]
 
typedef ge_cached crypto::ge_dsmp[8]
 

Functions

void crypto::ge_add (ge_p1p1 *, const ge_p3 *, const ge_cached *)
 
void crypto::ge_dsm_precomp (ge_dsmp r, const ge_p3 *s)
 
void crypto::ge_double_scalarmult_base_vartime (ge_p2 *, const unsigned char *, const ge_p3 *, const unsigned char *)
 
void crypto::ge_double_scalarmult_base_vartime_p3 (ge_p3 *, const unsigned char *, const ge_p3 *, const unsigned char *)
 
int crypto::ge_frombytes_vartime (ge_p3 *, const unsigned char *)
 
void crypto::ge_p1p1_to_p2 (ge_p2 *, const ge_p1p1 *)
 
void crypto::ge_p1p1_to_p3 (ge_p3 *, const ge_p1p1 *)
 
void crypto::ge_p2_dbl (ge_p1p1 *, const ge_p2 *)
 
void crypto::ge_p3_to_cached (ge_cached *, const ge_p3 *)
 
void crypto::ge_p3_to_p2 (ge_p2 *, const ge_p3 *)
 
void crypto::ge_p3_tobytes (unsigned char *, const ge_p3 *)
 
void crypto::ge_scalarmult_base (ge_p3 *, const unsigned char *)
 
void crypto::ge_tobytes (unsigned char *, const ge_p2 *)
 
void crypto::sc_reduce (unsigned char *)
 
void crypto::ge_scalarmult (ge_p2 *, const unsigned char *, const ge_p3 *)
 
void crypto::ge_scalarmult_p3 (ge_p3 *, const unsigned char *, const ge_p3 *)
 
void crypto::ge_double_scalarmult_precomp_vartime (ge_p2 *, const unsigned char *, const ge_p3 *, const unsigned char *, const ge_dsmp)
 
void crypto::ge_double_scalarmult_precomp_vartime2 (ge_p2 *, const unsigned char *, const ge_dsmp, const unsigned char *, const ge_dsmp)
 
void crypto::ge_double_scalarmult_precomp_vartime2_p3 (ge_p3 *, const unsigned char *, const ge_dsmp, const unsigned char *, const ge_dsmp)
 
void crypto::ge_mul8 (ge_p1p1 *, const ge_p2 *)
 
void crypto::ge_fromfe_frombytes_vartime (ge_p2 *, const unsigned char *)
 
void crypto::sc_0 (unsigned char *)
 
void crypto::sc_reduce32 (unsigned char *)
 
void crypto::sc_add (unsigned char *, const unsigned char *, const unsigned char *)
 
void crypto::sc_sub (unsigned char *, const unsigned char *, const unsigned char *)
 
void crypto::sc_mulsub (unsigned char *, const unsigned char *, const unsigned char *, const unsigned char *)
 
void crypto::sc_mul (unsigned char *, const unsigned char *, const unsigned char *)
 
void crypto::sc_muladd (unsigned char *s, const unsigned char *a, const unsigned char *b, const unsigned char *c)
 
int crypto::sc_check (const unsigned char *)
 
int crypto::sc_isnonzero (const unsigned char *)
 
uint64_t crypto::load_3 (const unsigned char *in)
 
uint64_t crypto::load_4 (const unsigned char *in)
 
void crypto::ge_sub (ge_p1p1 *r, const ge_p3 *p, const ge_cached *q)
 
void crypto::fe_add (fe h, const fe f, const fe g)
 
void crypto::fe_tobytes (unsigned char *, const fe)
 
void crypto::fe_invert (fe out, const fe z)
 
int crypto::ge_p3_is_point_at_infinity (const ge_p3 *p)
 
void crypto::generate_random_bytes_not_thread_safe (size_t n, void *result)
 
void crypto::generate_random_bytes_thread_safe (size_t N, uint8_t *bytes)
 
void crypto::random32_unbiased (unsigned char *bytes)
 
void crypto::random_scalar (ec_scalar &res)
 
void crypto::hash_to_scalar (const void *data, size_t length, ec_scalar &res)
 
void crypto::hash_to_ec (const public_key &key, ge_p3 &res)
 
void crypto::hash_to_ec (const hash &h, ge_p3 &res)
 
void crypto::hash_to_point (const crypto::hash &h, crypto::ec_point &res)
 
size_t crypto::rs_comm_size (size_t pubs_count)
 

Variables

const ge_precomp crypto::ge_Bi [8]
 
const fe crypto::fe_sqrtm1
 
const fe crypto::fe_d
 
const fe crypto::fe_d2
 
const ge_precomp crypto::ge_base [32][8]
 
const fe crypto::fe_ma2
 
const fe crypto::fe_ma
 
const fe crypto::fe_fffb1
 
const fe crypto::fe_fffb2
 
const fe crypto::fe_fffb3
 
const fe crypto::fe_fffb4
 
const ge_p3 crypto::ge_p3_identity
 
const ge_p3 crypto::ge_p3_H
 
const crypto::public_key crypto::null_pkey = crypto::public_key{}
 
const crypto::secret_key crypto::null_skey = crypto::secret_key{}