Monero
Loading...
Searching...
No Matches
rctTypes.h File Reference
#include <cstddef>
#include <vector>
#include <iostream>
#include <cinttypes>
#include <sodium/crypto_verify_32.h>
#include "crypto/crypto-ops.h"
#include "crypto/random.h"
#include "crypto/keccak.h"
#include "crypto/generic-ops.h"
#include "crypto/crypto.h"
#include "hex.h"
#include "span.h"
#include "memwipe.h"
#include "serialization/containers.h"
#include "serialization/debug_archive.h"
#include "serialization/binary_archive.h"
#include "serialization/json_archive.h"
Include dependency graph for rctTypes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  rct::key
struct  rct::ctkey
struct  rct::multisig_kLRki
struct  rct::multisig_out
struct  rct::ecdhTuple
struct  rct::boroSig
struct  rct::geDsmp
struct  rct::mgSig
struct  rct::clsag
struct  rct::rangeSig
struct  rct::Bulletproof
struct  rct::BulletproofPlus
struct  rct::RCTConfig
struct  rct::rctSigBase
struct  rct::rctSigPrunable
struct  rct::rctSig
struct  std::hash< rct::key >

Namespaces

namespace  rct
namespace  cryptonote
 Holds cryptonote related classes and helpers.
namespace  std

Macros

#define RCT_TYPES_H
#define DP(x)
#define ATOMS   64

Typedefs

typedef unsigned char * rct::Bytes
typedef std::vector< keyrct::keyV
typedef std::vector< keyVrct::keyM
typedef std::vector< ctkeyrct::ctkeyV
typedef std::vector< ctkeyVrct::ctkeyM
typedef uint64_t rct::xmr_amount
typedef unsigned int rct::bits[ATOMS]
typedef key rct::key64[64]

Enumerations

enum  {
  rct::RCTTypeNull = 0 , rct::RCTTypeFull = 1 , rct::RCTTypeSimple = 2 , rct::RCTTypeBulletproof = 3 ,
  rct::RCTTypeBulletproof2 = 4 , rct::RCTTypeCLSAG = 5 , rct::RCTTypeBulletproofPlus = 6
}
enum  rct::RangeProofType { rct::RangeProofBorromean , rct::RangeProofBulletproof , rct::RangeProofMultiOutputBulletproof , rct::RangeProofPaddedBulletproof }

Functions

