diff --git a/firmware/Makefile b/firmware/Makefile index 36fc371b9..6d134cd24 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -59,3 +59,4 @@ CFLAGS += -DDEBUG_LOG=0 CFLAGS += -DSCM_REVISION='"$(shell git rev-parse HEAD | sed 's:\(..\):\\x\1:g')"' CFLAGS += -DED25519_CUSTOMRANDOM=1 CFLAGS += -DED25519_CUSTOMHASH=1 +CFLAGS += -DUSE_ETHEREUM=1 diff --git a/firmware/fsm.c b/firmware/fsm.c index ea7b1c314..f5ee14ade 100644 --- a/firmware/fsm.c +++ b/firmware/fsm.c @@ -419,6 +419,19 @@ void fsm_msgSignTx(SignTx *msg) signing_init(msg->inputs_count, msg->outputs_count, coin, node, msg->version, msg->lock_time); } + +void fsm_msgEthereumSignTx(EthereumSignTx *msg) +{ + (void)msg; + fsm_sendFailure(FailureType_Failure_Other, "Unsupported feature"); +} + +void fsm_msgEthereumTxAck(EthereumTxAck *msg) +{ + (void)msg; + fsm_sendFailure(FailureType_Failure_Other, "Unsupported feature"); +} + void fsm_msgCancel(Cancel *msg) { (void)msg; @@ -628,6 +641,12 @@ void fsm_msgGetAddress(GetAddress *msg) layoutHome(); } +void fsm_msgEthereumGetAddress(EthereumGetAddress *msg) +{ + (void)msg; + fsm_sendFailure(FailureType_Failure_Other, "Unsupported feature"); +} + void fsm_msgEntropyAck(EntropyAck *msg) { if (msg->has_entropy) { diff --git a/firmware/fsm.h b/firmware/fsm.h index b361ad79d..085c23638 100644 --- a/firmware/fsm.h +++ b/firmware/fsm.h @@ -59,6 +59,9 @@ void fsm_msgEstimateTxSize(EstimateTxSize *msg); void fsm_msgRecoveryDevice(RecoveryDevice *msg); void fsm_msgWordAck(WordAck *msg); void fsm_msgSetU2FCounter(SetU2FCounter *msg); +void fsm_msgEthereumGetAddress(EthereumGetAddress *msg); +void fsm_msgEthereumSignTx(EthereumSignTx *msg); +void fsm_msgEthereumTxAck(EthereumTxAck *msg); // debug message functions #if DEBUG_LINK diff --git a/firmware/messages.c b/firmware/messages.c index ee323b82e..9981bc2b1 100644 --- a/firmware/messages.c +++ b/firmware/messages.c @@ -73,6 +73,9 @@ static const struct MessagesMap_t MessagesMap[] = { {'n', 'i', MessageType_MessageType_RecoveryDevice, RecoveryDevice_fields, (void (*)(void *))fsm_msgRecoveryDevice}, {'n', 'i', MessageType_MessageType_WordAck, WordAck_fields, (void (*)(void *))fsm_msgWordAck}, {'n', 'i', MessageType_MessageType_SetU2FCounter, SetU2FCounter_fields, (void (*)(void *))fsm_msgSetU2FCounter}, + {'n', 'i', MessageType_MessageType_EthereumGetAddress, EthereumGetAddress_fields, (void (*)(void *))fsm_msgEthereumGetAddress}, + {'n', 'i', MessageType_MessageType_EthereumSignTx, EthereumSignTx_fields, (void (*)(void *))fsm_msgEthereumSignTx}, + {'n', 'i', MessageType_MessageType_EthereumTxAck, EthereumTxAck_fields, (void (*)(void *))fsm_msgEthereumTxAck}, // out messages {'n', 'o', MessageType_MessageType_Success, Success_fields, 0}, {'n', 'o', MessageType_MessageType_Failure, Failure_fields, 0}, @@ -95,6 +98,8 @@ static const struct MessagesMap_t MessagesMap[] = { {'n', 'o', MessageType_MessageType_PassphraseRequest, PassphraseRequest_fields, 0}, {'n', 'o', MessageType_MessageType_TxSize, TxSize_fields, 0}, {'n', 'o', MessageType_MessageType_WordRequest, WordRequest_fields, 0}, + {'n', 'o', MessageType_MessageType_EthereumAddress, EthereumAddress_fields, 0}, + {'n', 'o', MessageType_MessageType_EthereumTxRequest, EthereumTxRequest_fields, 0}, #if DEBUG_LINK // debug in messages // {'d', 'i', MessageType_MessageType_DebugLinkDecision, DebugLinkDecision_fields, (void (*)(void *))fsm_msgDebugLinkDecision},