Electroneum
protocol.hpp File Reference
#include "trezor_defs.hpp"
#include "device/device_cold.hpp"
#include "messages_map.hpp"
#include "transport.hpp"
#include "wallet/wallet2.h"
Include dependency graph for protocol.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  hw::trezor::protocol::tx::TData
 
class  hw::trezor::protocol::tx::Signer
 

Namespaces

 hw
 
 hw::trezor
 
 hw::trezor::protocol
 
 hw::trezor::protocol::crypto
 
 hw::trezor::protocol::crypto::chacha
 
 hw::trezor::protocol::ki
 
 hw::trezor::protocol::tx
 

Typedefs

using hw::trezor::protocol::ki::ElectroneumTransferDetails = messages::electroneum::ElectroneumKeyImageSyncStepRequest_ElectroneumTransferDetails
 
using hw::trezor::protocol::ki::ElectroneumSubAddressIndicesList = messages::electroneum::ElectroneumKeyImageExportInitRequest_ElectroneumSubAddressIndicesList
 
using hw::trezor::protocol::ki::ElectroneumExportedKeyImage = messages::electroneum::ElectroneumKeyImageSyncStepAck_ElectroneumExportedKeyImage
 
using hw::trezor::protocol::ki::exported_key_image = hw::device_cold::exported_key_image
 
using hw::trezor::protocol::tx::TsxData = messages::electroneum::ElectroneumTransactionInitRequest_ElectroneumTransactionData
 
using hw::trezor::protocol::tx::ElectroneumTransactionDestinationEntry = messages::electroneum::ElectroneumTransactionDestinationEntry
 
using hw::trezor::protocol::tx::ElectroneumAccountPublicAddress = messages::electroneum::ElectroneumTransactionDestinationEntry_ElectroneumAccountPublicAddress
 
using hw::trezor::protocol::tx::ElectroneumTransactionSourceEntry = messages::electroneum::ElectroneumTransactionSourceEntry
 
using hw::trezor::protocol::tx::ElectroneumMultisigKLRki = messages::electroneum::ElectroneumTransactionSourceEntry_ElectroneumMultisigKLRki
 
using hw::trezor::protocol::tx::ElectroneumOutputEntry = messages::electroneum::ElectroneumTransactionSourceEntry_ElectroneumOutputEntry
 
using hw::trezor::protocol::tx::ElectroneumRctKey = messages::electroneum::ElectroneumTransactionSourceEntry_ElectroneumOutputEntry_ElectroneumRctKeyPublic
 
using hw::trezor::protocol::tx::ElectroneumRsigData = messages::electroneum::ElectroneumTransactionRsigData
 
using hw::trezor::protocol::tx::tx_construction_data = tools::wallet2::tx_construction_data
 
using hw::trezor::protocol::tx::unsigned_tx_set = tools::wallet2::unsigned_tx_set
 
typedef boost::variant< rct::rangeSig, rct::Bulletproofhw::trezor::protocol::tx::rsig_v
 

Functions

std::string hw::trezor::protocol::key_to_string (const ::crypto::ec_point &key)
 
std::string hw::trezor::protocol::key_to_string (const ::crypto::ec_scalar &key)
 
std::string hw::trezor::protocol::key_to_string (const ::crypto::hash &key)
 
std::string hw::trezor::protocol::key_to_string (const ::rct::key &key)
 
void hw::trezor::protocol::string_to_key (::crypto::ec_scalar &key, const std::string &str)
 
void hw::trezor::protocol::string_to_key (::crypto::ec_point &key, const std::string &str)
 
void hw::trezor::protocol::string_to_key (::rct::key &key, const std::string &str)
 
template<class sub_t , class InputIterator >
void hw::trezor::protocol::assign_to_repeatable (::google::protobuf::RepeatedField< sub_t > *dst, const InputIterator begin, const InputIterator end)
 
