|
12 | 12 | getdescriptors, |
13 | 13 | prompt_pin, |
14 | 14 | toggle_passphrase, |
| 15 | + register, |
15 | 16 | restore_device, |
16 | 17 | send_pin, |
17 | 18 | setup_device, |
|
22 | 23 | ) |
23 | 24 | from .common import ( |
24 | 25 | AddressType, |
| 26 | + BIP388Policy, |
25 | 27 | Chain, |
26 | 28 | ) |
27 | 29 | from .errors import ( |
@@ -59,6 +61,10 @@ def backup_device_handler(args: argparse.Namespace, client: HardwareWalletClient |
59 | 61 | def displayaddress_handler(args: argparse.Namespace, client: HardwareWalletClient) -> Dict[str, str]: |
60 | 62 | return displayaddress(client, desc=args.desc, path=args.path, addr_type=args.addr_type) |
61 | 63 |
|
| 64 | +def register_handler(args: argparse.Namespace, client: HardwareWalletClient) -> Dict[str, str]: |
| 65 | + policy = BIP388Policy(name=args.name, descriptor_template=args.desc, keys_info=args.key) |
| 66 | + return register(client, bip388_policy=policy) |
| 67 | + |
62 | 68 | def enumerate_handler(args: argparse.Namespace) -> List[Dict[str, Any]]: |
63 | 69 | return enumerate(password=args.password, expert=args.expert, chain=args.chain, allow_emulators=args.allow_emulators) |
64 | 70 |
|
@@ -197,6 +203,12 @@ def get_parser() -> HWIArgumentParser: |
197 | 203 | displayaddr_parser.add_argument("--addr-type", help="The address type to display", type=AddressType.argparse, choices=list(AddressType), default=AddressType.WIT) # type: ignore |
198 | 204 | displayaddr_parser.set_defaults(func=displayaddress_handler) |
199 | 205 |
|
| 206 | + register_parser = subparsers.add_parser('register', help='Register a BIP388 wallet policy') |
| 207 | + register_parser.add_argument('--name', help='Name for the policy') |
| 208 | + register_parser.add_argument('--desc', help='Descriptor template, e.g. tr(musig(@0,@1)') |
| 209 | + register_parser.add_argument('--key', help='Key information, e.g. [00000000/84h/0h/0h]xpub...', action='append') |
| 210 | + register_parser.set_defaults(func=register_handler) |
| 211 | + |
200 | 212 | setupdev_parser = subparsers.add_parser('setup', help='Setup a device. Passphrase protection uses the password given by -p. Requires interactive mode') |
201 | 213 | setupdev_parser.add_argument('--label', '-l', help='The name to give to the device', default='') |
202 | 214 | setupdev_parser.add_argument('--backup_passphrase', '-b', help='The passphrase to use for the backup, if applicable', default='') |
|
0 commit comments