From 76b17c0838828c586a8d78261fb44dad25c905f2 Mon Sep 17 00:00:00 2001 From: Carlos Medeiros Date: Fri, 20 Sep 2024 09:21:07 +0100 Subject: [PATCH] add shielded hash verification --- app/src/parser_impl.c | 4 +++- app/src/parser_impl_txn.c | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/parser_impl.c b/app/src/parser_impl.c index be41ea5..dffe807 100644 --- a/app/src/parser_impl.c +++ b/app/src/parser_impl.c @@ -27,7 +27,9 @@ parser_error_t _read(parser_context_t *ctx, parser_tx_t *v) { CHECK_ERROR(validateTransactionParams(v)) - CHECK_ERROR(verifyShieldedHash(ctx)) + if(ctx->tx_obj->transaction.isMasp || ctx->tx_obj->ibc.is_ibc) { + CHECK_ERROR(verifyShieldedHash(ctx)) + } if (ctx->offset != ctx->bufferLen) { return parser_unexpected_unparsed_bytes; diff --git a/app/src/parser_impl_txn.c b/app/src/parser_impl_txn.c index c0cb287..c46fe77 100644 --- a/app/src/parser_impl_txn.c +++ b/app/src/parser_impl_txn.c @@ -1432,6 +1432,14 @@ parser_error_t verifyShieldedHash(parser_context_t *ctx) { return parser_invalid_target_hash; } } + + if (ctx->tx_obj->transfer.has_shielded_hash && memcmp(ctx->tx_obj->transfer.shielded_hash.ptr, tx_id_hash, HASH_LEN) != 0) { + return parser_invalid_target_hash; + } + + if(ctx->tx_obj->ibc.transfer.has_shielded_hash && memcmp(ctx->tx_obj->ibc.transfer.shielded_hash.ptr, tx_id_hash, HASH_LEN) != 0) { + return parser_invalid_target_hash; + } #endif return parser_ok;