size_t rct::n_bulletproof_amounts (const Bulletproof &proof)
size_t rct::n_bulletproof_max_amounts (const Bulletproof &proof)
size_t rct::n_bulletproof_amounts (const std::vector< Bulletproof > &proofs)
size_t rct::n_bulletproof_max_amounts (const std::vector< Bulletproof > &proofs)
size_t rct::n_bulletproof_plus_amounts (const BulletproofPlus &proof)
size_t rct::n_bulletproof_plus_max_amounts (const BulletproofPlus &proof)
size_t rct::n_bulletproof_plus_amounts (const std::vector< BulletproofPlus > &proofs)
size_t rct::n_bulletproof_plus_max_amounts (const std::vector< BulletproofPlus > &proofs)
void rct::dp (key a)
void rct::dp (bool a)
void rct::dp (const char *a, int l)
void rct::dp (keyV a)
void rct::dp (keyM a)
void rct::dp (xmr_amount vali)
void rct::dp (bool a)
void rct::dp (bits amountb)
void rct::dp (const char *st)
void rct::d2h (key &amounth, const xmr_amount in)
key rct::d2h (const xmr_amount in)
void rct::d2b (bits amountb, xmr_amount val)
xmr_amount rct::h2d (const key &test)
void rct::h2b (bits amountb2, const key &test)
void rct::b2h (key &amountdh, const bits amountb2)
xmr_amount rct::b2d (bits amountb)
bool rct::is_rct_simple (int type)
bool rct::is_rct_bulletproof (int type)
bool rct::is_rct_bulletproof_plus (int type)
bool rct::is_rct_borromean (int type)
bool rct::is_rct_clsag (int type)
static const rct::keyrct::pk2rct (const crypto::public_key &pk)
static const rct::keyrct::sk2rct (const crypto::secret_key &sk)
static const rct::keyrct::ki2rct (const crypto::key_image &ki)
static const rct::keyrct::hash2rct (const crypto::hash &h)
static const crypto::public_keyrct::rct2pk (const rct::key &k)
static const crypto::secret_keyrct::rct2sk (const rct::key &k)
static const crypto::key_imagerct::rct2ki (const rct::key &k)
static const crypto::hashrct::rct2hash (const rct::key &k)
static bool rct::operator== (const rct::key &k0, const crypto::public_key &k1)
static bool rct::operator!= (const rct::key &k0, const crypto::public_key &k1)
static bool cryptonote::operator== (const crypto::public_key &k0, const rct::key &k1)
static bool cryptonote::operator!= (const crypto::public_key &k0, const rct::key &k1)
static bool cryptonote::operator== (const crypto::secret_key &k0, const rct::key &k1)
static bool cryptonote::operator!= (const crypto::secret_key &k0, const rct::key &k1)
std::ostream & rct::operator<< (std::ostream &o, const rct::key &v)
 BLOB_SERIALIZER (rct::key)
 BLOB_SERIALIZER (rct::key64)
 BLOB_SERIALIZER (rct::ctkey)
 BLOB_SERIALIZER (rct::multisig_kLRki)
 BLOB_SERIALIZER (rct::boroSig)
 VARIANT_TAG (debug_archive, rct::key, "rct::key")
 VARIANT_TAG (debug_archive, rct::key64, "rct::key64")
 VARIANT_TAG (debug_archive, rct::keyV, "rct::keyV")
 VARIANT_TAG (debug_archive, rct::keyM, "rct::keyM")
 VARIANT_TAG (debug_archive, rct::ctkey, "rct::ctkey")
 VARIANT_TAG (debug_archive, rct::ctkeyV, "rct::ctkeyV")
 VARIANT_TAG (debug_archive, rct::ctkeyM, "rct::ctkeyM")
 VARIANT_TAG (debug_archive, rct::ecdhTuple, "rct::ecdhTuple")
 VARIANT_TAG (debug_archive, rct::mgSig, "rct::mgSig")
 VARIANT_TAG (debug_archive, rct::rangeSig, "rct::rangeSig")
 VARIANT_TAG (debug_archive, rct::boroSig, "rct::boroSig")
 VARIANT_TAG (debug_archive, rct::rctSig, "rct::rctSig")
 VARIANT_TAG (debug_archive, rct::Bulletproof, "rct::bulletproof")
 VARIANT_TAG (debug_archive, rct::multisig_kLRki, "rct::multisig_kLRki")
 VARIANT_TAG (debug_archive, rct::multisig_out, "rct::multisig_out")
 VARIANT_TAG (debug_archive, rct::clsag, "rct::clsag")
 VARIANT_TAG (debug_archive, rct::BulletproofPlus, "rct::bulletproof_plus")
 VARIANT_TAG (binary_archive, rct::key, 0x90)
 VARIANT_TAG (binary_archive, rct::key64, 0x91)
 VARIANT_TAG (binary_archive, rct::keyV, 0x92)
 VARIANT_TAG (binary_archive, rct::keyM, 0x93)
 VARIANT_TAG (binary_archive, rct::ctkey, 0x94)
 VARIANT_TAG (binary_archive, rct::ctkeyV, 0x95)
 VARIANT_TAG (binary_archive, rct::ctkeyM, 0x96)
 VARIANT_TAG (binary_archive, rct::ecdhTuple, 0x97)
 VARIANT_TAG (binary_archive, rct::mgSig, 0x98)
 VARIANT_TAG (binary_archive, rct::rangeSig, 0x99)
 VARIANT_TAG (binary_archive, rct::boroSig, 0x9a)
 VARIANT_TAG (binary_archive, rct::rctSig, 0x9b)
 VARIANT_TAG (binary_archive, rct::Bulletproof, 0x9c)
 VARIANT_TAG (binary_archive, rct::multisig_kLRki, 0x9d)
 VARIANT_TAG (binary_archive, rct::multisig_out, 0x9e)
 VARIANT_TAG (binary_archive, rct::clsag, 0x9f)
 VARIANT_TAG (binary_archive, rct::BulletproofPlus, 0xa0)
 VARIANT_TAG (json_archive, rct::key, "rct_key")
 VARIANT_TAG (json_archive, rct::key64, "rct_key64")
 VARIANT_TAG (json_archive, rct::keyV, "rct_keyV")
 VARIANT_TAG (json_archive, rct::keyM, "rct_keyM")
 VARIANT_TAG (json_archive, rct::ctkey, "rct_ctkey")
 VARIANT_TAG (json_archive, rct::ctkeyV, "rct_ctkeyV")
 VARIANT_TAG (json_archive, rct::ctkeyM, "rct_ctkeyM")
 VARIANT_TAG (json_archive, rct::ecdhTuple, "rct_ecdhTuple")
 VARIANT_TAG (json_archive, rct::mgSig, "rct_mgSig")
 VARIANT_TAG (json_archive, rct::rangeSig, "rct_rangeSig")
 VARIANT_TAG (json_archive, rct::boroSig, "rct_boroSig")
 VARIANT_TAG (json_archive, rct::rctSig, "rct_rctSig")
 VARIANT_TAG (json_archive, rct::Bulletproof, "rct_bulletproof")
 VARIANT_TAG (json_archive, rct::multisig_kLRki, "rct_multisig_kLR")
 VARIANT_TAG (json_archive, rct::multisig_out, "rct_multisig_out")
 VARIANT_TAG (json_archive, rct::clsag, "rct_clsag")
 VARIANT_TAG (json_archive, rct::BulletproofPlus, "rct_bulletproof_plus")

