From 13beadbfc3f0b407b9418e232c82a150cb023f2a Mon Sep 17 00:00:00 2001 From: Kareem Date: Thu, 30 Jun 2022 13:35:00 -0700 Subject: [PATCH] Fix missing return checks in KSDK ED25519 code. --- wolfcrypt/src/ed25519.c | 8 ++++++-- wolfcrypt/src/port/nxp/ksdk_port.c | 10 +++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/wolfcrypt/src/ed25519.c b/wolfcrypt/src/ed25519.c index a68089e21..8304a46ea 100644 --- a/wolfcrypt/src/ed25519.c +++ b/wolfcrypt/src/ed25519.c @@ -655,8 +655,12 @@ static int ed25519_verify_msg_final_with_sha(const byte* sig, word32 sigLen, return ret; #ifdef FREESCALE_LTC_ECC - LTC_PKHA_sc_reduce(h); - LTC_PKHA_SignatureForVerify(rcheck, h, sig + (ED25519_SIG_SIZE/2), key); + ret = LTC_PKHA_sc_reduce(h); + if (ret != kStatus_Success) + return ret; + ret = LTC_PKHA_SignatureForVerify(rcheck, h, sig + (ED25519_SIG_SIZE/2), key); + if (ret != kStatus_Success) + return ret; #else sc_reduce(h); diff --git a/wolfcrypt/src/port/nxp/ksdk_port.c b/wolfcrypt/src/port/nxp/ksdk_port.c index 807690546..805d86f0e 100644 --- a/wolfcrypt/src/port/nxp/ksdk_port.c +++ b/wolfcrypt/src/port/nxp/ksdk_port.c @@ -2051,11 +2051,15 @@ status_t LTC_PKHA_SignatureForVerify(uint8_t *rcheck, const unsigned char *a, if (status == kStatus_Success) { status = LTC_PKHA_WeierstrassToEd25519(<c0, <c0); } - if (((uint32_t)ltc0.X[0]) & 0x01u) { - ltc0.Y[ED25519_KEY_SIZE - 1] |= 0x80u; + + if (status == kStatus_Success) { + if (((uint32_t)ltc0.X[0]) & 0x01u) { + ltc0.Y[ED25519_KEY_SIZE - 1] |= 0x80u; + } + + XMEMCPY(rcheck, ltc0.Y, ED25519_KEY_SIZE); } - XMEMCPY(rcheck, ltc0.Y, ED25519_KEY_SIZE); return status; }