|
| static rct::key | vector_exponent (const rct::keyV &a, const rct::keyV &b) |
| |
| static rct::keyV | vector_powers (const rct::key &x, size_t n) |
| |
| static rct::keyV | vector_dup (const rct::key &x, size_t n) |
| |
| static rct::key | inner_product (const rct::keyV &a, const rct::keyV &b) |
| |
| static rct::key | multiexp (const std::vector< MultiexpData > &data, size_t HiGi_size) |
| |
| static bool | is_reduced (const rct::key &scalar) |
| |
| static rct::key | get_exponent (const rct::key &base, size_t idx) |
| |
| static void | init_exponents () |
| |
| static rct::key | cross_vector_exponent8 (size_t size, const std::vector< ge_p3 > &A, size_t Ao, const std::vector< ge_p3 > &B, size_t Bo, const rct::keyV &a, size_t ao, const rct::keyV &b, size_t bo, const rct::keyV *scale, const ge_p3 *extra_point, const rct::key *extra_scalar) |
| |
| static rct::key | vector_power_sum (rct::key x, size_t n) |
| |
| static rct::key | inner_product (const epee::span< const rct::key > &a, const epee::span< const rct::key > &b) |
| |
| static rct::keyV | hadamard (const rct::keyV &a, const rct::keyV &b) |
| |
| static void | hadamard_fold (std::vector< ge_p3 > &v, const rct::keyV *scale, const rct::key &a, const rct::key &b) |
| |
| static rct::keyV | vector_add (const rct::keyV &a, const rct::keyV &b) |
| |
| static rct::keyV | vector_add (const rct::keyV &a, const rct::key &b) |
| |
| static rct::keyV | vector_subtract (const rct::keyV &a, const rct::key &b) |
| |
| static rct::keyV | vector_scalar (const epee::span< const rct::key > &a, const rct::key &x) |
| |
| static rct::keyV | vector_scalar (const rct::keyV &a, const rct::key &x) |
| |
| static rct::key | sm (rct::key y, int n, const rct::key &x) |
| |
| static rct::key | invert (const rct::key &x) |
| |
| static rct::keyV | invert (rct::keyV x) |
| |
| static epee::span< const rct::key > | slice (const rct::keyV &a, size_t start, size_t stop) |
| |
| static rct::key | hash_cache_mash (rct::key &hash_cache, const rct::key &mash0, const rct::key &mash1) |
| |
| static rct::key | hash_cache_mash (rct::key &hash_cache, const rct::key &mash0, const rct::key &mash1, const rct::key &mash2) |
| |
| static rct::key | hash_cache_mash (rct::key &hash_cache, const rct::key &mash0, const rct::key &mash1, const rct::key &mash2, const rct::key &mash3) |
| |
| Bulletproof | bulletproof_PROVE (const rct::key &sv, const rct::key &gamma) |
| |
| Bulletproof | bulletproof_PROVE (uint64_t v, const rct::key &gamma) |
| |
| Bulletproof | bulletproof_PROVE (const rct::keyV &sv, const rct::keyV &gamma) |
| |
| Bulletproof | bulletproof_PROVE (const std::vector< uint64_t > &v, const rct::keyV &gamma) |
| |
| bool | bulletproof_VERIFY (const std::vector< const Bulletproof * > &proofs) |
| |
| bool | bulletproof_VERIFY (const std::vector< Bulletproof > &proofs) |
| |
| bool | bulletproof_VERIFY (const Bulletproof &proof) |
| |
| static bool | operator< (const rct::key &k0, const rct::key &k1) |
| |
| static rct::key | div2 (const rct::key &k) |
| |
| static rct::key | pow2 (size_t n) |
| |
| static int | test (const rct::key &k, size_t n) |
| |
| static void | add (ge_p3 &p3, const ge_cached &other) |
| |
| static void | add (ge_p3 &p3, const ge_p3 &other) |
| |
| rct::key | bos_coster_heap_conv (std::vector< MultiexpData > data) |
| |
| rct::key | bos_coster_heap_conv_robust (std::vector< MultiexpData > data) |
| |
| std::shared_ptr< straus_cached_data > | straus_init_cache (const std::vector< MultiexpData > &data, size_t N) |
| |
| size_t | straus_get_cache_size (const std::shared_ptr< straus_cached_data > &cache) |
| |
| rct::key | straus (const std::vector< MultiexpData > &data, const std::shared_ptr< straus_cached_data > &cache, size_t STEP) |
| |
| size_t | get_pippenger_c (size_t N) |
| |
| std::shared_ptr< pippenger_cached_data > | pippenger_init_cache (const std::vector< MultiexpData > &data, size_t start_offset, size_t N) |
| |
| size_t | pippenger_get_cache_size (const std::shared_ptr< pippenger_cached_data > &cache) |
| |
| rct::key | pippenger (const std::vector< MultiexpData > &data, const std::shared_ptr< pippenger_cached_data > &cache, size_t cache_size, size_t c) |
| |
| keyM | keyMInit (size_t rows, size_t cols) |
| |
| bool | toPointCheckOrder (ge_p3 *P, const unsigned char *data) |
| |
| void | skGen (key &sk) |
| |
| key | skGen () |
| |
| keyV | skvGen (size_t rows) |
| |
| key | pkGen () |
| |
| void | skpkGen (key &sk, key &pk) |
| |
| tuple< key, key > | skpkGen () |
| |
| void | genC (key &C, const key &a, etn_amount amount) |
| |
| tuple< ctkey, ctkey > | ctskpkGen (etn_amount amount) |
| |
| tuple< ctkey, ctkey > | ctskpkGen (const key &bH) |
| |
| key | zeroCommit (etn_amount amount) |
| |
| key | commit (etn_amount amount, const key &mask) |
| |
| etn_amount | randEtnAmount (etn_amount upperlimit) |
| |
| void | scalarmultBase (key &aG, const key &a) |
| |
| key | scalarmultBase (const key &a) |
| |
| void | scalarmultKey (key &aP, const key &P, const key &a) |
| |
| key | scalarmultKey (const key &P, const key &a) |
| |
| key | scalarmultH (const key &a) |
| |
| key | scalarmult8 (const key &P) |
| |
| bool | isInMainSubgroup (const key &A) |
| |
| void | addKeys (key &AB, const key &A, const key &B) |
| |
| rct::key | addKeys (const key &A, const key &B) |
| |
| rct::key | addKeys (const keyV &A) |
| |
| void | addKeys1 (key &aGB, const key &a, const key &B) |
| |
| void | addKeys2 (key &aGbB, const key &a, const key &b, const key &B) |
| |
| void | precomp (ge_dsmp rv, const key &B) |
| |
| void | addKeys3 (key &aAbB, const key &a, const key &A, const key &b, const ge_dsmp B) |
| |
| void | addKeys3 (key &aAbB, const key &a, const ge_dsmp A, const key &b, const ge_dsmp B) |
| |
| void | subKeys (key &AB, const key &A, const key &B) |
| |
| bool | equalKeys (const key &a, const key &b) |
| |
| void | cn_fast_hash (key &hash, const void *data, const std::size_t l) |
| |
| void | hash_to_scalar (key &hash, const void *data, const std::size_t l) |
| |
| void | cn_fast_hash (key &hash, const key &in) |
| |
| void | hash_to_scalar (key &hash, const key &in) |
| |
| key | cn_fast_hash (const key &in) |
| |
| key | hash_to_scalar (const key &in) |
| |
| key | cn_fast_hash128 (const void *in) |
| |
| key | hash_to_scalar128 (const void *in) |
| |
| key | cn_fast_hash (const ctkeyV &PC) |
| |
| key | hash_to_scalar (const ctkeyV &PC) |
| |
| key | cn_fast_hash (const keyV &keys) |
| |
| key | hash_to_scalar (const keyV &keys) |
| |
| key | cn_fast_hash (const key64 keys) |
| |
| key | hash_to_scalar (const key64 keys) |
| |
| key | hashToPointSimple (const key &hh) |
| |
| key | hashToPoint (const key &hh) |
| |
| void | hashToPoint (key &pointk, const key &hh) |
| |
| void | sumKeys (key &Csum, const keyV &Cis) |
| |
| static key | ecdhHash (const key &k) |
| |
| static void | xor8 (key &v, const key &k) |
| |
| key | genCommitmentMask (const key &sk) |
| |
| void | ecdhEncode (ecdhTuple &unmasked, const key &sharedSec, bool v2) |
| |
| void | ecdhDecode (ecdhTuple &masked, const key &sharedSec, bool v2) |
| |
| key | zero () |
| |
| void | zero (key &z) |
| |
| key | identity () |
| |
| void | identity (key &Id) |
| |
| key | curveOrder () |
| |
| void | curveOrder (key &l) |
| |
| void | copy (key &AA, const key &A) |
| |
| key | copy (const key &A) |
| |
| void | cn_fast_hash (key &hash, const void *data, const size_t l) |
| |
| void | hash_to_scalar (key &hash, const void *data, const size_t l) |
| |
| void | sumKeys (key &Csum, const key &Cis) |
| |
| Bulletproof | proveRangeBulletproof (keyV &C, keyV &masks, const std::vector< uint64_t > &amounts, epee::span< const key > sk, hw::device &hwdev) |
| |
| bool | verBulletproof (const Bulletproof &proof) |
| |
| bool | verBulletproof (const std::vector< const Bulletproof * > &proofs) |
| |
| boroSig | genBorromean (const key64 x, const key64 P1, const key64 P2, const bits indices) |
| |
| bool | verifyBorromean (const boroSig &bb, const ge_p3 P1[64], const ge_p3 P2[64]) |
| |
| bool | verifyBorromean (const boroSig &bb, const key64 P1, const key64 P2) |
| |
| mgSig | MLSAG_Gen (const key &message, const keyM &pk, const keyV &xx, const multisig_kLRki *kLRki, key *mscout, const unsigned int index, size_t dsRows, hw::device &hwdev) |
| |
| bool | MLSAG_Ver (const key &message, const keyM &pk, const mgSig &rv, size_t dsRows) |
| |
| rangeSig | proveRange (key &C, key &mask, const etn_amount &amount) |
| |
| bool | verRange (const key &C, const rangeSig &as) |
| |
| key | get_pre_mlsag_hash (const rctSig &rv, hw::device &hwdev) |
| |
| mgSig | proveRctMG (const key &message, const ctkeyM &pubs, const ctkeyV &inSk, const ctkeyV &outSk, const ctkeyV &outPk, const multisig_kLRki *kLRki, key *mscout, unsigned int index, const key &txnFeeKey, hw::device &hwdev) |
| |
| mgSig | proveRctMGSimple (const key &message, const ctkeyV &pubs, const ctkey &inSk, const key &a, const key &Cout, const multisig_kLRki *kLRki, key *mscout, unsigned int index, hw::device &hwdev) |
| |
| bool | verRctMG (const mgSig &mg, const ctkeyM &pubs, const ctkeyV &outPk, const key &txnFeeKey, const key &message) |
| |
| bool | verRctMGSimple (const key &message, const mgSig &mg, const ctkeyV &pubs, const key &C) |
| |
| void | getKeyFromBlockchain (ctkey &a, size_t reference_index) |
| |
| tuple< ctkeyM, etn_amount > | populateFromBlockchain (ctkeyV inPk, int mixin) |
| |
| etn_amount | populateFromBlockchainSimple (ctkeyV &mixRing, const ctkey &inPk, int mixin) |
| |
| rctSig | genRct (const key &message, const ctkeyV &inSk, const keyV &destinations, const vector< etn_amount > &amounts, const ctkeyM &mixRing, const keyV &amount_keys, const multisig_kLRki *kLRki, multisig_out *msout, unsigned int index, ctkeyV &outSk, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| rctSig | genRct (const key &message, const ctkeyV &inSk, const ctkeyV &inPk, const keyV &destinations, const vector< etn_amount > &amounts, const keyV &amount_keys, const multisig_kLRki *kLRki, multisig_out *msout, const int mixin, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| rctSig | genRctSimple (const key &message, const ctkeyV &inSk, const keyV &destinations, const vector< etn_amount > &inamounts, const vector< etn_amount > &outamounts, etn_amount txnFee, const ctkeyM &mixRing, const keyV &amount_keys, const std::vector< multisig_kLRki > *kLRki, multisig_out *msout, const std::vector< unsigned int > &index, ctkeyV &outSk, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| rctSig | genRctSimple (const key &message, const ctkeyV &inSk, const ctkeyV &inPk, const keyV &destinations, const vector< etn_amount > &inamounts, const vector< etn_amount > &outamounts, const keyV &amount_keys, const std::vector< multisig_kLRki > *kLRki, multisig_out *msout, etn_amount txnFee, unsigned int mixin, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| bool | verRct (const rctSig &rv, bool semantics) |
| |
| bool | verRctSemanticsSimple (const std::vector< const rctSig * > &rvv) |
| |
| bool | verRctSemanticsSimple (const rctSig &rv) |
| |
| bool | verRctNonSemanticsSimple (const rctSig &rv) |
| |
| etn_amount | decodeRct (const rctSig &rv, const key &sk, unsigned int i, key &mask, hw::device &hwdev) |
| |
| etn_amount | decodeRct (const rctSig &rv, const key &sk, unsigned int i, hw::device &hwdev) |
| |
| etn_amount | decodeRctSimple (const rctSig &rv, const key &sk, unsigned int i, key &mask, hw::device &hwdev) |
| |
| etn_amount | decodeRctSimple (const rctSig &rv, const key &sk, unsigned int i, hw::device &hwdev) |
| |
| bool | signMultisig (rctSig &rv, const std::vector< unsigned int > &indices, const keyV &k, const multisig_out &msout, const key &secret_key) |
| |
| mgSig | proveRctMG (const ctkeyM &pubs, const ctkeyV &inSk, const keyV &outMasks, const ctkeyV &outPk, const multisig_kLRki *kLRki, key *mscout, unsigned int index, const key &txnFee, const key &message, hw::device &hwdev) |
| |
| rctSig | genRct (const key &message, const ctkeyV &inSk, const keyV &destinations, const std::vector< etn_amount > &amounts, const ctkeyM &mixRing, const keyV &amount_keys, const multisig_kLRki *kLRki, multisig_out *msout, unsigned int index, ctkeyV &outSk, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| rctSig | genRct (const key &message, const ctkeyV &inSk, const ctkeyV &inPk, const keyV &destinations, const std::vector< etn_amount > &amounts, const keyV &amount_keys, const multisig_kLRki *kLRki, multisig_out *msout, const int mixin, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| rctSig | genRctSimple (const key &message, const ctkeyV &inSk, const ctkeyV &inPk, const keyV &destinations, const std::vector< etn_amount > &inamounts, const std::vector< etn_amount > &outamounts, const keyV &amount_keys, const std::vector< multisig_kLRki > *kLRki, multisig_out *msout, etn_amount txnFee, unsigned int mixin, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| rctSig | genRctSimple (const key &message, const ctkeyV &inSk, const keyV &destinations, const std::vector< etn_amount > &inamounts, const std::vector< etn_amount > &outamounts, etn_amount txnFee, const ctkeyM &mixRing, const keyV &amount_keys, const std::vector< multisig_kLRki > *kLRki, multisig_out *msout, const std::vector< unsigned int > &index, ctkeyV &outSk, const RCTConfig &rct_config, hw::device &hwdev) |
| |
| static bool | verRct (const rctSig &rv) |
| |
| static bool | verRctSimple (const rctSig &rv) |
| |
| void | dp (key a) |
| |
| void | dp (bool a) |
| |
| void | dp (const char *a, int l) |
| |
| void | dp (keyV a) |
| |
| void | dp (keyM a) |
| |
| void | dp (etn_amount vali) |
| |
| void | dp (bits amountb) |
| |
| void | dp (const char *st) |
| |
| void | d2h (key &amounth, const etn_amount in) |
| |
| key | d2h (const etn_amount in) |
| |
| void | d2b (bits amountb, etn_amount val) |
| |
| etn_amount | h2d (const key &test) |
| |
| void | h2b (bits amountb2, const key &test) |
| |
| void | b2h (key &amountdh, const bits amountb2) |
| |
| etn_amount | b2d (bits amountb) |
| |
| bool | is_rct_simple (int type) |
| |
| bool | is_rct_bulletproof (int type) |
| |
| bool | is_rct_borromean (int type) |
| |
| size_t | n_bulletproof_amounts (const Bulletproof &proof) |
| |
| size_t | n_bulletproof_amounts (const std::vector< Bulletproof > &proofs) |
| |
| size_t | n_bulletproof_max_amounts (const Bulletproof &proof) |
| |
| size_t | n_bulletproof_max_amounts (const std::vector< Bulletproof > &proofs) |
| |
| static const rct::key & | pk2rct (const crypto::public_key &pk) |
| |
| static const rct::key & | sk2rct (const crypto::secret_key &sk) |
| |
| static const rct::key & | ki2rct (const crypto::key_image &ki) |
| |
| static const rct::key & | hash2rct (const crypto::hash &h) |
| |
| static const crypto::public_key & | rct2pk (const rct::key &k) |
| |
| static const crypto::secret_key & | rct2sk (const rct::key &k) |
| |
| static const crypto::key_image & | rct2ki (const rct::key &k) |
| |
| static const crypto::hash & | rct2hash (const rct::key &k) |
| |
| static bool | operator== (const rct::key &k0, const crypto::public_key &k1) |
| |
| static bool | operator!= (const rct::key &k0, const crypto::public_key &k1) |
| |
| std::ostream & | operator<< (std::ostream &o, const rct::key &v) |
| |
|
| static constexpr size_t | maxN = 64 |
| |
| static constexpr size_t | maxM = BULLETPROOF_MAX_OUTPUTS |
| |
| static rct::key | Hi [maxN *maxM] |
| |
| static rct::key | Gi [maxN *maxM] |
| |
| static ge_p3 | Hi_p3 [maxN *maxM] |
| |
| static ge_p3 | Gi_p3 [maxN *maxM] |
| |
| static std::shared_ptr< straus_cached_data > | straus_HiGi_cache |
| |
| static std::shared_ptr< pippenger_cached_data > | pippenger_HiGi_cache |
| |
| static const rct::key | TWO = { {0x02, 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 } } |
| |
| static const rct::key | MINUS_ONE = { { 0xec, 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 } } |
| |
| static const rct::key | MINUS_INV_EIGHT = { { 0x74, 0xa4, 0x19, 0x7a, 0xf0, 0x7d, 0x0b, 0xf7, 0x05, 0xc2, 0xda, 0x25, 0x2b, 0x5c, 0x0b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a } } |
| |
| static const rct::keyV | oneN = vector_dup(rct::identity(), maxN) |
| |
| static const rct::keyV | twoN = vector_powers(TWO, maxN) |
| |
| static const rct::key | ip12 = inner_product(oneN, twoN) |
| |
| static boost::mutex | init_mutex |
| |
| 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 } } |
| |
| 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 } } |
| |
| 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 } } |
| |
| 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 } } |
| |
| 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 } } |
| |
| 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 } } |
| |
| static const key | H = { {0x8b, 0x65, 0x59, 0x70, 0x15, 0x37, 0x99, 0xaf, 0x2a, 0xea, 0xdc, 0x9f, 0xf1, 0xad, 0xd0, 0xea, 0x6c, 0x72, 0x51, 0xd5, 0x41, 0x54, 0xcf, 0xa9, 0x2c, 0x17, 0x3a, 0x0d, 0xd3, 0x9c, 0x1f, 0x94} } |
| |
| static const key64 | H2 |
| |