@@ -1661,10 +1661,28 @@ def ton_sign_tx(self, address_n, raw_tx):
16611661
16621662 # ── Zcash Address Display ─────────────────────────────────
16631663 @expect (zcash_proto .ZcashAddress )
1664- def zcash_display_address (self , address_n , address , ak , nk , rivk , account = None ):
1664+ def zcash_display_address (self , address_n , address , ak , nk , rivk ,
1665+ account = None , expected_seed_fingerprint = None ):
1666+ """Display a Zcash unified address on the device for user confirmation.
1667+
1668+ Args:
1669+ address_n: ZIP-32 derivation path [32', 133', account']
1670+ address: unified address string ("u1...")
1671+ ak, nk, rivk: 32-byte FVK components for verification
1672+ account: account index (alternative to full path)
1673+ expected_seed_fingerprint: optional 32-byte ZIP-32 §6.1 seed
1674+ fingerprint. If provided, device verifies the match before
1675+ displaying and rejects with Failure on mismatch.
1676+
1677+ Returns:
1678+ ZcashAddress with .address and .seed_fingerprint of the
1679+ attesting device.
1680+ """
16651681 kwargs = dict (address_n = address_n , address = address , ak = ak , nk = nk , rivk = rivk )
16661682 if account is not None :
16671683 kwargs ['account' ] = account
1684+ if expected_seed_fingerprint is not None :
1685+ kwargs ['expected_seed_fingerprint' ] = expected_seed_fingerprint
16681686 return self .call (zcash_proto .ZcashDisplayAddress (** kwargs ))
16691687
16701688 # ── Zcash Orchard ──────────────────────────────────────────
@@ -1681,7 +1699,8 @@ def zcash_sign_pczt(self, address_n, actions, account=None,
16811699 header_digest = None , transparent_digest = None ,
16821700 sapling_digest = None , orchard_digest = None ,
16831701 orchard_flags = None , orchard_value_balance = None ,
1684- orchard_anchor = None , transparent_inputs = None ):
1702+ orchard_anchor = None , transparent_inputs = None ,
1703+ expected_seed_fingerprint = None ):
16851704 """Sign a Zcash Orchard shielded transaction via PCZT protocol.
16861705
16871706 Phase 2: Sends ZcashSignPCZT, then loops on ZcashPCZTActionAck
@@ -1737,6 +1756,8 @@ def zcash_sign_pczt(self, address_n, actions, account=None,
17371756 kwargs ['orchard_value_balance' ] = orchard_value_balance
17381757 if orchard_anchor is not None :
17391758 kwargs ['orchard_anchor' ] = orchard_anchor
1759+ if expected_seed_fingerprint is not None :
1760+ kwargs ['expected_seed_fingerprint' ] = expected_seed_fingerprint
17401761
17411762 resp = self .call (zcash_proto .ZcashSignPCZT (** kwargs ))
17421763
0 commit comments