device/trezor: HF10 support added, wallet::API
- import only key images generated by cold signing process - wallet_api: trezor methods added - wallet: button request code added - const added to methods - wallet2::get_tx_key_device() tries to decrypt stored tx private keys using the device. - simplewallet supports get_tx_key and get_tx_proof on hw device using the get_tx_key feature - live refresh enables refresh with trezor i.e. computing key images on the fly. More convenient and efficient for users. - device: has_ki_live_refresh added - a thread is watching whether live refresh is being computed, if not for 30 seconds, it terminates the live refresh process - switches Trezor state
This commit is contained in:
@@ -324,6 +324,19 @@ struct MultisigState {
|
||||
uint32_t total;
|
||||
};
|
||||
|
||||
|
||||
struct DeviceProgress {
|
||||
DeviceProgress(): m_progress(0), m_indeterminate(false) {}
|
||||
DeviceProgress(double progress, bool indeterminate=false): m_progress(progress), m_indeterminate(indeterminate) {}
|
||||
|
||||
virtual double progress() const { return m_progress; }
|
||||
virtual bool indeterminate() const { return m_indeterminate; }
|
||||
|
||||
protected:
|
||||
double m_progress;
|
||||
bool m_indeterminate;
|
||||
};
|
||||
|
||||
struct WalletListener
|
||||
{
|
||||
virtual ~WalletListener() = 0;
|
||||
@@ -364,6 +377,31 @@ struct WalletListener
|
||||
* @brief refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "refresh" synchronously
|
||||
*/
|
||||
virtual void refreshed() = 0;
|
||||
|
||||
/**
|
||||
* @brief called by device if the action is required
|
||||
*/
|
||||
virtual void onDeviceButtonRequest(uint64_t code) {}
|
||||
|
||||
/**
|
||||
* @brief called by device when PIN is needed
|
||||
*/
|
||||
virtual optional<std::string> onDevicePinRequest() {
|
||||
throw std::runtime_error("Not supported");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief called by device when passphrase entry is needed
|
||||
*/
|
||||
virtual optional<std::string> onDevicePassphraseRequest(bool on_device) {
|
||||
if (!on_device) throw std::runtime_error("Not supported");
|
||||
return optional<std::string>();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Signalizes device operation progress
|
||||
*/
|
||||
virtual void onDeviceProgress(const DeviceProgress & event) {};
|
||||
};
|
||||
|
||||
|
||||
@@ -375,7 +413,8 @@ struct Wallet
|
||||
{
|
||||
enum Device {
|
||||
Device_Software = 0,
|
||||
Device_Ledger = 1
|
||||
Device_Ledger = 1,
|
||||
Device_Trezor = 2
|
||||
};
|
||||
|
||||
enum Status {
|
||||
@@ -401,6 +440,8 @@ struct Wallet
|
||||
//! returns both error and error string atomically. suggested to use in instead of status() and errorString()
|
||||
virtual void statusWithErrorString(int& status, std::string& errorString) const = 0;
|
||||
virtual bool setPassword(const std::string &password) = 0;
|
||||
virtual bool setDevicePin(const std::string &password) { return false; };
|
||||
virtual bool setDevicePassphrase(const std::string &password) { return false; };
|
||||
virtual std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const = 0;
|
||||
std::string mainAddress() const { return address(0, 0); }
|
||||
virtual std::string path() const = 0;
|
||||
@@ -947,6 +988,9 @@ struct Wallet
|
||||
* \return Device they are on
|
||||
*/
|
||||
virtual Device getDeviceType() const = 0;
|
||||
|
||||
//! cold-device protocol key image sync
|
||||
virtual uint64_t coldKeyImageSync(uint64_t &spent, uint64_t &unspent) = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user