mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-16 11:28:14 +00:00
rename failures, unify strings where possible
This commit is contained in:
parent
77c4e7b167
commit
00f6312a81
@ -163,7 +163,7 @@ static void send_signature(void)
|
||||
|
||||
keccak_Final(&keccak_ctx, hash);
|
||||
if (ecdsa_sign_digest(&secp256k1, privkey, hash, sig, &v, ethereum_is_canonic) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Signing failed");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Signing failed");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -409,7 +409,7 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
/* eip-155 chain id */
|
||||
if (msg->has_chain_id) {
|
||||
if (msg->chain_id < 1 || msg->chain_id > 109) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Chain Id out of bounds");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Chain Id out of bounds");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -420,7 +420,7 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
|
||||
if (msg->has_data_length && msg->data_length > 0) {
|
||||
if (!msg->has_data_initial_chunk || msg->data_initial_chunk.size == 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Data length provided, but no initial chunk");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Data length provided, but no initial chunk");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -428,7 +428,7 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
* prevent exceeding the limit we use a stricter limit on data length.
|
||||
*/
|
||||
if (msg->data_length > 16000000) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Data length exceeds limit");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Data length exceeds limit");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -437,14 +437,14 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
data_total = 0;
|
||||
}
|
||||
if (msg->data_initial_chunk.size > data_total) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Invalid size of initial chunk");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Invalid size of initial chunk");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
|
||||
// safety checks
|
||||
if (!ethereum_signing_check(msg)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Signing aborted (safety check failed)");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Safety check failed");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -464,7 +464,7 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
}
|
||||
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_SignTx, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Signing cancelled by user");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -472,7 +472,7 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
if (token == NULL && data_total > 0) {
|
||||
layoutEthereumData(msg->data_initial_chunk.bytes, msg->data_initial_chunk.size, data_total);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_SignTx, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Signing cancelled by user");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -482,7 +482,7 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
msg->gas_price.bytes, msg->gas_price.size,
|
||||
msg->gas_limit.bytes, msg->gas_limit.size, token != NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_SignTx, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Signing cancelled by user");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -530,19 +530,19 @@ void ethereum_signing_init(EthereumSignTx *msg, const HDNode *node)
|
||||
void ethereum_signing_txack(EthereumTxAck *tx)
|
||||
{
|
||||
if (!ethereum_signing) {
|
||||
fsm_sendFailure(FailureType_Failure_UnexpectedMessage, "Not in Signing mode");
|
||||
fsm_sendFailure(FailureType_Failure_UnexpectedMessage, "Not in Ethereum signing mode");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
if (tx->data_chunk.size > data_left) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Too much data");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Too much data");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
|
||||
if (data_left > 0 && (!tx->has_data_chunk || tx->data_chunk.size == 0)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Empty data chunk received");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Empty data chunk received");
|
||||
ethereum_signing_abort();
|
||||
return;
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ static uint8_t msg_resp[MSG_OUT_SIZE] __attribute__ ((aligned));
|
||||
|
||||
#define CHECK_PARAM(cond, errormsg) \
|
||||
if (!(cond)) { \
|
||||
fsm_sendFailure(FailureType_Failure_SyntaxError, (errormsg)); \
|
||||
fsm_sendFailure(FailureType_Failure_DataError, (errormsg)); \
|
||||
layoutHome(); \
|
||||
return; \
|
||||
}
|
||||
@ -127,7 +127,7 @@ const CoinType *fsm_getCoin(bool has_name, const char *name)
|
||||
coin = coinByName("Bitcoin");
|
||||
}
|
||||
if (!coin) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Invalid coin name");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Invalid coin name");
|
||||
layoutHome();
|
||||
return 0;
|
||||
}
|
||||
@ -146,7 +146,7 @@ HDNode *fsm_getDerivedNode(const char *curve, uint32_t *address_n, size_t addres
|
||||
return &node;
|
||||
}
|
||||
if (hdnode_private_ckd_cached(&node, address_n, address_n_count, NULL) == 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to derive private key");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to derive private key");
|
||||
layoutHome();
|
||||
return 0;
|
||||
}
|
||||
@ -203,7 +203,7 @@ void fsm_msgPing(Ping *msg)
|
||||
if (msg->has_button_protection && msg->button_protection) {
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you really want to", "answer to ping?", NULL, NULL, NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Ping cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -215,7 +215,7 @@ void fsm_msgPing(Ping *msg)
|
||||
|
||||
if (msg->has_passphrase_protection && msg->passphrase_protection) {
|
||||
if (!protectPassphrase()) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Ping cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -246,7 +246,7 @@ void fsm_msgChangePin(ChangePin *msg)
|
||||
}
|
||||
}
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, removal ? "PIN removal cancelled" : "PIN change cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -260,7 +260,7 @@ void fsm_msgChangePin(ChangePin *msg)
|
||||
if (protectChangePin()) {
|
||||
fsm_sendSuccess("PIN changed");
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "PIN change failed");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
}
|
||||
}
|
||||
layoutHome();
|
||||
@ -271,7 +271,7 @@ void fsm_msgWipeDevice(WipeDevice *msg)
|
||||
(void)msg;
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you really want to", "wipe the device?", NULL, "All data will be lost.", NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_WipeDevice, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Wipe cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -289,7 +289,7 @@ void fsm_msgGetEntropy(GetEntropy *msg)
|
||||
{
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you really want to", "send entropy?", NULL, NULL, NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Entropy cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -338,7 +338,7 @@ void fsm_msgGetPublicKey(GetPublicKey *msg)
|
||||
if (msg->has_show_display && msg->show_display) {
|
||||
layoutPublicKey(node->public_key);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_PublicKey, true)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Show public key cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -369,14 +369,14 @@ void fsm_msgLoadDevice(LoadDevice *msg)
|
||||
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "I take the risk", NULL, "Loading private seed", "is not recommended.", "Continue only if you", "know what you are", "doing!", NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Load cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg->has_mnemonic && !(msg->has_skip_checksum && msg->skip_checksum) ) {
|
||||
if (!mnemonic_check(msg->mnemonic)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Mnemonic with wrong checksum provided");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Mnemonic with wrong checksum provided");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -435,7 +435,7 @@ void fsm_msgCancel(Cancel *msg)
|
||||
recovery_abort();
|
||||
signing_abort();
|
||||
ethereum_signing_abort();
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Aborted");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
}
|
||||
|
||||
void fsm_msgEthereumSignTx(EthereumSignTx *msg)
|
||||
@ -474,7 +474,7 @@ void fsm_msgCipherKeyValue(CipherKeyValue *msg)
|
||||
if ((encrypt && ask_on_encrypt) || (!encrypt && ask_on_decrypt)) {
|
||||
layoutCipherKeyValue(encrypt, msg->key);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_Other, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "CipherKeyValue cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -520,7 +520,7 @@ void fsm_msgApplySettings(ApplySettings *msg)
|
||||
if (msg->has_label) {
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you really want to", "change label to", msg->label, "?", NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Apply settings cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -528,7 +528,7 @@ void fsm_msgApplySettings(ApplySettings *msg)
|
||||
if (msg->has_language) {
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you really want to", "change language to", msg->language, "?", NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Apply settings cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -536,7 +536,7 @@ void fsm_msgApplySettings(ApplySettings *msg)
|
||||
if (msg->has_use_passphrase) {
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you really want to", msg->use_passphrase ? "enable passphrase" : "disable passphrase", "encryption?", NULL, NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Apply settings cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -544,7 +544,7 @@ void fsm_msgApplySettings(ApplySettings *msg)
|
||||
if (msg->has_homescreen) {
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you really want to", "change the home", "screen ?", NULL, NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Apply settings cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -583,7 +583,7 @@ void fsm_msgGetAddress(GetAddress *msg)
|
||||
|
||||
layoutProgress("Computing address", 0);
|
||||
if (!compute_address(coin, msg->script_type, node, msg->has_multisig, &msg->multisig, resp->address)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Can't encode address");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Can't encode address");
|
||||
}
|
||||
|
||||
if (msg->has_show_display && msg->show_display) {
|
||||
@ -601,7 +601,7 @@ void fsm_msgGetAddress(GetAddress *msg)
|
||||
}
|
||||
layoutAddress(resp->address, desc);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_Address, true)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Show address cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -636,7 +636,7 @@ void fsm_msgEthereumGetAddress(EthereumGetAddress *msg)
|
||||
|
||||
layoutAddress(address, desc);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_Address, true)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Show address cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -663,7 +663,7 @@ void fsm_msgSignMessage(SignMessage *msg)
|
||||
|
||||
layoutSignMessage(msg->message.bytes, msg->message.size);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Sign message cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -683,7 +683,7 @@ void fsm_msgSignMessage(SignMessage *msg)
|
||||
resp->signature.size = 65;
|
||||
msg_write(MessageType_MessageType_MessageSignature, resp);
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Error signing message");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Error signing message");
|
||||
}
|
||||
layoutHome();
|
||||
}
|
||||
@ -698,26 +698,26 @@ void fsm_msgVerifyMessage(VerifyMessage *msg)
|
||||
uint8_t addr_raw[MAX_ADDR_RAW_SIZE];
|
||||
uint32_t address_type;
|
||||
if (!coinExtractAddressType(coin, msg->address, &address_type) || !ecdsa_address_decode(msg->address, address_type, addr_raw)) {
|
||||
fsm_sendFailure(FailureType_Failure_InvalidSignature, "Invalid address");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Invalid address");
|
||||
return;
|
||||
}
|
||||
layoutProgressSwipe("Verifying", 0);
|
||||
if (msg->signature.size == 65 && cryptoMessageVerify(coin, msg->message.bytes, msg->message.size, address_type, addr_raw, msg->signature.bytes) == 0) {
|
||||
layoutVerifyAddress(msg->address);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_Other, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Message verification cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
layoutVerifyMessage(msg->message.bytes, msg->message.size);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_Other, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Message verification cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
fsm_sendSuccess("Message verified");
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_InvalidSignature, "Invalid signature");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Invalid signature");
|
||||
}
|
||||
layoutHome();
|
||||
}
|
||||
@ -730,7 +730,7 @@ void fsm_msgSignIdentity(SignIdentity *msg)
|
||||
|
||||
layoutSignIdentity(&(msg->identity), msg->has_challenge_visual ? msg->challenge_visual : 0);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Sign identity cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -739,7 +739,7 @@ void fsm_msgSignIdentity(SignIdentity *msg)
|
||||
|
||||
uint8_t hash[32];
|
||||
if (!msg->has_identity || cryptoIdentityFingerprint(&(msg->identity), hash) == 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Invalid identity");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Invalid identity");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -793,7 +793,7 @@ void fsm_msgSignIdentity(SignIdentity *msg)
|
||||
resp->signature.size = 65;
|
||||
msg_write(MessageType_MessageType_SignedIdentity, resp);
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Error signing identity");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Error signing identity");
|
||||
}
|
||||
layoutHome();
|
||||
}
|
||||
@ -806,7 +806,7 @@ void fsm_msgGetECDHSessionKey(GetECDHSessionKey *msg)
|
||||
|
||||
layoutDecryptIdentity(&msg->identity);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "ECDH Session cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -815,7 +815,7 @@ void fsm_msgGetECDHSessionKey(GetECDHSessionKey *msg)
|
||||
|
||||
uint8_t hash[32];
|
||||
if (!msg->has_identity || cryptoIdentityFingerprint(&(msg->identity), hash) == 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Invalid identity");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Invalid identity");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -841,7 +841,7 @@ void fsm_msgGetECDHSessionKey(GetECDHSessionKey *msg)
|
||||
resp->session_key.size = result_size;
|
||||
msg_write(MessageType_MessageType_ECDHSessionKey, resp);
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Error getting ECDH session key");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Error getting ECDH session key");
|
||||
}
|
||||
layoutHome();
|
||||
}
|
||||
@ -874,13 +874,13 @@ void fsm_msgEncryptMessage(EncryptMessage *msg)
|
||||
}
|
||||
layoutEncryptMessage(msg->message.bytes, msg->message.size, signing);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Encrypt message cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
layoutProgressSwipe("Encrypting", 0);
|
||||
if (cryptoMessageEncrypt(&pubkey, msg->message.bytes, msg->message.size, display_only, resp->nonce.bytes, &(resp->nonce.size), resp->message.bytes, &(resp->message.size), resp->hmac.bytes, &(resp->hmac.size), signing ? node->private_key : 0, signing ? address_raw : 0) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Error encrypting message");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Error encrypting message");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -914,7 +914,7 @@ void fsm_msgDecryptMessage(DecryptMessage *msg)
|
||||
bool signing = false;
|
||||
uint8_t address_raw[MAX_ADDR_RAW_SIZE];
|
||||
if (cryptoMessageDecrypt(&nonce_pubkey, msg->message.bytes, msg->message.size, msg->hmac.bytes, msg->hmac.size, node->private_key, resp->message.bytes, &(resp->message.size), &display_only, &signing, address_raw) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Error decrypting message");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -972,7 +972,7 @@ void fsm_msgSetU2FCounter(SetU2FCounter *msg)
|
||||
{
|
||||
layoutDialogSwipe(&bmp_icon_question, "Cancel", "Confirm", NULL, "Do you want to set", "the U2F counter?", NULL, NULL, NULL, NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "SetU2FCounter cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
@ -230,7 +230,7 @@ void msg_process(char type, uint16_t msg_id, const pb_field_t *fields, uint8_t *
|
||||
if (status) {
|
||||
MessageProcessFunc(type, 'i', msg_id, msg_data);
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_SyntaxError, stream.errmsg);
|
||||
fsm_sendFailure(FailureType_Failure_DataError, stream.errmsg);
|
||||
}
|
||||
}
|
||||
|
||||
@ -258,7 +258,7 @@ void msg_read_common(char type, const uint8_t *buf, int len)
|
||||
return;
|
||||
}
|
||||
if (msg_size > MSG_IN_SIZE) { // message is too big :(
|
||||
fsm_sendFailure(FailureType_Failure_SyntaxError, "Message too big");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Message too big");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -353,7 +353,7 @@ void msg_read_tiny(const uint8_t *buf, int len)
|
||||
if (status) {
|
||||
msg_tiny_id = msg_id;
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_SyntaxError, stream.errmsg);
|
||||
fsm_sendFailure(FailureType_Failure_DataError, stream.errmsg);
|
||||
msg_tiny_id = 0xFFFF;
|
||||
}
|
||||
} else {
|
||||
|
@ -170,7 +170,7 @@ bool protectPin(bool use_cached)
|
||||
protectAbortedByInitialize = true;
|
||||
msg_tiny_id = 0xFFFF;
|
||||
usbTiny(0);
|
||||
fsm_sendFailure(FailureType_Failure_PinCancelled, "PIN Cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_PinCancelled, "PIN cancelled");
|
||||
return false;
|
||||
}
|
||||
wait--;
|
||||
@ -179,7 +179,7 @@ bool protectPin(bool use_cached)
|
||||
const char *pin;
|
||||
pin = requestPin(PinMatrixRequestType_PinMatrixRequestType_Current, "Please enter current PIN:");
|
||||
if (!pin) {
|
||||
fsm_sendFailure(FailureType_Failure_PinCancelled, "PIN Cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_PinCancelled, "PIN cancelled");
|
||||
return false;
|
||||
}
|
||||
if (storage_increasePinFails(fails) && storage_isPinCorrect(pin)) {
|
||||
@ -187,7 +187,7 @@ bool protectPin(bool use_cached)
|
||||
storage_resetPinFails(fails);
|
||||
return true;
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_PinInvalid, "Invalid PIN");
|
||||
fsm_sendFailure(FailureType_Failure_PinInvalid, "PIN invalid");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -12,13 +12,13 @@ extern "C" {
|
||||
typedef enum _FailureType {
|
||||
FailureType_Failure_UnexpectedMessage = 1,
|
||||
FailureType_Failure_ButtonExpected = 2,
|
||||
FailureType_Failure_SyntaxError = 3,
|
||||
FailureType_Failure_DataError = 3,
|
||||
FailureType_Failure_ActionCancelled = 4,
|
||||
FailureType_Failure_PinExpected = 5,
|
||||
FailureType_Failure_PinCancelled = 6,
|
||||
FailureType_Failure_PinInvalid = 7,
|
||||
FailureType_Failure_InvalidSignature = 8,
|
||||
FailureType_Failure_Other = 9,
|
||||
FailureType_Failure_ProcessError = 9,
|
||||
FailureType_Failure_NotEnoughFunds = 10,
|
||||
FailureType_Failure_NotInitialized = 11,
|
||||
FailureType_Failure_FirmwareError = 99
|
||||
|
@ -141,7 +141,7 @@ static void recovery_done(void) {
|
||||
fsm_sendSuccess("Device recovered");
|
||||
} else {
|
||||
storage_reset();
|
||||
fsm_sendFailure(FailureType_Failure_SyntaxError, "Invalid mnemonic, are words in correct order?");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Invalid mnemonic, are words in correct order?");
|
||||
}
|
||||
awaiting_word = 0;
|
||||
layoutHome();
|
||||
@ -376,7 +376,7 @@ void recovery_init(uint32_t _word_count, bool passphrase_protection, bool pin_pr
|
||||
enforce_wordlist = _enforce_wordlist;
|
||||
|
||||
if (pin_protection && !protectChangePin()) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "PIN change failed");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -411,7 +411,7 @@ static void recovery_scrambledword(const char *word)
|
||||
if (word_pos == 0) { // fake word
|
||||
if (strcmp(word, fake_word) != 0) {
|
||||
storage_reset();
|
||||
fsm_sendFailure(FailureType_Failure_SyntaxError, "Wrong word retyped");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Wrong word retyped");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -428,7 +428,7 @@ static void recovery_scrambledword(const char *word)
|
||||
}
|
||||
if (!found) {
|
||||
storage_reset();
|
||||
fsm_sendFailure(FailureType_Failure_SyntaxError, "Word not found in a wordlist");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Word not found in a wordlist");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
@ -50,14 +50,14 @@ void reset_init(bool display_random, uint32_t _strength, bool passphrase_protect
|
||||
if (display_random) {
|
||||
layoutDialogSwipe(&bmp_icon_info, "Cancel", "Continue", NULL, "Internal entropy:", ent_str[0], ent_str[1], ent_str[2], ent_str[3], NULL);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ResetDevice, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Reset cancelled");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (pin_protection && !protectChangePin()) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "PIN change failed");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
@ -140,7 +140,7 @@ void reset_entropy(const uint8_t *ext_entropy, uint32_t len)
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_ConfirmWord, true)) {
|
||||
storage_reset();
|
||||
layoutHome();
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Reset device aborted");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -455,7 +455,7 @@ static bool signing_check_input(TxInputType *txinput) {
|
||||
&& txinput->script_type == InputScriptType_SPENDMULTISIG) {
|
||||
uint8_t h[32];
|
||||
if (cryptoMultisigFingerprint(&txinput->multisig, h) == 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Error computing multisig fingerprint");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Error computing multisig fingerprint");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -487,7 +487,7 @@ static bool signing_check_prevtx_hash(void) {
|
||||
uint8_t hash[32];
|
||||
tx_hash_final(&tp, hash, true);
|
||||
if (memcmp(hash, input.prev_hash.bytes, 32) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Encountered invalid prevhash");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Encountered invalid prevhash");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -504,7 +504,7 @@ static bool signing_check_output(TxOutputType *txoutput) {
|
||||
bool is_change = false;
|
||||
if (txoutput->address_n_count > 0) {
|
||||
if (txoutput->has_address) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Address in change output");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Address in change output");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -528,14 +528,14 @@ static bool signing_check_output(TxOutputType *txoutput) {
|
||||
if (change_spend == 0) { // not set
|
||||
change_spend = txoutput->amount;
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Only one change output allowed");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Only one change output allowed");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (spending + txoutput->amount < spending) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Value overflow");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Value overflow");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -545,11 +545,11 @@ static bool signing_check_output(TxOutputType *txoutput) {
|
||||
layoutProgress("Signing transaction", progress);
|
||||
}
|
||||
if (co < 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Signing cancelled by user");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
signing_abort();
|
||||
return false;
|
||||
} else if (co == 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to compile output");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to compile output");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -570,7 +570,7 @@ static bool signing_check_fee(void) {
|
||||
if (fee > tx_est_size_kb * coin->maxfee_kb) {
|
||||
layoutFeeOverThreshold(coin, fee);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_FeeOverThreshold, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Fee over threshold. Signing cancelled.");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -579,7 +579,7 @@ static bool signing_check_fee(void) {
|
||||
// last confirmation
|
||||
layoutConfirmTx(coin, to_spend - change_spend, fee);
|
||||
if (!protectButton(ButtonRequestType_ButtonRequest_SignTx, false)) {
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Signing cancelled by user");
|
||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Action cancelled by user");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -609,7 +609,7 @@ static bool signing_sign_input(void) {
|
||||
sha256_Final(&hashers[0], hash);
|
||||
sha256_Raw(hash, 32, hash);
|
||||
if (memcmp(hash, hash_outputs, 32) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Transaction has changed during signing");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Transaction has changed during signing");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -620,7 +620,7 @@ static bool signing_sign_input(void) {
|
||||
resp.serialized.has_signature = true;
|
||||
resp.serialized.has_serialized_tx = true;
|
||||
if (ecdsa_sign_digest(&secp256k1, privkey, hash, sig, NULL, NULL) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Signing failed");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Signing failed");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -630,7 +630,7 @@ static bool signing_sign_input(void) {
|
||||
// fill in the signature
|
||||
int pubkey_idx = cryptoMultisigPubkeyIndex(&(input.multisig), pubkey);
|
||||
if (pubkey_idx < 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Pubkey not found in multisig script");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Pubkey not found in multisig script");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -638,7 +638,7 @@ static bool signing_sign_input(void) {
|
||||
input.multisig.signatures[pubkey_idx].size = resp.serialized.signature.size;
|
||||
input.script_sig.size = serialize_script_multisig(&(input.multisig), input.script_sig.bytes);
|
||||
if (input.script_sig.size == 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to serialize multisig script");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to serialize multisig script");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -658,17 +658,17 @@ static bool signing_sign_segwit_input(TxInputType *txinput) {
|
||||
|| txinput->script_type == InputScriptType_SPENDP2SHWITNESS) {
|
||||
// disable native segwit for now
|
||||
if (txinput->script_type == InputScriptType_SPENDWITNESS) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Native segwit is disabled");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Native segwit is disabled");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
if (!compile_input_script_sig(txinput)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to compile input");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to compile input");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
if (txinput->amount > segwit_to_spend) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Transaction has changed during signing");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Transaction has changed during signing");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -694,7 +694,7 @@ static bool signing_sign_segwit_input(TxInputType *txinput) {
|
||||
resp.serialized.has_signature = true;
|
||||
resp.serialized.has_serialized_tx = true;
|
||||
if (ecdsa_sign_digest(&secp256k1, node.private_key, hash, sig, NULL, NULL) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Signing failed");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Signing failed");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -706,7 +706,7 @@ static bool signing_sign_segwit_input(TxInputType *txinput) {
|
||||
// fill in the signature
|
||||
int pubkey_idx = cryptoMultisigPubkeyIndex(&(txinput->multisig), node.public_key);
|
||||
if (pubkey_idx < 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Pubkey not found in multisig script");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Pubkey not found in multisig script");
|
||||
signing_abort();
|
||||
return false;
|
||||
}
|
||||
@ -786,7 +786,7 @@ void signing_txack(TransactionType *tx)
|
||||
#if !ENABLE_SEGWIT_NONSEGWIT_MIXING
|
||||
// don't mix segwit and non-segwit inputs
|
||||
if (idx1 > 0 && to.is_segwit == true) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Mixing segwit and non-segwit inputs is not allowed");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Mixing segwit and non-segwit inputs is not allowed");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -795,23 +795,23 @@ void signing_txack(TransactionType *tx)
|
||||
} else if (tx->inputs[0].script_type == InputScriptType_SPENDWITNESS
|
||||
|| tx->inputs[0].script_type == InputScriptType_SPENDP2SHWITNESS) {
|
||||
if (!coin->has_segwit || !coin->segwit) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Segwit not enabled on this coin");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Segwit not enabled on this coin");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
// disable native segwit for now
|
||||
if (tx->inputs[0].script_type == InputScriptType_SPENDWITNESS) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Native segwit is disabled");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Native segwit is disabled");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
if (!tx->inputs[0].has_amount) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Segwit input without amount");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Segwit input without amount");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
if (to_spend + tx->inputs[0].amount < to_spend) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Value overflow");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Value overflow");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -820,7 +820,7 @@ void signing_txack(TransactionType *tx)
|
||||
if (idx1 == 0) {
|
||||
to.is_segwit = true;
|
||||
} else if (to.is_segwit == false) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Mixing segwit and non-segwit inputs is not allowed");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Mixing segwit and non-segwit inputs is not allowed");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -831,7 +831,7 @@ void signing_txack(TransactionType *tx)
|
||||
segwit_to_spend += tx->inputs[0].amount;
|
||||
phase1_request_next_input();
|
||||
} else {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Wrong input script type");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Wrong input script type");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -850,7 +850,7 @@ void signing_txack(TransactionType *tx)
|
||||
case STAGE_REQUEST_2_PREV_INPUT:
|
||||
progress = (idx1 * progress_step + idx2 * progress_meta_step) >> PROGRESS_PRECISION;
|
||||
if (!tx_serialize_input_hash(&tp, tx->inputs)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to serialize input");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to serialize input");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -865,13 +865,13 @@ void signing_txack(TransactionType *tx)
|
||||
case STAGE_REQUEST_2_PREV_OUTPUT:
|
||||
progress = (idx1 * progress_step + (tp.inputs_len + idx2) * progress_meta_step) >> PROGRESS_PRECISION;
|
||||
if (!tx_serialize_output_hash(&tp, tx->bin_outputs)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to serialize output");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to serialize output");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
if (idx2 == input.prev_index) {
|
||||
if (to_spend + tx->bin_outputs[0].amount < to_spend) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Value overflow");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Value overflow");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -891,7 +891,7 @@ void signing_txack(TransactionType *tx)
|
||||
return;
|
||||
case STAGE_REQUEST_2_PREV_EXTRADATA:
|
||||
if (!tx_serialize_extra_data_hash(&tp, tx->extra_data.bytes, tx->extra_data.size)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to serialize extra data");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to serialize extra data");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -918,7 +918,7 @@ void signing_txack(TransactionType *tx)
|
||||
sha256_Update(&hashers[0], &tx->inputs[0].script_type, sizeof(&tx->inputs[0].script_type));
|
||||
if (idx2 == idx1) {
|
||||
if (!compile_input_script_sig(&tx->inputs[0])) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to compile input");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to compile input");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -934,7 +934,7 @@ void signing_txack(TransactionType *tx)
|
||||
tx->inputs[0].script_sig.size = 0;
|
||||
}
|
||||
if (!tx_serialize_input_hash(&ti, tx->inputs)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to serialize input");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to serialize input");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -945,7 +945,7 @@ void signing_txack(TransactionType *tx)
|
||||
uint8_t hash[32];
|
||||
sha256_Final(&hashers[0], hash);
|
||||
if (memcmp(hash, hash_check, 32) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Transaction has changed during signing");
|
||||
fsm_sendFailure(FailureType_Failure_DataError, "Transaction has changed during signing");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -957,14 +957,14 @@ void signing_txack(TransactionType *tx)
|
||||
case STAGE_REQUEST_4_OUTPUT:
|
||||
progress = 500 + ((signatures * progress_step + (inputs_count + idx2) * progress_meta_step) >> PROGRESS_PRECISION);
|
||||
if (compile_output(coin, root, tx->outputs, &bin_output, false) <= 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to compile output");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to compile output");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
// check hashOutputs
|
||||
tx_output_hash(&hashers[0], &bin_output);
|
||||
if (!tx_serialize_output_hash(&ti, &bin_output)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to serialize output");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to serialize output");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -998,7 +998,7 @@ void signing_txack(TransactionType *tx)
|
||||
if (tx->inputs[0].script_type == InputScriptType_SPENDP2SHWITNESS
|
||||
&& !tx->inputs[0].has_multisig) {
|
||||
if (!compile_input_script_sig(&tx->inputs[0])) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to compile input");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to compile input");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -1017,7 +1017,7 @@ void signing_txack(TransactionType *tx)
|
||||
tx->inputs[0].script_sig.bytes[2] = 0x20; // push 32 bytes (digest)
|
||||
// compute digest of multisig script
|
||||
if (!compile_script_multisig_hash(&tx->inputs[0].multisig, tx->inputs[0].script_sig.bytes + 3)) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to compile input");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to compile input");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -1038,7 +1038,7 @@ void signing_txack(TransactionType *tx)
|
||||
|
||||
case STAGE_REQUEST_5_OUTPUT:
|
||||
if (compile_output(coin, root, tx->outputs, &bin_output,false) <= 0) {
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Failed to compile output");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Failed to compile output");
|
||||
signing_abort();
|
||||
return;
|
||||
}
|
||||
@ -1075,7 +1075,7 @@ void signing_txack(TransactionType *tx)
|
||||
return;
|
||||
}
|
||||
|
||||
fsm_sendFailure(FailureType_Failure_Other, "Signing error");
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError, "Signing error");
|
||||
signing_abort();
|
||||
}
|
||||
|
||||
|
2
vendor/trezor-common
vendored
2
vendor/trezor-common
vendored
@ -1 +1 @@
|
||||
Subproject commit e7322269092e0253b0cb1a9c18ba84fd5cd75f91
|
||||
Subproject commit 4eef33b05afb5e8465c8947272bc5421b1b6d896
|
Loading…
Reference in New Issue
Block a user