From 8590849b65260d71d22e5509f0c3ba44079cf780 Mon Sep 17 00:00:00 2001 From: Stefan Berger Date: Wed, 30 Mar 2022 10:14:51 -0400 Subject: [PATCH] tpm2: Check return code of BN_div() Check the return code of BN_div() when calculating Q and Qr of a private key. Resolves: https://github.com/stefanberger/libtpms/issues/304 Signed-off-by: Stefan Berger --- src/tpm2/crypto/openssl/Helpers.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tpm2/crypto/openssl/Helpers.c b/src/tpm2/crypto/openssl/Helpers.c index af0698bd..61fcc09b 100644 --- a/src/tpm2/crypto/openssl/Helpers.c +++ b/src/tpm2/crypto/openssl/Helpers.c @@ -521,8 +521,7 @@ InitOpenSSLRSAPrivateKey(OBJECT *rsaKey, // IN ERROR_RETURN(TPM_RC_FAILURE); /* Q = N/P; no remainder */ BN_set_flags(P, BN_FLG_CONSTTIME); // P is secret - BN_div(Q, Qr, N, P, ctx); - if(!BN_is_zero(Qr)) + if (!BN_div(Q, Qr, N, P, ctx) || !BN_is_zero(Qr)) ERROR_RETURN(TPM_RC_BINDING); BN_set_flags(Q, BN_FLG_CONSTTIME); // Q is secret