From d2d3c1200c29a30dd2daa283e062a8946cf67b87 Mon Sep 17 00:00:00 2001 From: kdmukai Date: Tue, 25 Oct 2022 10:00:36 -0500 Subject: [PATCH] Feature: QR message signing for SeedSigner (#1938) * supports_qr_message_signing added * cypress test adapted Co-authored-by: moneymanolis --- cypress/integration/spec_qr_signing.js | 15 ++++----------- src/cryptoadvance/specter/device.py | 1 + src/cryptoadvance/specter/devices/seedsigner.py | 3 +++ src/cryptoadvance/specter/devices/specter.py | 1 + .../specter/templates/device/device.jinja | 7 ++++--- .../specter/templates/includes/address-data.html | 2 +- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/cypress/integration/spec_qr_signing.js b/cypress/integration/spec_qr_signing.js index e37c19678..ebb126c08 100644 --- a/cypress/integration/spec_qr_signing.js +++ b/cypress/integration/spec_qr_signing.js @@ -25,21 +25,14 @@ describe('Test QR code signing flow', () => { cy.get('#page_overlay_popup_cancel_button').click() }) - it('QR code signing (currently) only available for DIYs', () => { + it('No QR message signing button for a Trezor', () => { // Changing the device type to simulate a different device cy.changeDeviceType("DIY ghost", "Trezor") + cy.reload() cy.contains("Sign message").click() // Only USB signing available for a Trezor device - cy.get('#diy_ghost_qr_sign_msg_btn').should('not.exist') - cy.get('#diy_ghost_usb_sign_msg_btn').should('exist') - cy.get('#page_overlay_popup_cancel_button').click() - cy.contains("Ghost wallet").click() - cy.get('main').contains('Addresses').click() - cy.contains('td', '#0').siblings().contains('bcrt').click() - cy.get('#msg-signing-btn').should('exist') - cy.get('#page_overlay_popup_cancel_button').click() - // Reload fixes issues with sometimes persisting overlays - cy.reload() + cy.contains('Sign message via USB').should('be.visible') + cy.contains('Sign message via QR code').should('not.exist') // Change device type back to DIY cy.changeDeviceType("DIY ghost", "specter") }) diff --git a/src/cryptoadvance/specter/device.py b/src/cryptoadvance/specter/device.py index 882bb9158..39a6bb1ac 100644 --- a/src/cryptoadvance/specter/device.py +++ b/src/cryptoadvance/specter/device.py @@ -24,6 +24,7 @@ class Device: # - "on": animate psbt by default # - "off": don't animate psbt even if it is huge qr_code_animate = "auto" + supports_qr_message_signing = False hwi_support = False supports_hwi_toggle_passphrase = False supports_hwi_multisig_display_address = False diff --git a/src/cryptoadvance/specter/devices/seedsigner.py b/src/cryptoadvance/specter/devices/seedsigner.py index de5dd7797..37f2ea9f5 100644 --- a/src/cryptoadvance/specter/devices/seedsigner.py +++ b/src/cryptoadvance/specter/devices/seedsigner.py @@ -9,8 +9,11 @@ class SeedSignerDevice(Device): sd_card_support = False qr_code_support = True + qr_code_support_verify = True qr_code_frame_rate = 2 # 500 ms per frame qr_code_animate = "on" + supports_qr_message_signing = True + taproot_support = True def create_psbts(self, base64_psbt, wallet): # in QR codes keep only xpubs diff --git a/src/cryptoadvance/specter/devices/specter.py b/src/cryptoadvance/specter/devices/specter.py index d803d7d1a..f8caac00d 100644 --- a/src/cryptoadvance/specter/devices/specter.py +++ b/src/cryptoadvance/specter/devices/specter.py @@ -69,6 +69,7 @@ class Specter(SDCardDevice): qr_code_support = True qr_code_support_verify = True wallet_export_type = "qr" + supports_qr_message_signing = True supports_hwi_multisig_display_address = True liquid_support = True taproot_support = True diff --git a/src/cryptoadvance/specter/templates/device/device.jinja b/src/cryptoadvance/specter/templates/device/device.jinja index bdd627287..98e55e4de 100644 --- a/src/cryptoadvance/specter/templates/device/device.jinja +++ b/src/cryptoadvance/specter/templates/device/device.jinja @@ -92,7 +92,8 @@ {% endif %} - {% if device.hwi_support or device.device_type == "specter" %} + + {% if device.hwi_support or device.supports_qr_message_signing %}