Variables

static const key rct::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 rct::H2

Macro Definition Documentation

◆ ATOMS

#define ATOMS   64

◆ DP

#define DP ( x)

◆ RCT_TYPES_H

#define RCT_TYPES_H

Function Documentation

◆ BLOB_SERIALIZER() [1/5]

BLOB_SERIALIZER ( rct::boroSig )

◆ BLOB_SERIALIZER() [2/5]

BLOB_SERIALIZER ( rct::ctkey )

◆ BLOB_SERIALIZER() [3/5]

BLOB_SERIALIZER ( rct::key )

◆ BLOB_SERIALIZER() [4/5]

BLOB_SERIALIZER ( rct::key64 )

◆ BLOB_SERIALIZER() [5/5]

BLOB_SERIALIZER ( rct::multisig_kLRki )

◆ VARIANT_TAG() [1/51]

VARIANT_TAG ( binary_archive ,
rct::boroSig ,
0x9a  )

◆ VARIANT_TAG() [2/51]

VARIANT_TAG ( binary_archive ,
rct::Bulletproof ,
0x9c  )

◆ VARIANT_TAG() [3/51]

VARIANT_TAG ( binary_archive ,
rct::BulletproofPlus ,
0xa0  )

◆ VARIANT_TAG() [4/51]

VARIANT_TAG ( binary_archive ,
rct::clsag ,
0x9f  )

◆ VARIANT_TAG() [5/51]

VARIANT_TAG ( binary_archive ,
rct::ctkey ,
0x94  )

◆ VARIANT_TAG() [6/51]

VARIANT_TAG ( binary_archive ,
rct::ctkeyM ,
0x96  )

◆ VARIANT_TAG() [7/51]

VARIANT_TAG ( binary_archive ,
rct::ctkeyV ,
0x95  )

◆ VARIANT_TAG() [8/51]

VARIANT_TAG ( binary_archive ,
rct::ecdhTuple ,
0x97  )

◆ VARIANT_TAG() [9/51]

VARIANT_TAG ( binary_archive ,
rct::key ,
0x90  )

◆ VARIANT_TAG() [10/51]

VARIANT_TAG ( binary_archive ,
rct::key64 ,
0x91  )

◆ VARIANT_TAG() [11/51]

VARIANT_TAG ( binary_archive ,
rct::keyM ,
0x93  )

◆ VARIANT_TAG() [12/51]

VARIANT_TAG ( binary_archive ,
rct::keyV ,
0x92  )

◆ VARIANT_TAG() [13/51]

VARIANT_TAG ( binary_archive ,
rct::mgSig ,
0x98  )

◆ VARIANT_TAG() [14/51]

VARIANT_TAG ( binary_archive ,
rct::multisig_kLRki ,
0x9d  )

◆ VARIANT_TAG() [15/51]

VARIANT_TAG ( binary_archive ,
rct::multisig_out ,
0x9e  )

◆ VARIANT_TAG() [16/51]

VARIANT_TAG ( binary_archive ,
rct::rangeSig ,
0x99  )

◆ VARIANT_TAG() [17/51]

VARIANT_TAG ( binary_archive ,
rct::rctSig ,
0x9b  )

◆ VARIANT_TAG() [18/51]

VARIANT_TAG ( debug_archive ,
rct::boroSig ,
"rct::boroSig"  )

◆ VARIANT_TAG() [19/51]

VARIANT_TAG ( debug_archive ,
rct::Bulletproof ,
"rct::bulletproof"  )

◆ VARIANT_TAG() [20/51]

VARIANT_TAG ( debug_archive ,
rct::BulletproofPlus ,
"rct::bulletproof_plus"  )

◆ VARIANT_TAG() [21/51]

VARIANT_TAG ( debug_archive ,
rct::clsag ,
"rct::clsag"  )

