mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-21 03:52:04 +00:00
common/xmr: message changes optimizing runtime and memory (#786)
This commit is contained in:
parent
289d8276eb
commit
af6a607b39
@ -19,6 +19,7 @@ message MoneroTransactionSourceEntry {
|
|||||||
optional bool rct = 7; // is RingCT used (true for newer UTXOs)
|
optional bool rct = 7; // is RingCT used (true for newer UTXOs)
|
||||||
optional bytes mask = 8;
|
optional bytes mask = 8;
|
||||||
optional MoneroMultisigKLRki multisig_kLRki = 9;
|
optional MoneroMultisigKLRki multisig_kLRki = 9;
|
||||||
|
optional uint32 subaddr_minor = 10; // minor subaddr index UTXO was sent to
|
||||||
message MoneroOutputEntry {
|
message MoneroOutputEntry {
|
||||||
optional uint64 idx = 1;
|
optional uint64 idx = 1;
|
||||||
optional MoneroRctKeyPublic key = 2;
|
optional MoneroRctKeyPublic key = 2;
|
||||||
@ -200,6 +201,7 @@ message MoneroTransactionInputViniRequest {
|
|||||||
optional bytes vini_hmac = 3;
|
optional bytes vini_hmac = 3;
|
||||||
optional bytes pseudo_out = 4;
|
optional bytes pseudo_out = 4;
|
||||||
optional bytes pseudo_out_hmac = 5;
|
optional bytes pseudo_out_hmac = 5;
|
||||||
|
optional uint32 orig_idx = 6; // original sort index, before sorting by key-images
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -289,6 +291,7 @@ message MoneroTransactionSignInputRequest {
|
|||||||
optional bytes pseudo_out_hmac = 5;
|
optional bytes pseudo_out_hmac = 5;
|
||||||
optional bytes pseudo_out_alpha = 6;
|
optional bytes pseudo_out_alpha = 6;
|
||||||
optional bytes spend_key = 7;
|
optional bytes spend_key = 7;
|
||||||
|
optional uint32 orig_idx = 8; // original sort index, before sorting by key-images
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -317,6 +320,7 @@ message MoneroTransactionFinalAck {
|
|||||||
optional bytes salt = 2;
|
optional bytes salt = 2;
|
||||||
optional bytes rand_mult = 3;
|
optional bytes rand_mult = 3;
|
||||||
optional bytes tx_enc_keys = 4;
|
optional bytes tx_enc_keys = 4;
|
||||||
|
optional bytes opening_key = 5; // enc master key to decrypt MLSAGs after protocol finishes correctly
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,11 +19,13 @@ class MoneroTransactionFinalAck(p.MessageType):
|
|||||||
salt: bytes = None,
|
salt: bytes = None,
|
||||||
rand_mult: bytes = None,
|
rand_mult: bytes = None,
|
||||||
tx_enc_keys: bytes = None,
|
tx_enc_keys: bytes = None,
|
||||||
|
opening_key: bytes = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.cout_key = cout_key
|
self.cout_key = cout_key
|
||||||
self.salt = salt
|
self.salt = salt
|
||||||
self.rand_mult = rand_mult
|
self.rand_mult = rand_mult
|
||||||
self.tx_enc_keys = tx_enc_keys
|
self.tx_enc_keys = tx_enc_keys
|
||||||
|
self.opening_key = opening_key
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -32,4 +34,5 @@ class MoneroTransactionFinalAck(p.MessageType):
|
|||||||
2: ('salt', p.BytesType, 0),
|
2: ('salt', p.BytesType, 0),
|
||||||
3: ('rand_mult', p.BytesType, 0),
|
3: ('rand_mult', p.BytesType, 0),
|
||||||
4: ('tx_enc_keys', p.BytesType, 0),
|
4: ('tx_enc_keys', p.BytesType, 0),
|
||||||
|
5: ('opening_key', p.BytesType, 0),
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,14 @@ class MoneroTransactionInputViniRequest(p.MessageType):
|
|||||||
vini_hmac: bytes = None,
|
vini_hmac: bytes = None,
|
||||||
pseudo_out: bytes = None,
|
pseudo_out: bytes = None,
|
||||||
pseudo_out_hmac: bytes = None,
|
pseudo_out_hmac: bytes = None,
|
||||||
|
orig_idx: int = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.src_entr = src_entr
|
self.src_entr = src_entr
|
||||||
self.vini = vini
|
self.vini = vini
|
||||||
self.vini_hmac = vini_hmac
|
self.vini_hmac = vini_hmac
|
||||||
self.pseudo_out = pseudo_out
|
self.pseudo_out = pseudo_out
|
||||||
self.pseudo_out_hmac = pseudo_out_hmac
|
self.pseudo_out_hmac = pseudo_out_hmac
|
||||||
|
self.orig_idx = orig_idx
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -37,4 +39,5 @@ class MoneroTransactionInputViniRequest(p.MessageType):
|
|||||||
3: ('vini_hmac', p.BytesType, 0),
|
3: ('vini_hmac', p.BytesType, 0),
|
||||||
4: ('pseudo_out', p.BytesType, 0),
|
4: ('pseudo_out', p.BytesType, 0),
|
||||||
5: ('pseudo_out_hmac', p.BytesType, 0),
|
5: ('pseudo_out_hmac', p.BytesType, 0),
|
||||||
|
6: ('orig_idx', p.UVarintType, 0),
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ class MoneroTransactionSignInputRequest(p.MessageType):
|
|||||||
pseudo_out_hmac: bytes = None,
|
pseudo_out_hmac: bytes = None,
|
||||||
pseudo_out_alpha: bytes = None,
|
pseudo_out_alpha: bytes = None,
|
||||||
spend_key: bytes = None,
|
spend_key: bytes = None,
|
||||||
|
orig_idx: int = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.src_entr = src_entr
|
self.src_entr = src_entr
|
||||||
self.vini = vini
|
self.vini = vini
|
||||||
@ -32,6 +33,7 @@ class MoneroTransactionSignInputRequest(p.MessageType):
|
|||||||
self.pseudo_out_hmac = pseudo_out_hmac
|
self.pseudo_out_hmac = pseudo_out_hmac
|
||||||
self.pseudo_out_alpha = pseudo_out_alpha
|
self.pseudo_out_alpha = pseudo_out_alpha
|
||||||
self.spend_key = spend_key
|
self.spend_key = spend_key
|
||||||
|
self.orig_idx = orig_idx
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -43,4 +45,5 @@ class MoneroTransactionSignInputRequest(p.MessageType):
|
|||||||
5: ('pseudo_out_hmac', p.BytesType, 0),
|
5: ('pseudo_out_hmac', p.BytesType, 0),
|
||||||
6: ('pseudo_out_alpha', p.BytesType, 0),
|
6: ('pseudo_out_alpha', p.BytesType, 0),
|
||||||
7: ('spend_key', p.BytesType, 0),
|
7: ('spend_key', p.BytesType, 0),
|
||||||
|
8: ('orig_idx', p.UVarintType, 0),
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ class MoneroTransactionSourceEntry(p.MessageType):
|
|||||||
rct: bool = None,
|
rct: bool = None,
|
||||||
mask: bytes = None,
|
mask: bytes = None,
|
||||||
multisig_kLRki: MoneroMultisigKLRki = None,
|
multisig_kLRki: MoneroMultisigKLRki = None,
|
||||||
|
subaddr_minor: int = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.outputs = outputs if outputs is not None else []
|
self.outputs = outputs if outputs is not None else []
|
||||||
self.real_output = real_output
|
self.real_output = real_output
|
||||||
@ -36,6 +37,7 @@ class MoneroTransactionSourceEntry(p.MessageType):
|
|||||||
self.rct = rct
|
self.rct = rct
|
||||||
self.mask = mask
|
self.mask = mask
|
||||||
self.multisig_kLRki = multisig_kLRki
|
self.multisig_kLRki = multisig_kLRki
|
||||||
|
self.subaddr_minor = subaddr_minor
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -49,4 +51,5 @@ class MoneroTransactionSourceEntry(p.MessageType):
|
|||||||
7: ('rct', p.BoolType, 0),
|
7: ('rct', p.BoolType, 0),
|
||||||
8: ('mask', p.BytesType, 0),
|
8: ('mask', p.BytesType, 0),
|
||||||
9: ('multisig_kLRki', MoneroMultisigKLRki, 0),
|
9: ('multisig_kLRki', MoneroMultisigKLRki, 0),
|
||||||
|
10: ('subaddr_minor', p.UVarintType, 0),
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,13 @@ class MoneroTransactionFinalAck(p.MessageType):
|
|||||||
salt: bytes = None,
|
salt: bytes = None,
|
||||||
rand_mult: bytes = None,
|
rand_mult: bytes = None,
|
||||||
tx_enc_keys: bytes = None,
|
tx_enc_keys: bytes = None,
|
||||||
|
opening_key: bytes = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.cout_key = cout_key
|
self.cout_key = cout_key
|
||||||
self.salt = salt
|
self.salt = salt
|
||||||
self.rand_mult = rand_mult
|
self.rand_mult = rand_mult
|
||||||
self.tx_enc_keys = tx_enc_keys
|
self.tx_enc_keys = tx_enc_keys
|
||||||
|
self.opening_key = opening_key
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -32,4 +34,5 @@ class MoneroTransactionFinalAck(p.MessageType):
|
|||||||
2: ('salt', p.BytesType, 0),
|
2: ('salt', p.BytesType, 0),
|
||||||
3: ('rand_mult', p.BytesType, 0),
|
3: ('rand_mult', p.BytesType, 0),
|
||||||
4: ('tx_enc_keys', p.BytesType, 0),
|
4: ('tx_enc_keys', p.BytesType, 0),
|
||||||
|
5: ('opening_key', p.BytesType, 0),
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,14 @@ class MoneroTransactionInputViniRequest(p.MessageType):
|
|||||||
vini_hmac: bytes = None,
|
vini_hmac: bytes = None,
|
||||||
pseudo_out: bytes = None,
|
pseudo_out: bytes = None,
|
||||||
pseudo_out_hmac: bytes = None,
|
pseudo_out_hmac: bytes = None,
|
||||||
|
orig_idx: int = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.src_entr = src_entr
|
self.src_entr = src_entr
|
||||||
self.vini = vini
|
self.vini = vini
|
||||||
self.vini_hmac = vini_hmac
|
self.vini_hmac = vini_hmac
|
||||||
self.pseudo_out = pseudo_out
|
self.pseudo_out = pseudo_out
|
||||||
self.pseudo_out_hmac = pseudo_out_hmac
|
self.pseudo_out_hmac = pseudo_out_hmac
|
||||||
|
self.orig_idx = orig_idx
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -37,4 +39,5 @@ class MoneroTransactionInputViniRequest(p.MessageType):
|
|||||||
3: ('vini_hmac', p.BytesType, 0),
|
3: ('vini_hmac', p.BytesType, 0),
|
||||||
4: ('pseudo_out', p.BytesType, 0),
|
4: ('pseudo_out', p.BytesType, 0),
|
||||||
5: ('pseudo_out_hmac', p.BytesType, 0),
|
5: ('pseudo_out_hmac', p.BytesType, 0),
|
||||||
|
6: ('orig_idx', p.UVarintType, 0),
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ class MoneroTransactionSignInputRequest(p.MessageType):
|
|||||||
pseudo_out_hmac: bytes = None,
|
pseudo_out_hmac: bytes = None,
|
||||||
pseudo_out_alpha: bytes = None,
|
pseudo_out_alpha: bytes = None,
|
||||||
spend_key: bytes = None,
|
spend_key: bytes = None,
|
||||||
|
orig_idx: int = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.src_entr = src_entr
|
self.src_entr = src_entr
|
||||||
self.vini = vini
|
self.vini = vini
|
||||||
@ -32,6 +33,7 @@ class MoneroTransactionSignInputRequest(p.MessageType):
|
|||||||
self.pseudo_out_hmac = pseudo_out_hmac
|
self.pseudo_out_hmac = pseudo_out_hmac
|
||||||
self.pseudo_out_alpha = pseudo_out_alpha
|
self.pseudo_out_alpha = pseudo_out_alpha
|
||||||
self.spend_key = spend_key
|
self.spend_key = spend_key
|
||||||
|
self.orig_idx = orig_idx
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -43,4 +45,5 @@ class MoneroTransactionSignInputRequest(p.MessageType):
|
|||||||
5: ('pseudo_out_hmac', p.BytesType, 0),
|
5: ('pseudo_out_hmac', p.BytesType, 0),
|
||||||
6: ('pseudo_out_alpha', p.BytesType, 0),
|
6: ('pseudo_out_alpha', p.BytesType, 0),
|
||||||
7: ('spend_key', p.BytesType, 0),
|
7: ('spend_key', p.BytesType, 0),
|
||||||
|
8: ('orig_idx', p.UVarintType, 0),
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ class MoneroTransactionSourceEntry(p.MessageType):
|
|||||||
rct: bool = None,
|
rct: bool = None,
|
||||||
mask: bytes = None,
|
mask: bytes = None,
|
||||||
multisig_kLRki: MoneroMultisigKLRki = None,
|
multisig_kLRki: MoneroMultisigKLRki = None,
|
||||||
|
subaddr_minor: int = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.outputs = outputs if outputs is not None else []
|
self.outputs = outputs if outputs is not None else []
|
||||||
self.real_output = real_output
|
self.real_output = real_output
|
||||||
@ -36,6 +37,7 @@ class MoneroTransactionSourceEntry(p.MessageType):
|
|||||||
self.rct = rct
|
self.rct = rct
|
||||||
self.mask = mask
|
self.mask = mask
|
||||||
self.multisig_kLRki = multisig_kLRki
|
self.multisig_kLRki = multisig_kLRki
|
||||||
|
self.subaddr_minor = subaddr_minor
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_fields(cls) -> Dict:
|
def get_fields(cls) -> Dict:
|
||||||
@ -49,4 +51,5 @@ class MoneroTransactionSourceEntry(p.MessageType):
|
|||||||
7: ('rct', p.BoolType, 0),
|
7: ('rct', p.BoolType, 0),
|
||||||
8: ('mask', p.BytesType, 0),
|
8: ('mask', p.BytesType, 0),
|
||||||
9: ('multisig_kLRki', MoneroMultisigKLRki, 0),
|
9: ('multisig_kLRki', MoneroMultisigKLRki, 0),
|
||||||
|
10: ('subaddr_minor', p.UVarintType, 0),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user