Fixed alignment/padding for hash. ECC tests passing on target.

This commit is contained in:
Daniele Lacamera
2019-10-24 20:32:47 +02:00
parent 3677e4d735
commit 025754e774
2 changed files with 9 additions and 3 deletions

View File

@@ -740,6 +740,7 @@ int stm32_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash,
uint8_t Sbin[STM32_MAX_ECC_SIZE];
uint8_t Qxbin[STM32_MAX_ECC_SIZE];
uint8_t Qybin[STM32_MAX_ECC_SIZE];
uint8_t Hashbin[STM32_MAX_ECC_SIZE];
uint8_t privKeybin[STM32_MAX_ECC_SIZE];
const uint8_t *prime, *coef, *gen_x, *gen_y, *order;
const uint32_t *coef_sign;
@@ -785,7 +786,9 @@ 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;
pka_ecc.hash = hash;
memset(Hashbin, 0, STM32_MAX_ECC_SIZE);
memcpy(Hashbin + (size - hashlen), hash, hashlen);
pka_ecc.hash = Hashbin;
status = HAL_PKA_ECDSAVerif(&hpka, &pka_ecc, 0xFFFFFFFF);
if (status != HAL_OK) {
@@ -811,6 +814,7 @@ int stm32_ecc_sign_hash_ex(const byte* hash, word32 hashlen, WC_RNG* rng,
uint8_t Intbin[STM32_MAX_ECC_SIZE];
uint8_t Rbin[STM32_MAX_ECC_SIZE];
uint8_t Sbin[STM32_MAX_ECC_SIZE];
uint8_t Hashbin[STM32_MAX_ECC_SIZE];
const uint8_t *prime, *coef, *gen_x, *gen_y, *order;
const uint32_t *coef_sign;
memset(&pka_ecc, 0x00, sizeof(PKA_ECDSASignInTypeDef));
@@ -851,7 +855,9 @@ int stm32_ecc_sign_hash_ex(const byte* hash, word32 hashlen, WC_RNG* rng,
pka_ecc.basePointY = gen_y;
pka_ecc.primeOrder = order;
pka_ecc.hash = hash;
memset(Hashbin, 0, STM32_MAX_ECC_SIZE);
memcpy(Hashbin + (size - hashlen), hash, hashlen);
pka_ecc.hash = Hashbin;
pka_ecc.integer = Intbin;
pka_ecc.privateKey = Keybin;

View File

@@ -18436,7 +18436,7 @@ int ecc_test(void)
goto done;
}
#endif
#if !defined(WOLFSSL_ATECC508A)
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_STM32_PKA)
ret = ecc_test_make_pub(&rng);
if (ret != 0) {
printf("ecc_test_make_pub failed!: %d\n", ret);