62 static const key Z = { {0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 } };
63 static const key I = { {0x01, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 } };
64 static const key L = { {0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 } };
65 static const key G = { {0x58, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66 } };
66 static const key EIGHT = { {0x08, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 } };
67 static const key INV_EIGHT = { { 0x79, 0x2f, 0xdc, 0xe2, 0x29, 0xe5, 0x06, 0x61, 0xd0, 0xda, 0x1c, 0x7d, 0xb3, 0x9d, 0xd3, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06 } };
71 inline void zero(
key &z) { memset(&z, 0, 32); }
101 std::tuple<key, key>
skpkGen();
186 void ecdhEncode(ecdhTuple & unmasked,
const key & sharedSec,
bool v2);
187 void ecdhDecode(ecdhTuple & masked,
const key & sharedSec,
bool v2);
void precomp(ge_dsmp rv, const key &B)
bool isInMainSubgroup(const key &A)
void addKeys1(key &aGB, const key &a, const key &B)
void addKeys3(key &aAbB, const key &a, const key &A, const key &b, const ge_dsmp B)
void scalarmultKey(key &aP, const key &P, const key &a)
key commit(etn_amount amount, const key &mask)
void sumKeys(key &Csum, const keyV &Cis)
key hash_to_scalar128(const void *in)
tuple< ctkey, ctkey > ctskpkGen(etn_amount amount)
key cn_fast_hash128(const void *in)
void ecdhEncode(ecdhTuple &unmasked, const key &sharedSec, bool v2)
key genCommitmentMask(const key &sk)
void copy(key &AA, const key &A)
bool toPointCheckOrder(ge_p3 *P, const unsigned char *data)
keyM keyMInit(size_t rows, size_t cols)
void cn_fast_hash(key &hash, const void *data, const std::size_t l)
std::vector< ctkey > ctkeyV
key scalarmultH(const key &a)
void hash_to_scalar(key &hash, const void *data, const std::size_t l)
void ecdhDecode(ecdhTuple &masked, const key &sharedSec, bool v2)
etn_amount randEtnAmount(etn_amount upperlimit)
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
void scalarmultBase(key &aG, const key &a)
void * memcpy(void *a, const void *b, size_t c)
void subKeys(key &AB, const key &A, const key &B)
void addKeys2(key &aGbB, const key &a, const key &b, const key &B)
void skpkGen(key &sk, key &pk)
key scalarmult8(const key &P)
key hashToPoint(const key &hh)
key zeroCommit(etn_amount amount)
void addKeys(key &AB, const key &A, const key &B)
bool equalKeys(const key &a, const key &b)
void genC(key &C, const key &a, etn_amount amount)
key hashToPointSimple(const key &hh)