diff options
| author | tobtoht <tob@featherwallet.org> | 2025-11-11 20:51:52 +0100 |
|---|---|---|
| committer | tobtoht <tob@featherwallet.org> | 2025-11-11 20:57:56 +0100 |
| commit | 26cf4f914134fa0808ca539e2d0e7d17aac125e1 (patch) | |
| tree | 7cf9cc6442edd41ccd51cfab0fadf156ed357aa9 /src/device/device_ledger.cpp | |
| parent | 3cc9d65c9374b541e64320052c933184944375ea (diff) | |
| download | monzero-core-26cf4f914134fa0808ca539e2d0e7d17aac125e1.tar.gz monzero-core-26cf4f914134fa0808ca539e2d0e7d17aac125e1.tar.xz monzero-core-26cf4f914134fa0808ca539e2d0e7d17aac125e1.zip | |
ledger: throw on secret view key export rejection
Diffstat (limited to 'src/device/device_ledger.cpp')
| -rw-r--r-- | src/device/device_ledger.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/device/device_ledger.cpp b/src/device/device_ledger.cpp index 5d0afe1ee..2709ba071 100644 --- a/src/device/device_ledger.cpp +++ b/src/device/device_ledger.cpp @@ -409,7 +409,7 @@ namespace hw { this->length_send = set_command_header_noopt(ins, p1); if (ins == INS_GET_KEY && p1 == IO_SECRET_KEY) { // export view key user input - this->exchange_wait_on_input(); + CHECK_AND_ASSERT_THROW_MES(this->exchange_wait_on_input() == 0, "Key export rejected on device."); } else { this->exchange(); } @@ -618,15 +618,14 @@ namespace hw { send_simple(INS_GET_KEY, 0x02); //View key is retrievied, if allowed, to speed up blockchain parsing - memmove(this->viewkey.data, this->buffer_recv+0, 32); - if (is_fake_view_key(this->viewkey)) { - MDEBUG("Have Not view key"); - this->has_view_key = false; - } else { - MDEBUG("Have view key"); - this->has_view_key = true; - } - + crypto::secret_key view_secret_key; + memmove(view_secret_key.data, this->buffer_recv+0, 32); + + CHECK_AND_ASSERT_THROW_MES(!is_fake_view_key(view_secret_key), "Key export rejected on device."); + + this->viewkey = view_secret_key; + this->has_view_key = true; + #ifdef DEBUG_HWDEVICE send_simple(INS_GET_KEY, 0x04); memmove(dbg_viewkey.data, this->buffer_recv+0, 32); |
