Merge pull request #6477 from JacobBarthelmeh/stm32

add sanity check on hash size with STM32 port
This commit is contained in:
Sean Parkinson
2023-06-08 22:21:19 +10:00
committed by GitHub

View File

@@ -984,8 +984,21 @@ int stm32_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash,
pka_ecc.pPubKeyCurvePtY = Qybin;
pka_ecc.RSign = Rbin;
pka_ecc.SSign = Sbin;
XMEMSET(Hashbin, 0, STM32_MAX_ECC_SIZE);
XMEMCPY(Hashbin + (size - hashlen), hash, hashlen);
if (hashlen > STM32_MAX_ECC_SIZE) {
return ECC_BAD_ARG_E;
}
else if (hashlen > size) {
/* in the case that hashlen is larger than key size place hash at
* beginning of buffer */
XMEMCPY(Hashbin, hash, size);
}
else {
/* in all other cases where hashlen is equal to or less than the key
* size pad the Hashbin buffer with leading zero's */
XMEMCPY(Hashbin + (size - hashlen), hash, hashlen);
}
pka_ecc.hash = Hashbin;
status = HAL_PKA_ECDSAVerif(&hpka, &pka_ecc, HAL_MAX_DELAY);
@@ -1059,7 +1072,19 @@ int stm32_ecc_sign_hash_ex(const byte* hash, word32 hashlen, WC_RNG* rng,
pka_ecc.primeOrder = order;
XMEMSET(Hashbin, 0, STM32_MAX_ECC_SIZE);
XMEMCPY(Hashbin + (size - hashlen), hash, hashlen);
if (hashlen > STM32_MAX_ECC_SIZE) {
return ECC_BAD_ARG_E;
}
else if (hashlen > size) {
/* in the case that hashlen is larger than key size place hash at
* beginning of buffer */
XMEMCPY(Hashbin, hash, size);
}
else {
/* in all other cases where hashlen is equal to or less than the key
* size pad the Hashbin buffer with leading zero's */
XMEMCPY(Hashbin + (size - hashlen), hash, hashlen);
}
pka_ecc.hash = Hashbin;
pka_ecc.integer = Intbin;
pka_ecc.privateKey = Keybin;