Electroneum
test_crypto_ops< op > Class Template Reference

#include <crypto_ops.h>

Collaboration diagram for test_crypto_ops< op >:

Public Member Functions

bool init ()
 
bool test ()
 

Static Public Attributes

static const size_t loop_count = op < ops_fast ? 10000000 : 1000
 

Detailed Description

template<test_op op>
class test_crypto_ops< op >

Definition at line 63 of file crypto_ops.h.

Member Function Documentation

◆ init()

template<test_op op>
bool test_crypto_ops< op >::init ( )
inline

Definition at line 68 of file crypto_ops.h.

69  {
70  scalar0 = rct::skGen();
71  scalar1 = rct::skGen();
72  point0 = rct::scalarmultBase(rct::skGen());
73  point1 = rct::scalarmultBase(rct::skGen());
74  if (ge_frombytes_vartime(&p3_0, point0.bytes) != 0)
75  return false;
76  if (ge_frombytes_vartime(&p3_1, point1.bytes) != 0)
77  return false;
78  ge_p3_to_cached(&cached, &p3_0);
79  rct::precomp(precomp0, point0);
80  rct::precomp(precomp1, point1);
81  return true;
82  }
void precomp(ge_dsmp rv, const key &B)
Definition: rctOps.cpp:476
void skGen(key &sk)
Definition: rctOps.cpp:253
#define ge_p3_to_cached
Definition: ge.h:61
void scalarmultBase(key &aG, const key &a)
Definition: rctOps.cpp:350
unsigned char bytes[32]
Definition: rctTypes.h:86
int ge_frombytes_vartime(ge_p3 *, const unsigned char *)
Here is the call graph for this function:

◆ test()

template<test_op op>
bool test_crypto_ops< op >::test ( )
inline

Definition at line 84 of file crypto_ops.h.

85  {
86  rct::key key;
87  ge_cached tmp_cached;
88  ge_p1p1 tmp_p1p1;
89  ge_p2 tmp_p2;
90  ge_dsmp dsmp;
91  switch (op)
92  {
93  case op_sc_add: sc_add(key.bytes, scalar0.bytes, scalar1.bytes); break;
94  case op_sc_sub: sc_sub(key.bytes, scalar0.bytes, scalar1.bytes); break;
95  case op_sc_mul: sc_mul(key.bytes, scalar0.bytes, scalar1.bytes); break;
96  case op_ge_add_p3_p3: {
97  ge_p3_to_cached(&tmp_cached, &p3_0);
98  ge_add(&tmp_p1p1, &p3_1, &tmp_cached);
99  ge_p1p1_to_p3(&p3_1, &tmp_p1p1);
100  break;
101  }
102  case op_ge_add_raw: ge_add(&tmp_p1p1, &p3_1, &cached); break;
103  case op_addKeys: rct::addKeys(key, point0, point1); break;
104  case op_scalarmultBase: rct::scalarmultBase(scalar0); break;
105  case op_scalarmultKey: rct::scalarmultKey(point0, scalar0); break;
106  case op_scalarmultH: rct::scalarmultH(scalar0); break;
107  case op_scalarmult8: rct::scalarmult8(point0); break;
108  case op_ge_dsm_precomp: ge_dsm_precomp(dsmp, &p3_0); break;
109  case op_ge_double_scalarmult_base_vartime: ge_double_scalarmult_base_vartime(&tmp_p2, scalar0.bytes, &p3_0, scalar1.bytes); break;
110  case op_ge_double_scalarmult_precomp_vartime: ge_double_scalarmult_precomp_vartime(&tmp_p2, scalar0.bytes, &p3_0, scalar1.bytes, precomp0); break;
111  case op_ge_double_scalarmult_precomp_vartime2: ge_double_scalarmult_precomp_vartime2(&tmp_p2, scalar0.bytes, precomp0, scalar1.bytes, precomp1); break;
112  case op_addKeys2: rct::addKeys2(key, scalar0, scalar1, point0); break;
113  case op_addKeys3: rct::addKeys3(key, scalar0, point0, scalar1, precomp1); break;
114  case op_addKeys3_2: rct::addKeys3(key, scalar0, precomp0, scalar1, precomp1); break;
115  case op_isInMainSubgroup: rct::isInMainSubgroup(point0); break;
116  case op_zeroCommitUncached: rct::zeroCommit(9001); break;
117  case op_zeroCommitCached: rct::zeroCommit(9000); break;
118  default: return false;
119  }
120  return true;
121  }
bool isInMainSubgroup(const key &A)
Definition: rctOps.cpp:412
void addKeys3(key &aAbB, const key &a, const key &A, const key &b, const ge_dsmp B)
Definition: rctOps.cpp:485
void scalarmultKey(key &aP, const key &P, const key &a)
Definition: rctOps.cpp:368
void sc_sub(unsigned char *, const unsigned char *, const unsigned char *)
const char * key
Definition: hmac_keccak.cpp:39
void ge_double_scalarmult_precomp_vartime2(ge_p2 *, const unsigned char *, const ge_dsmp, const unsigned char *, const ge_dsmp)
void ge_double_scalarmult_precomp_vartime(ge_p2 *, const unsigned char *, const ge_p3 *, const unsigned char *, const ge_dsmp)
void ge_double_scalarmult_base_vartime(ge_p2 *, const unsigned char *, const ge_p3 *, const unsigned char *)
key scalarmultH(const key &a)
Definition: rctOps.cpp:389
#define ge_p1p1_to_p3
Definition: ge.h:63
#define ge_add
Definition: ge.h:69
#define ge_p3_to_cached
Definition: ge.h:61
void scalarmultBase(key &aG, const key &a)
Definition: rctOps.cpp:350
ge_cached ge_dsmp[8]
Definition: crypto-ops.h:79
unsigned char bytes[32]
Definition: rctTypes.h:86
void ge_dsm_precomp(ge_dsmp r, const ge_p3 *s)
void addKeys2(key &aGbB, const key &a, const key &b, const key &B)
Definition: rctOps.cpp:466
key scalarmult8(const key &P)
Definition: rctOps.cpp:398
key zeroCommit(etn_amount amount)
Definition: rctOps.cpp:322
void addKeys(key &AB, const key &A, const key &B)
Definition: rctOps.cpp:420
void sc_mul(unsigned char *, const unsigned char *, const unsigned char *)
void sc_add(unsigned char *, const unsigned char *, const unsigned char *)
Here is the call graph for this function:

Member Data Documentation

◆ loop_count

template<test_op op>
const size_t test_crypto_ops< op >::loop_count = op < ops_fast ? 10000000 : 1000
static

Definition at line 66 of file crypto_ops.h.


The documentation for this class was generated from the following file: