diff --git a/legacy/firmware/signing.c b/legacy/firmware/signing.c index 1172c7a2f..f016a921a 100644 --- a/legacy/firmware/signing.c +++ b/legacy/firmware/signing.c @@ -1424,14 +1424,21 @@ void signing_txack(TransactionType *tx) { signing_abort(); return; } - if (coin->overwintered && - (tx->version >= 3) != (tx->has_version_group_id)) { - fsm_sendFailure(FailureType_Failure_DataError, - _("Version group ID must be set when version >= 3.")); - signing_abort(); - return; - } - if (!coin->overwintered) { + if (coin->overwintered) { + if (tx->version >= 3 && !tx->has_version_group_id) { + fsm_sendFailure(FailureType_Failure_DataError, + _("Version group ID must be set when version >= 3.")); + signing_abort(); + return; + } + if (tx->version < 3 && tx->has_version_group_id) { + fsm_sendFailure( + FailureType_Failure_DataError, + _("Version group ID must be unset when version < 3.")); + signing_abort(); + return; + } + } else { // !coin->overwintered if (tx->has_version_group_id) { fsm_sendFailure(FailureType_Failure_DataError, _("Version group ID not enabled on this coin."));