wpa_supplicant: Fix SAE test-case failure on mbedtls version udpate
Problem: mbedtls_ctr_drbg_context was initialized in crypto_ec_point_mul. This was okay in releases before 2.16.4 as entropy_len used to get set to MBEDTLS_CTR_DRBG_ENTROPY_LEN in function mbedtls_ctr_drbg_seed. The function is now changed to set the length to MBEDTLS_CTR_DRBG_ENTROPY_LEN if previous length is 0 and hence the bug. Solution: Initialize mbedtls_ctr_drbg_context in crypto_ec_point_mul.
This commit is contained in:
parent
23c4d052ef
commit
5723e717e5
1 changed files with 5 additions and 4 deletions
|
@ -269,7 +269,7 @@ struct crypto_ec *crypto_ec_init(int group)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mbedtls_ecp_group_init( &e->group );
|
mbedtls_ecp_group_init(&e->group);
|
||||||
|
|
||||||
if (mbedtls_ecp_group_load(&e->group, grp_id)) {
|
if (mbedtls_ecp_group_load(&e->group, grp_id)) {
|
||||||
crypto_ec_deinit(e);
|
crypto_ec_deinit(e);
|
||||||
|
@ -286,7 +286,7 @@ void crypto_ec_deinit(struct crypto_ec *e)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mbedtls_ecp_group_free( &e->group );
|
mbedtls_ecp_group_free(&e->group);
|
||||||
os_free(e);
|
os_free(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -420,6 +420,7 @@ int crypto_ec_point_mul(struct crypto_ec *e, const struct crypto_ec_point *p,
|
||||||
mbedtls_ctr_drbg_context ctr_drbg;
|
mbedtls_ctr_drbg_context ctr_drbg;
|
||||||
|
|
||||||
mbedtls_entropy_init(&entropy);
|
mbedtls_entropy_init(&entropy);
|
||||||
|
mbedtls_ctr_drbg_init(&ctr_drbg);
|
||||||
|
|
||||||
MBEDTLS_MPI_CHK(mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy,
|
MBEDTLS_MPI_CHK(mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy,
|
||||||
NULL, 0));
|
NULL, 0));
|
||||||
|
@ -431,8 +432,8 @@ int crypto_ec_point_mul(struct crypto_ec *e, const struct crypto_ec_point *p,
|
||||||
mbedtls_ctr_drbg_random,
|
mbedtls_ctr_drbg_random,
|
||||||
&ctr_drbg));
|
&ctr_drbg));
|
||||||
cleanup:
|
cleanup:
|
||||||
mbedtls_ctr_drbg_free( &ctr_drbg );
|
mbedtls_ctr_drbg_free(&ctr_drbg);
|
||||||
mbedtls_entropy_free( &entropy );
|
mbedtls_entropy_free(&entropy);
|
||||||
return ret ? -1 : 0;
|
return ret ? -1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue