1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-06-26 01:42:34 +00:00

common/protob: Add AuthorizeCoinJoin message.

This commit is contained in:
Andrew Kozlik 2020-06-29 13:11:43 +02:00 committed by Andrew Kozlik
parent 59002118c0
commit bbab13f6e7
9 changed files with 109 additions and 2 deletions

View File

@ -298,3 +298,18 @@ message OwnershipProof {
required bytes ownership_proof = 1; // SLIP-0019 proof of ownership required bytes ownership_proof = 1; // SLIP-0019 proof of ownership
required bytes signature = 2; // signature of the proof required bytes signature = 2; // signature of the proof
} }
/**
* Request: Ask device to prompt the user to authorize a CoinJoin transaction
* @start
* @next Success
* @next Failure
*/
message AuthorizeCoinJoin {
required string coordinator = 1; // coordinator identifier to approve as a prefix in commitment data (max. 18 ASCII characters)
required uint64 max_total_fee = 2; // maximum total fees
optional uint32 fee_per_anonymity = 3; // fee per anonymity set in units of 10^-9 percent
repeated uint32 address_n = 4; // prefix of the BIP-32 path leading to the account (m / purpose' / coin_type' / account')
optional string coin_name = 5 [default='Bitcoin']; // coin to use
optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.)
}

View File

@ -91,6 +91,7 @@ enum MessageType {
MessageType_OwnershipId = 44 [(wire_out) = true]; MessageType_OwnershipId = 44 [(wire_out) = true];
MessageType_GetOwnershipProof = 49 [(wire_in) = true]; MessageType_GetOwnershipProof = 49 [(wire_in) = true];
MessageType_OwnershipProof = 50 [(wire_out) = true]; MessageType_OwnershipProof = 50 [(wire_out) = true];
MessageType_AuthorizeCoinJoin = 51 [(wire_in) = true];
// Crypto // Crypto
MessageType_CipherKeyValue = 23 [(wire_in) = true]; MessageType_CipherKeyValue = 23 [(wire_in) = true];

View File

@ -0,0 +1,42 @@
# Automatically generated by pb2py
# fmt: off
import protobuf as p
if __debug__:
try:
from typing import Dict, List # noqa: F401
from typing_extensions import Literal # noqa: F401
EnumTypeInputScriptType = Literal[0, 1, 2, 3, 4]
except ImportError:
pass
class AuthorizeCoinJoin(p.MessageType):
MESSAGE_WIRE_TYPE = 51
def __init__(
self,
coordinator: str = None,
max_total_fee: int = None,
fee_per_anonymity: int = None,
address_n: List[int] = None,
coin_name: str = None,
script_type: EnumTypeInputScriptType = None,
) -> None:
self.coordinator = coordinator
self.max_total_fee = max_total_fee
self.fee_per_anonymity = fee_per_anonymity
self.address_n = address_n if address_n is not None else []
self.coin_name = coin_name
self.script_type = script_type
@classmethod
def get_fields(cls) -> Dict:
return {
1: ('coordinator', p.UnicodeType, 0), # required
2: ('max_total_fee', p.UVarintType, 0), # required
3: ('fee_per_anonymity', p.UVarintType, 0),
4: ('address_n', p.UVarintType, p.FLAG_REPEATED),
5: ('coin_name', p.UnicodeType, 0), # default=Bitcoin
6: ('script_type', p.EnumType("InputScriptType", (0, 1, 2, 3, 4)), 0), # default=SPENDADDRESS
}

View File

@ -59,6 +59,7 @@ GetOwnershipId = 43 # type: Literal[43]
OwnershipId = 44 # type: Literal[44] OwnershipId = 44 # type: Literal[44]
GetOwnershipProof = 49 # type: Literal[49] GetOwnershipProof = 49 # type: Literal[49]
OwnershipProof = 50 # type: Literal[50] OwnershipProof = 50 # type: Literal[50]
AuthorizeCoinJoin = 51 # type: Literal[51]
CipherKeyValue = 23 # type: Literal[23] CipherKeyValue = 23 # type: Literal[23]
CipheredKeyValue = 48 # type: Literal[48] CipheredKeyValue = 48 # type: Literal[48]
SignIdentity = 53 # type: Literal[53] SignIdentity = 53 # type: Literal[53]

View File

@ -4,7 +4,7 @@ endif
SKIPPED_MESSAGES := Binance Cardano DebugMonero Eos Monero Ontology Ripple SdProtect Tezos WebAuthn \ SKIPPED_MESSAGES := Binance Cardano DebugMonero Eos Monero Ontology Ripple SdProtect Tezos WebAuthn \
DebugLinkRecordScreen DebugLinkReseedRandom DebugLinkShowText DebugLinkEraseSdCard DebugLinkWatchLayout \ DebugLinkRecordScreen DebugLinkReseedRandom DebugLinkShowText DebugLinkEraseSdCard DebugLinkWatchLayout \
GetOwnershipProof OwnershipProof GetOwnershipId OwnershipId GetOwnershipProof OwnershipProof GetOwnershipId OwnershipId AuthorizeCoinJoin
ifeq ($(BITCOIN_ONLY), 1) ifeq ($(BITCOIN_ONLY), 1)
SKIPPED_MESSAGES += Ethereum Lisk NEM Stellar SKIPPED_MESSAGES += Ethereum Lisk NEM Stellar

View File

@ -64,3 +64,7 @@ GetOwnershipId.address_n max_count:8
GetOwnershipId.coin_name max_size:21 GetOwnershipId.coin_name max_size:21
OwnershipId.ownership_id max_size:32 OwnershipId.ownership_id max_size:32
AuthorizeCoinJoin.coordinator max_size:18
AuthorizeCoinJoin.address_n max_count:8
AuthorizeCoinJoin.coin_name max_size:21

View File

@ -0,0 +1,42 @@
# Automatically generated by pb2py
# fmt: off
from .. import protobuf as p
if __debug__:
try:
from typing import Dict, List # noqa: F401
from typing_extensions import Literal # noqa: F401
EnumTypeInputScriptType = Literal[0, 1, 2, 3, 4]
except ImportError:
pass
class AuthorizeCoinJoin(p.MessageType):
MESSAGE_WIRE_TYPE = 51
def __init__(
self,
coordinator: str = None,
max_total_fee: int = None,
fee_per_anonymity: int = None,
address_n: List[int] = None,
coin_name: str = None,
script_type: EnumTypeInputScriptType = None,
) -> None:
self.coordinator = coordinator
self.max_total_fee = max_total_fee
self.fee_per_anonymity = fee_per_anonymity
self.address_n = address_n if address_n is not None else []
self.coin_name = coin_name
self.script_type = script_type
@classmethod
def get_fields(cls) -> Dict:
return {
1: ('coordinator', p.UnicodeType, 0), # required
2: ('max_total_fee', p.UVarintType, 0), # required
3: ('fee_per_anonymity', p.UVarintType, 0),
4: ('address_n', p.UVarintType, p.FLAG_REPEATED),
5: ('coin_name', p.UnicodeType, 0), # default=Bitcoin
6: ('script_type', p.EnumType("InputScriptType", (0, 1, 2, 3, 4)), 0), # default=SPENDADDRESS
}

View File

@ -57,6 +57,7 @@ GetOwnershipId = 43 # type: Literal[43]
OwnershipId = 44 # type: Literal[44] OwnershipId = 44 # type: Literal[44]
GetOwnershipProof = 49 # type: Literal[49] GetOwnershipProof = 49 # type: Literal[49]
OwnershipProof = 50 # type: Literal[50] OwnershipProof = 50 # type: Literal[50]
AuthorizeCoinJoin = 51 # type: Literal[51]
CipherKeyValue = 23 # type: Literal[23] CipherKeyValue = 23 # type: Literal[23]
CipheredKeyValue = 48 # type: Literal[48] CipheredKeyValue = 48 # type: Literal[48]
SignIdentity = 53 # type: Literal[53] SignIdentity = 53 # type: Literal[53]

View File

@ -4,6 +4,7 @@
from .Address import Address from .Address import Address
from .ApplyFlags import ApplyFlags from .ApplyFlags import ApplyFlags
from .ApplySettings import ApplySettings from .ApplySettings import ApplySettings
from .AuthorizeCoinJoin import AuthorizeCoinJoin
from .BackupDevice import BackupDevice from .BackupDevice import BackupDevice
from .BinanceAddress import BinanceAddress from .BinanceAddress import BinanceAddress
from .BinanceCancelMsg import BinanceCancelMsg from .BinanceCancelMsg import BinanceCancelMsg