Skip to content

Commit dd481ee

Browse files
valerio-vaccarojgriffiths
authored andcommitted
jade_cli: add required arguments to sign_tx
1 parent 1914ace commit dd481ee

1 file changed

Lines changed: 36 additions & 3 deletions

File tree

jade_cli.py

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env python
22

33
import base64
4+
import json
45
import click
56
import functools
67
import logging
@@ -10,6 +11,33 @@
1011
from jadepy.jade import JadeAPI
1112

1213

14+
def h2b(hexdata):
15+
if hexdata is None or isinstance(hexdata, (int, bool)):
16+
return hexdata
17+
if isinstance(hexdata, list):
18+
return list(map(h2b, hexdata))
19+
if isinstance(hexdata, dict):
20+
return {k: h2b(v) for k, v in hexdata.items()}
21+
return bytes.fromhex(hexdata)
22+
23+
24+
def b2h_impl(obj, leaf_fn):
25+
if isinstance(obj, dict):
26+
return {k: b2h_impl(v, leaf_fn) for k, v in obj.items()}
27+
if isinstance(obj, list):
28+
return [b2h_impl(v, leaf_fn) for v in obj]
29+
if isinstance(obj, tuple):
30+
return tuple(b2h_impl(v, leaf_fn) for v in obj)
31+
return leaf_fn(obj)
32+
33+
34+
def b2h(result):
35+
return b2h_impl(
36+
result,
37+
lambda v: bytes(v).hex() if isinstance(v, (bytes, bytearray)) else v
38+
)
39+
40+
1341
class JadeClient:
1442
def __init__(self, device='tcp:localhost:30121'):
1543
self.device = device
@@ -151,11 +179,16 @@ def sign_message(jade, path, message, network):
151179

152180
@cli.command()
153181
@click.argument('tx')
182+
@click.argument('inputs')
183+
@click.argument('change')
154184
@click.option('--network', default='testnet')
155185
@with_jade_client
156-
def sign_tx(jade, tx, network):
157-
result = jade.sign_tx(network, tx)
158-
click.echo(base64.b64encode(result))
186+
def sign_tx(jade, tx, inputs, change, network):
187+
tx_bytes = bytes.fromhex(tx)
188+
inputs_obj = h2b(json.loads(inputs))
189+
change_obj = h2b(json.loads(change))
190+
result = jade.sign_tx(network, tx_bytes, inputs_obj, change_obj)
191+
click.echo(json.dumps(b2h(result)))
159192

160193

161194
@cli.command()

0 commit comments

Comments
 (0)