◆ VARIANT_TAG() [22/51]

VARIANT_TAG ( debug_archive ,
rct::ctkey ,
"rct::ctkey"  )

◆ VARIANT_TAG() [23/51]

VARIANT_TAG ( debug_archive ,
rct::ctkeyM ,
"rct::ctkeyM"  )

◆ VARIANT_TAG() [24/51]

VARIANT_TAG ( debug_archive ,
rct::ctkeyV ,
"rct::ctkeyV"  )

◆ VARIANT_TAG() [25/51]

VARIANT_TAG ( debug_archive ,
rct::ecdhTuple ,
"rct::ecdhTuple"  )

◆ VARIANT_TAG() [26/51]

VARIANT_TAG ( debug_archive ,
rct::key ,
"rct::key"  )

◆ VARIANT_TAG() [27/51]

VARIANT_TAG ( debug_archive ,
rct::key64 ,
"rct::key64"  )

◆ VARIANT_TAG() [28/51]

VARIANT_TAG ( debug_archive ,
rct::keyM ,
"rct::keyM"  )

◆ VARIANT_TAG() [29/51]

VARIANT_TAG ( debug_archive ,
rct::keyV ,
"rct::keyV"  )

◆ VARIANT_TAG() [30/51]

VARIANT_TAG ( debug_archive ,
rct::mgSig ,
"rct::mgSig"  )

◆ VARIANT_TAG() [31/51]

VARIANT_TAG ( debug_archive ,
rct::multisig_kLRki ,
"rct::multisig_kLRki"  )

◆ VARIANT_TAG() [32/51]

VARIANT_TAG ( debug_archive ,
rct::multisig_out ,
"rct::multisig_out"  )

◆ VARIANT_TAG() [33/51]

VARIANT_TAG ( debug_archive ,
rct::rangeSig ,
"rct::rangeSig"  )

◆ VARIANT_TAG() [34/51]

VARIANT_TAG ( debug_archive ,
rct::rctSig ,
"rct::rctSig"  )

◆ VARIANT_TAG() [35/51]

VARIANT_TAG ( json_archive ,
rct::boroSig ,
"rct_boroSig"  )

◆ VARIANT_TAG() [36/51]

VARIANT_TAG ( json_archive ,
rct::Bulletproof ,
"rct_bulletproof"  )

◆ VARIANT_TAG() [37/51]

VARIANT_TAG ( json_archive ,
rct::BulletproofPlus ,
"rct_bulletproof_plus"  )

◆ VARIANT_TAG() [38/51]

VARIANT_TAG ( json_archive ,
rct::clsag ,
"rct_clsag"  )

◆ VARIANT_TAG() [39/51]

VARIANT_TAG ( json_archive ,
rct::ctkey ,
"rct_ctkey"  )

◆ VARIANT_TAG() [40/51]

VARIANT_TAG ( json_archive ,
rct::ctkeyM ,
"rct_ctkeyM"  )

◆ VARIANT_TAG() [41/51]

VARIANT_TAG ( json_archive ,
rct::ctkeyV ,
"rct_ctkeyV"  )

◆ VARIANT_TAG() [42/51]

VARIANT_TAG ( json_archive ,
rct::ecdhTuple ,
"rct_ecdhTuple"  )

◆ VARIANT_TAG() [43/51]

VARIANT_TAG ( json_archive ,
rct::key ,
"rct_key"  )

◆ VARIANT_TAG() [44/51]

VARIANT_TAG ( json_archive ,
rct::key64 ,
"rct_key64"  )

◆ VARIANT_TAG() [45/51]

VARIANT_TAG ( json_archive ,
rct::keyM ,
"rct_keyM"  )

◆ VARIANT_TAG() [46/51]

VARIANT_TAG ( json_archive ,
rct::keyV ,
"rct_keyV"  )

◆ VARIANT_TAG() [47/51]

VARIANT_TAG ( json_archive ,
rct::mgSig ,
"rct_mgSig"  )

◆ VARIANT_TAG() [48/51]

VARIANT_TAG ( json_archive ,
rct::multisig_kLRki ,
"rct_multisig_kLR"  )

◆ VARIANT_TAG() [49/51]

VARIANT_TAG ( json_archive ,
rct::multisig_out ,
"rct_multisig_out"  )

◆ VARIANT_TAG() [50/51]

VARIANT_TAG ( json_archive ,
rct::rangeSig ,
"rct_rangeSig"  )

◆ VARIANT_TAG() [51/51]

VARIANT_TAG ( json_archive ,
rct::rctSig ,
"rct_rctSig"  )