55from trezor .messages import KaspaSignedTx , KaspaTxInputAck , KaspaTxInputRequest
66from trezor .ui .layouts import confirm_blind_sign_common , confirm_final
77
8- from apps .bitcoin .common import bip340_sign , ecdsa_sign
8+ from apps .bitcoin .common import bip340_sign , bip340_sign_internal , ecdsa_sign
99from apps .common import paths
1010from apps .common .keychain import auto_keychain
1111
@@ -37,15 +37,16 @@ async def sign_tx(
3737 raise wire .DataError ("Invalid prefix provided." )
3838
3939 ctx .primary_color , ctx .icon_path = lv .color_hex (PRIMARY_COLOR ), ICON
40- global address_prefix , schema , addresses , request_index , input_count
40+ global address_prefix , scheme , addresses , request_index , input_count
4141 address_prefix = msg .prefix
42- schema = msg .scheme
42+ scheme = msg .scheme
4343 input_count = msg .input_count
4444 request_index = 0
4545 addresses = []
4646 signature = b""
47+ use_tweak = getattr (msg , "use_tweak" , True )
4748 while input_count > 0 :
48- signature = await sign_input (ctx , msg , keychain )
49+ signature = await sign_input (ctx , msg , keychain , use_tweak = use_tweak )
4950 input_count -= 1
5051 request_index += 1
5152 if input_count > 0 :
@@ -62,25 +63,31 @@ async def sign_tx(
6263 return KaspaSignedTx (signature = signature )
6364
6465
65- async def sign_input (ctx , msg : Signable , keychain ) -> bytes :
66+ async def sign_input (ctx , msg : Signable , keychain , use_tweak : bool = True ) -> bytes :
6667 await paths .validate_path (ctx , keychain , msg .address_n )
6768 node = keychain .derive (msg .address_n )
6869 hasher = hashwriter ()
6970 hasher .write (msg .raw_message )
7071 sig_hash = hasher .get_digest ()
7172
72- if schema == "ecdsa" :
73+ if scheme == "ecdsa" :
7374 hasher_ecdsa = hashwriter_ecdsa ()
7475 hasher_ecdsa .write (sig_hash )
7576 sig_hash = hasher_ecdsa .get_digest ()
7677
77- address = encode_address (node , prefix = address_prefix , schema = schema )
78+ address = encode_address (
79+ node , prefix = address_prefix , scheme = scheme , use_tweak = use_tweak
80+ )
7881 if msg .address_n not in addresses :
7982 addresses .append (msg .address_n )
8083 await confirm_blind_sign_common (ctx , address , msg .raw_message )
8184
82- if schema == "schnorr" :
83- signature = bip340_sign (node , sig_hash )
85+ if scheme == "schnorr" :
86+ signature = (
87+ bip340_sign (node , sig_hash )
88+ if use_tweak
89+ else bip340_sign_internal (node , sig_hash )
90+ )
8491 else :
8592 signature = ecdsa_sign (node , sig_hash )
8693 return signature
0 commit comments