mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-17 05:03:07 +00:00
style(python): use 'h' for hardening in descriptors too
This commit is contained in:
parent
7d8a57a806
commit
b68412e89b
1
python/.changelog.d/3037.changed.1
Normal file
1
python/.changelog.d/3037.changed.1
Normal file
@ -0,0 +1 @@
|
||||
trezorctl: Use 'h' character in generated descriptors.
|
@ -233,7 +233,7 @@ def get_address(
|
||||
|
||||
@cli.command()
|
||||
@click.option("-c", "--coin", default=DEFAULT_COIN)
|
||||
@click.option("-n", "--address", required=True, help="BIP-32 path, e.g. m/44'/0'/0'")
|
||||
@click.option("-n", "--address", required=True, help="BIP-32 path, e.g. m/44h/0h/0h")
|
||||
@click.option("-e", "--curve")
|
||||
@click.option("-t", "--script-type", type=ChoiceType(INPUT_SCRIPTS))
|
||||
@click.option("-d", "--show-display", is_flag=True)
|
||||
@ -313,10 +313,10 @@ def _get_descriptor(
|
||||
else:
|
||||
raise ValueError("Unsupported coin")
|
||||
|
||||
path = f"m/{purpose}'/{coin_type}'/{account}'"
|
||||
path = f"m/{purpose}h/{coin_type}h/{account}h"
|
||||
if purpose == PURPOSE_SLIP25:
|
||||
if script_type == messages.InputScriptType.SPENDTAPROOT:
|
||||
path += "/1'"
|
||||
path += "/1h"
|
||||
else:
|
||||
raise ValueError("Unsupported SLIP25 script type")
|
||||
|
||||
|
@ -14,35 +14,38 @@
|
||||
# You should have received a copy of the License along with this library.
|
||||
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
|
||||
|
||||
import pytest
|
||||
|
||||
from trezorlib import tools
|
||||
|
||||
VECTORS = ( # descriptor, checksum
|
||||
(
|
||||
"pkh([5c9e228d/44h/0h/0h]xpub6BiVtCpG9fQPxnPmHXG8PhtzQdWC2Su4qWu6XW9tpWFYhxydCLJGrWBJZ5H6qTAHdPQ7pQhtpjiYZVZARo14qHiay2fvrX996oEP42u8wZy/0/*)",
|
||||
"lnrxp640",
|
||||
),
|
||||
(
|
||||
"pkh([5c9e228d/44h/0h/0h]xpub6BiVtCpG9fQPxnPmHXG8PhtzQdWC2Su4qWu6XW9tpWFYhxydCLJGrWBJZ5H6qTAHdPQ7pQhtpjiYZVZARo14qHiay2fvrX996oEP42u8wZy/1/*)",
|
||||
"w8x8u09h",
|
||||
),
|
||||
(
|
||||
"sh(wpkh([5c9e228d/49h/0h/0h]xpub6CVKsQYXc9awxgV1tWbG4foDvdcnieK2JkbpPEBKB5WwAPKBZ1mstLbKVB4ov7QzxzjaxNK6EfmNY5Jsk2cG26EVcEkycGW4tchT2dyUhrx/0/*))",
|
||||
"kx6mu23v",
|
||||
),
|
||||
(
|
||||
"sh(wpkh([5c9e228d/49h/0h/0h]xpub6CVKsQYXc9awxgV1tWbG4foDvdcnieK2JkbpPEBKB5WwAPKBZ1mstLbKVB4ov7QzxzjaxNK6EfmNY5Jsk2cG26EVcEkycGW4tchT2dyUhrx/1/*))",
|
||||
"r85dy4yn",
|
||||
),
|
||||
(
|
||||
"wpkh([5c9e228d/84h/0h/0h]xpub6DDUPHpUo4pcy43iJeZjbSVWGav1SMMmuWdMHiGtkK8rhKmfbomtkwW6GKs1GGAKehT6QRocrmda3WWxXawpjmwaUHfFRXuKrXSapdckEYF/0/*)",
|
||||
"vyj8qz0q",
|
||||
),
|
||||
(
|
||||
"wpkh([5c9e228d/84h/0h/0h]xpub6DDUPHpUo4pcy43iJeZjbSVWGav1SMMmuWdMHiGtkK8rhKmfbomtkwW6GKs1GGAKehT6QRocrmda3WWxXawpjmwaUHfFRXuKrXSapdckEYF/1/*)",
|
||||
"ashxahlc",
|
||||
),
|
||||
)
|
||||
|
||||
def test_descriptor_checksum():
|
||||
VECTOR = [
|
||||
(
|
||||
"pkh([5c9e228d/44'/0'/0']xpub6BiVtCpG9fQPxnPmHXG8PhtzQdWC2Su4qWu6XW9tpWFYhxydCLJGrWBJZ5H6qTAHdPQ7pQhtpjiYZVZARo14qHiay2fvrX996oEP42u8wZy/0/*)",
|
||||
"vzuemqzv",
|
||||
),
|
||||
(
|
||||
"pkh([5c9e228d/44'/0'/0']xpub6BiVtCpG9fQPxnPmHXG8PhtzQdWC2Su4qWu6XW9tpWFYhxydCLJGrWBJZ5H6qTAHdPQ7pQhtpjiYZVZARo14qHiay2fvrX996oEP42u8wZy/1/*)",
|
||||
"akecx4j5",
|
||||
),
|
||||
(
|
||||
"sh(wpkh([5c9e228d/49'/0'/0']xpub6CVKsQYXc9awxgV1tWbG4foDvdcnieK2JkbpPEBKB5WwAPKBZ1mstLbKVB4ov7QzxzjaxNK6EfmNY5Jsk2cG26EVcEkycGW4tchT2dyUhrx/0/*))",
|
||||
"jkfqtdfw",
|
||||
),
|
||||
(
|
||||
"sh(wpkh([5c9e228d/49'/0'/0']xpub6CVKsQYXc9awxgV1tWbG4foDvdcnieK2JkbpPEBKB5WwAPKBZ1mstLbKVB4ov7QzxzjaxNK6EfmNY5Jsk2cG26EVcEkycGW4tchT2dyUhrx/1/*))",
|
||||
"8h8knju3",
|
||||
),
|
||||
(
|
||||
"wpkh([5c9e228d/84'/0'/0']xpub6DDUPHpUo4pcy43iJeZjbSVWGav1SMMmuWdMHiGtkK8rhKmfbomtkwW6GKs1GGAKehT6QRocrmda3WWxXawpjmwaUHfFRXuKrXSapdckEYF/0/*)",
|
||||
"l4dc6ccr",
|
||||
),
|
||||
(
|
||||
"wpkh([5c9e228d/84'/0'/0']xpub6DDUPHpUo4pcy43iJeZjbSVWGav1SMMmuWdMHiGtkK8rhKmfbomtkwW6GKs1GGAKehT6QRocrmda3WWxXawpjmwaUHfFRXuKrXSapdckEYF/1/*)",
|
||||
"wpge8dgm",
|
||||
),
|
||||
]
|
||||
for d, c in VECTOR:
|
||||
assert tools.descriptor_checksum(d) == c
|
||||
|
||||
@pytest.mark.parametrize("descriptor, checksum", VECTORS)
|
||||
def test_descriptor_checksum(descriptor, checksum):
|
||||
assert tools.descriptor_checksum(descriptor) == checksum
|
||||
|
Loading…
Reference in New Issue
Block a user