aboutsummaryrefslogtreecommitdiff
path: root/src/device/device.hpp
diff options
context:
space:
mode:
authorcslashm <cslashm@gmail.com>2018-03-26 12:55:48 +0200
committercslashm <cslashm@gmail.com>2018-03-31 18:00:33 +0200
commitc77d2bfaa0e0390e421b4d337f49451d504f7046 (patch)
treef9ad2766389b0efe78be3ff2dd9f5f65b7ed0f8f /src/device/device.hpp
parentChange mutex lock model to avoid dead lock and ensure locks are always released. (diff)
downloadmonero-c77d2bfaa0e0390e421b4d337f49451d504f7046.tar.xz
Add the possibility to export private view key for fast scan.
On client startup the device asks for authorization to export the private view key. If user agree, the client hold the private view key allowing a fast blockchain scan. If the user does not agree, the blockchain scan is fully done via the device.
Diffstat (limited to 'src/device/device.hpp')
-rw-r--r--src/device/device.hpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/device/device.hpp b/src/device/device.hpp
index dee191234..db489ff0c 100644
--- a/src/device/device.hpp
+++ b/src/device/device.hpp
@@ -78,6 +78,7 @@ namespace hw {
return false;
}
+
class device {
protected:
std::string name;
@@ -89,10 +90,12 @@ namespace hw {
virtual ~device() {}
explicit virtual operator bool() const = 0;
-
- static const int SIGNATURE_REAL = 0;
- static const int SIGNATURE_FAKE = 1;
-
+ enum device_mode {
+ NONE,
+ TRANSACTION_CREATE_REAL,
+ TRANSACTION_CREATE_FAKE,
+ TRANSACTION_PARSE
+ };
/* ======================================================================= */
/* SETUP/TEARDOWN */
@@ -106,6 +109,9 @@ namespace hw {
virtual bool connect(void) = 0;
virtual bool disconnect(void) = 0;
+ virtual bool set_mode(device_mode mode) = 0;
+
+
/* ======================================================================= */
/* LOCKER */
/* ======================================================================= */
@@ -166,8 +172,6 @@ namespace hw {
virtual bool open_tx(crypto::secret_key &tx_key) = 0;
- virtual bool set_signature_mode(unsigned int sig_mode) = 0;
-
virtual bool encrypt_payment_id(crypto::hash8 &payment_id, const crypto::public_key &public_key, const crypto::secret_key &secret_key) = 0;
bool decrypt_payment_id(crypto::hash8 &payment_id, const crypto::public_key &public_key, const crypto::secret_key &secret_key)
{
@@ -191,6 +195,12 @@ namespace hw {
virtual bool close_tx(void) = 0;
} ;
+ struct reset_mode {
+ device& hwref;
+ reset_mode(hw::device& dev) : hwref(dev) { }
+ ~reset_mode() { hwref.set_mode(hw::device::NONE);}
+ };
+
device& get_device(const std::string device_descriptor) ;
}