mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-24 07:18:09 +00:00
layout: show path for CoSi commit/sign if following SLIP-0018
This commit is contained in:
parent
15eefd5646
commit
b56da1e4b4
@ -1343,7 +1343,7 @@ void fsm_msgCosiCommit(CosiCommit *msg)
|
|||||||
|
|
||||||
CHECK_PARAM(msg->has_data, _("No data provided"));
|
CHECK_PARAM(msg->has_data, _("No data provided"));
|
||||||
|
|
||||||
layoutCosiCommitSign(msg->data.bytes, msg->data.size, false);
|
layoutCosiCommitSign(msg->address_n, msg->address_n_count, msg->data.bytes, msg->data.size, false);
|
||||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL);
|
fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL);
|
||||||
layoutHome();
|
layoutHome();
|
||||||
@ -1383,7 +1383,7 @@ void fsm_msgCosiSign(CosiSign *msg)
|
|||||||
CHECK_PARAM(msg->has_global_commitment && msg->global_commitment.size == 32, _("Invalid global commitment"));
|
CHECK_PARAM(msg->has_global_commitment && msg->global_commitment.size == 32, _("Invalid global commitment"));
|
||||||
CHECK_PARAM(msg->has_global_pubkey && msg->global_pubkey.size == 32, _("Invalid global pubkey"));
|
CHECK_PARAM(msg->has_global_pubkey && msg->global_pubkey.size == 32, _("Invalid global pubkey"));
|
||||||
|
|
||||||
layoutCosiCommitSign(msg->data.bytes, msg->data.size, true);
|
layoutCosiCommitSign(msg->address_n, msg->address_n_count, msg->data.bytes, msg->data.size, true);
|
||||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL);
|
fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL);
|
||||||
layoutHome();
|
layoutHome();
|
||||||
|
@ -645,8 +645,20 @@ void layoutNEMLevy(const NEMMosaicDefinition *definition, uint8_t network) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void layoutCosiCommitSign(const uint8_t *data, uint32_t len, bool final_sign)
|
void layoutCosiCommitSign(const uint32_t *address_n, size_t address_n_count, const uint8_t *data, uint32_t len, bool final_sign)
|
||||||
{
|
{
|
||||||
|
char *desc = final_sign ? _("CoSi sign message?") : _("CoSi commit message?");
|
||||||
|
if (address_n_count == 2 && address_n[0] == (0x80000000 + 10018) && (address_n[1] & 0x80000000) && (address_n[1] & 0x7FFFFFFF) <= 9) {
|
||||||
|
char desc_buf[32];
|
||||||
|
if (final_sign) {
|
||||||
|
strlcpy(desc_buf, _("CoSi sign index #?"), sizeof(desc_buf));
|
||||||
|
desc_buf[16] = '0' + (address_n[1] & 0x7FFFFFFF);
|
||||||
|
} else {
|
||||||
|
strlcpy(desc_buf, _("CoSi commit index #?"), sizeof(desc_buf));
|
||||||
|
desc_buf[18] = '0' + (address_n[1] & 0x7FFFFFFF);
|
||||||
|
}
|
||||||
|
desc = desc_buf;
|
||||||
|
}
|
||||||
char str[4][17];
|
char str[4][17];
|
||||||
if (len == 32) {
|
if (len == 32) {
|
||||||
data2hex(data , 8, str[0]);
|
data2hex(data , 8, str[0]);
|
||||||
@ -659,7 +671,6 @@ void layoutCosiCommitSign(const uint8_t *data, uint32_t len, bool final_sign)
|
|||||||
strlcpy(str[2], "unsupported", sizeof(str[2]));
|
strlcpy(str[2], "unsupported", sizeof(str[2]));
|
||||||
strlcpy(str[3], "length", sizeof(str[3]));
|
strlcpy(str[3], "length", sizeof(str[3]));
|
||||||
}
|
}
|
||||||
layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Confirm"),
|
layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Confirm"), desc,
|
||||||
final_sign ? _("CoSi sign message?") : _("CoSi commit message?"),
|
|
||||||
str[0], str[1], str[2], str[3], NULL, NULL);
|
str[0], str[1], str[2], str[3], NULL, NULL);
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,6 @@ void layoutNEMTransferPayload(const uint8_t *payload, size_t length, bool encryp
|
|||||||
void layoutNEMMosaicDescription(const char *description);
|
void layoutNEMMosaicDescription(const char *description);
|
||||||
void layoutNEMLevy(const NEMMosaicDefinition *definition, uint8_t network);
|
void layoutNEMLevy(const NEMMosaicDefinition *definition, uint8_t network);
|
||||||
|
|
||||||
void layoutCosiCommitSign(const uint8_t *data, uint32_t len, bool final_sign);
|
void layoutCosiCommitSign(const uint32_t *address_n, size_t address_n_count, const uint8_t *data, uint32_t len, bool final_sign);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user