[PATCH 4/5] crypto/armv8: use timing-safe digest comparison

Jack Bond-Preston jack.bond-preston at foss.arm.com
Fri Jun 26 19:11:01 CEST 2026


Acked-by: Jack Bond-Preston <jack.bond-preston at foss.arm.com>

On 25/06/2026 16:56, Stephen Hemminger wrote:
> The chained-op verify path compared the computed and expected MAC
> with memcmp(), whose run time depends on the number of matching
> leading bytes and can leak the digest to an attacker submitting
> forged values.
> 
> Use rte_memeq_timingsafe() for the verify comparison.
> 
> Bugzilla ID: 1773
> Fixes: 169ca3db550c ("crypto/armv8: add PMD optimized for ARMv8 processors")
> Cc: stable at dpdk.org
> 
> Reported-by: Siraj Luthfi Ananda <sirajluthfi at gmail.com>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
>   drivers/crypto/armv8/rte_armv8_pmd.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c
> index 320e2d4b3b..a7caac186d 100644
> --- a/drivers/crypto/armv8/rte_armv8_pmd.c
> +++ b/drivers/crypto/armv8/rte_armv8_pmd.c
> @@ -631,8 +631,8 @@ process_armv8_chained_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op,
>   
>   	op->status = RTE_CRYPTO_OP_STATUS_SUCCESS;
>   	if (sess->auth.operation == RTE_CRYPTO_AUTH_OP_VERIFY) {
> -		if (memcmp(adst, op->sym->auth.digest.data,
> -				sess->auth.digest_length) != 0) {
> +		if (!rte_memeq_timingsafe(adst, op->sym->auth.digest.data,
> +					  sess->auth.digest_length)) {
>   			op->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED;
>   		}
>   	}



More information about the dev mailing list