From cfa73b276e83746f69bfaac6d9c603d4665caf0a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 5 Jun 2018 17:18:37 +0200 Subject: [PATCH] src/apps/wallet: more work on zcash overwinter --- src/apps/wallet/sign_tx/segwit_bip143.py | 1 + src/apps/wallet/sign_tx/signing.py | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/apps/wallet/sign_tx/segwit_bip143.py b/src/apps/wallet/sign_tx/segwit_bip143.py index fc2b5db5e..ba7c0726f 100644 --- a/src/apps/wallet/sign_tx/segwit_bip143.py +++ b/src/apps/wallet/sign_tx/segwit_bip143.py @@ -64,6 +64,7 @@ class Bip143: write_uint32(h_preimage, tx.lock_time) # nLockTime if tx.overwintered: write_uint32(h_preimage, tx.expiry) # expiryHeight + write_varint(h_preimage, 0) # nJoinSplit write_uint32(h_preimage, sighash) # nHashType return get_tx_hash(h_preimage, True) diff --git a/src/apps/wallet/sign_tx/signing.py b/src/apps/wallet/sign_tx/signing.py index c318fc888..05748669e 100644 --- a/src/apps/wallet/sign_tx/signing.py +++ b/src/apps/wallet/sign_tx/signing.py @@ -287,7 +287,8 @@ async def sign_tx(tx: SignTx, root: bip32.HDNode): write_uint32(h_sign, tx.lock_time) if tx.overwintered: - write_uint32(h_sign, tx.expiry) + write_uint32(h_sign, tx.expiry) # expiryHeight + write_varint(h_sign, 0) # nJoinSplit write_uint32(h_sign, get_hash_type(coin)) @@ -378,7 +379,8 @@ async def sign_tx(tx: SignTx, root: bip32.HDNode): write_uint32(tx_ser.serialized_tx, tx.lock_time) if tx.overwintered: - write_uint32(tx_ser.serialized_tx, tx.expiry) + write_uint32(tx_ser.serialized_tx, tx.expiry) # expiryHeight + write_varint(tx_ser.serialized_tx, 0) # nJoinSplit await request_tx_finish(tx_req) @@ -415,6 +417,9 @@ async def get_prevtx_output_value(coin: CoinInfo, tx_req: TxRequest, prev_hash: write_uint32(txh, tx.lock_time) + if tx.overwintered: + write_uint32(txh, tx.expiry) + ofs = 0 while ofs < tx.extra_data_len: size = min(1024, tx.extra_data_len - ofs)