template<class sub_t , class InputIterator >
void hw::trezor::protocol::assign_from_repeatable (std::vector< sub_t > *dst, const InputIterator begin, const InputIterator end)
 
template<typename T >
bool hw::trezor::protocol::cn_deserialize (const void *buff, size_t len, T &dst)
 
template<typename T >
bool hw::trezor::protocol::cn_deserialize (const std::string &str, T &dst)
 
template<typename T >
std::string hw::trezor::protocol::cn_serialize (T &obj)
 
void hw::trezor::protocol::crypto::chacha::decrypt (const void *ciphertext, size_t length, const uint8_t *key, const uint8_t *iv, char *plaintext, size_t *plaintext_len)
 
bool hw::trezor::protocol::ki::key_image_data (wallet_shim *wallet, const std::vector< tools::wallet2::transfer_details > &transfers, std::vector< ElectroneumTransferDetails > &res)
 
std::string hw::trezor::protocol::ki::compute_hash (const ElectroneumTransferDetails &rr)
 
void hw::trezor::protocol::ki::generate_commitment (std::vector< ElectroneumTransferDetails > &mtds, const std::vector< tools::wallet2::transfer_details > &transfers, std::shared_ptr< messages::electroneum::ElectroneumKeyImageExportInitRequest > &req)
 
void hw::trezor::protocol::ki::live_refresh_ack (const ::crypto::secret_key &view_key_priv, const ::crypto::public_key &out_key, const std::shared_ptr< messages::electroneum::ElectroneumLiveRefreshStepAck > &ack, ::cryptonote::keypair &in_ephemeral, ::crypto::key_image &ki)
 
void hw::trezor::protocol::tx::translate_address (ElectroneumAccountPublicAddress *dst, const cryptonote::account_public_address *src)
 
void hw::trezor::protocol::tx::translate_dst_entry (ElectroneumTransactionDestinationEntry *dst, const cryptonote::tx_destination_entry *src)
 
void hw::trezor::protocol::tx::translate_src_entry (ElectroneumTransactionSourceEntry *dst, const cryptonote::tx_source_entry *src)
 
void hw::trezor::protocol::tx::translate_klrki (ElectroneumMultisigKLRki *dst, const rct::multisig_kLRki *src)
 
void hw::trezor::protocol::tx::translate_rct_key (ElectroneumRctKey *dst, const rct::ctkey *src)
 
std::string hw::trezor::protocol::tx::hash_addr (const ElectroneumAccountPublicAddress *addr, boost::optional< uint64_t > amount, boost::optional< bool > is_subaddr)
 
std::string hw::trezor::protocol::tx::hash_addr (const std::string &spend_key, const std::string &view_key, boost::optional< uint64_t > amount, boost::optional< bool > is_subaddr)
 
std::string hw::trezor::protocol::tx::hash_addr (const ::crypto::public_key *spend_key, const ::crypto::public_key *view_key, boost::optional< uint64_t > amount, boost::optional< bool > is_subaddr)
 
::crypto::secret_key hw::trezor::protocol::tx::compute_enc_key (const ::crypto::secret_key &private_view_key, const std::string &aux, const std::string &salt)
 
void hw::trezor::protocol::tx::load_tx_key_data (hw::device_cold::tx_key_data_t &res, const std::string &data)
 
std::shared_ptr< messages::Electroneum::ElectroneumGetTxKeyRequest > hw::trezor::protocol::tx::get_tx_key (const hw::device_cold::tx_key_data_t &tx_data)
 
void hw::trezor::protocol::tx::get_tx_key_ack (std::vector<::crypto::secret_key > &tx_keys, const std::string &tx_prefix_hash, const ::crypto::secret_key &view_key_priv, std::shared_ptr< const messages::electroneum::ElectroneumGetTxKeyAck > ack)
 

Variables

const unsigned hw::trezor::protocol::crypto::chacha::IV_SIZE = 12
 
const unsigned hw::trezor::protocol::crypto::chacha::TAG_SIZE = 16