Use MD-light in entropy.c
Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
This commit is contained in:
parent
ac6db4d649
commit
5cd4b6403b
6 changed files with 79 additions and 100 deletions
|
@ -99,6 +99,7 @@
|
||||||
*/
|
*/
|
||||||
#if defined(MBEDTLS_ECJPAKE_C) || \
|
#if defined(MBEDTLS_ECJPAKE_C) || \
|
||||||
defined(MBEDTLS_PEM_PARSE_C) || \
|
defined(MBEDTLS_PEM_PARSE_C) || \
|
||||||
|
defined(MBEDTLS_ENTROPY_C) || \
|
||||||
defined(MBEDTLS_PKCS12_C) || \
|
defined(MBEDTLS_PKCS12_C) || \
|
||||||
defined(MBEDTLS_RSA_C)
|
defined(MBEDTLS_RSA_C)
|
||||||
#define MBEDTLS_MD_LIGHT
|
#define MBEDTLS_MD_LIGHT
|
||||||
|
|
|
@ -173,21 +173,27 @@
|
||||||
#error "MBEDTLS_PKCS5_C defined, but not all prerequisites"
|
#error "MBEDTLS_PKCS5_C defined, but not all prerequisites"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_ENTROPY_C) && (!defined(MBEDTLS_SHA512_C) && \
|
#if defined(MBEDTLS_ENTROPY_C) && \
|
||||||
!defined(MBEDTLS_SHA256_C))
|
!( defined(MBEDTLS_SHA512_C) || defined(MBEDTLS_SHA256_C) || \
|
||||||
|
(defined(MBEDTLS_PSA_CRYPTO_C) && \
|
||||||
|
(defined(PSA_WANT_ALG_SHA_512) || defined(PSA_WANT_ALG_SHA_256))))
|
||||||
#error "MBEDTLS_ENTROPY_C defined, but not all prerequisites"
|
#error "MBEDTLS_ENTROPY_C defined, but not all prerequisites"
|
||||||
#endif
|
#endif
|
||||||
#if defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_SHA512_C) && \
|
#if defined(MBEDTLS_ENTROPY_C) && \
|
||||||
defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 64)
|
defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 64)
|
||||||
#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
|
#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
|
||||||
#endif
|
#endif
|
||||||
#if defined(MBEDTLS_ENTROPY_C) && \
|
#if defined(MBEDTLS_ENTROPY_C) && \
|
||||||
( !defined(MBEDTLS_SHA512_C) || defined(MBEDTLS_ENTROPY_FORCE_SHA256) ) \
|
( defined(MBEDTLS_ENTROPY_FORCE_SHA256) || \
|
||||||
|
!( defined(MBEDTLS_SHA512_C) || \
|
||||||
|
(defined(MBEDTLS_PSA_CRYPTO_C) && defined(PSA_WANT_ALG_SHA_512)) ) ) \
|
||||||
&& defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 32)
|
&& defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 32)
|
||||||
#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
|
#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high"
|
||||||
#endif
|
#endif
|
||||||
#if defined(MBEDTLS_ENTROPY_C) && \
|
#if defined(MBEDTLS_ENTROPY_C) && \
|
||||||
defined(MBEDTLS_ENTROPY_FORCE_SHA256) && !defined(MBEDTLS_SHA256_C)
|
defined(MBEDTLS_ENTROPY_FORCE_SHA256) && \
|
||||||
|
!( defined(MBEDTLS_SHA256_C) || \
|
||||||
|
(defined(MBEDTLS_PSA_CRYPTO_C) && defined(PSA_WANT_ALG_SHA_256)) )
|
||||||
#error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites"
|
#error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,17 @@
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256)
|
#include "md.h"
|
||||||
#include "mbedtls/sha512.h"
|
|
||||||
|
#if defined(MBEDTLS_MD_CAN_SHA512) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256)
|
||||||
#define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR
|
#define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR
|
||||||
|
#define MBEDTLS_ENTROPY_MD MBEDTLS_MD_SHA512
|
||||||
|
#define MBEDTLS_ENTROPY_BLOCK_SIZE 64 /**< Block size of entropy accumulator (SHA-512) */
|
||||||
#else
|
#else
|
||||||
#if defined(MBEDTLS_SHA256_C)
|
#if defined(MBEDTLS_MD_CAN_SHA256)
|
||||||
#define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR
|
#define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR
|
||||||
#include "mbedtls/sha256.h"
|
#define MBEDTLS_ENTROPY_MD MBEDTLS_MD_SHA256
|
||||||
|
#define MBEDTLS_ENTROPY_BLOCK_SIZE 32 /**< Block size of entropy accumulator (SHA-256) */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -71,12 +75,6 @@
|
||||||
|
|
||||||
/** \} name SECTION: Module settings */
|
/** \} name SECTION: Module settings */
|
||||||
|
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
|
||||||
#define MBEDTLS_ENTROPY_BLOCK_SIZE 64 /**< Block size of entropy accumulator (SHA-512) */
|
|
||||||
#else
|
|
||||||
#define MBEDTLS_ENTROPY_BLOCK_SIZE 32 /**< Block size of entropy accumulator (SHA-256) */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MBEDTLS_ENTROPY_MAX_SEED_SIZE 1024 /**< Maximum size of seed we read from seed file */
|
#define MBEDTLS_ENTROPY_MAX_SEED_SIZE 1024 /**< Maximum size of seed we read from seed file */
|
||||||
#define MBEDTLS_ENTROPY_SOURCE_MANUAL MBEDTLS_ENTROPY_MAX_SOURCES
|
#define MBEDTLS_ENTROPY_SOURCE_MANUAL MBEDTLS_ENTROPY_MAX_SOURCES
|
||||||
|
|
||||||
|
@ -120,11 +118,7 @@ typedef struct mbedtls_entropy_context {
|
||||||
int MBEDTLS_PRIVATE(accumulator_started); /* 0 after init.
|
int MBEDTLS_PRIVATE(accumulator_started); /* 0 after init.
|
||||||
* 1 after the first update.
|
* 1 after the first update.
|
||||||
* -1 after free. */
|
* -1 after free. */
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
mbedtls_md_context_t MBEDTLS_PRIVATE(accumulator);
|
||||||
mbedtls_sha512_context MBEDTLS_PRIVATE(accumulator);
|
|
||||||
#elif defined(MBEDTLS_ENTROPY_SHA256_ACCUMULATOR)
|
|
||||||
mbedtls_sha256_context MBEDTLS_PRIVATE(accumulator);
|
|
||||||
#endif
|
|
||||||
int MBEDTLS_PRIVATE(source_count); /* Number of entries used in source. */
|
int MBEDTLS_PRIVATE(source_count); /* Number of entries used in source. */
|
||||||
mbedtls_entropy_source_state MBEDTLS_PRIVATE(source)[MBEDTLS_ENTROPY_MAX_SOURCES];
|
mbedtls_entropy_source_state MBEDTLS_PRIVATE(source)[MBEDTLS_ENTROPY_MAX_SOURCES];
|
||||||
#if defined(MBEDTLS_THREADING_C)
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
|
|
|
@ -34,9 +34,6 @@
|
||||||
|
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
|
|
||||||
#include "mbedtls/platform.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define ENTROPY_MAX_LOOP 256 /**< Maximum amount to loop before error */
|
#define ENTROPY_MAX_LOOP 256 /**< Maximum amount to loop before error */
|
||||||
|
|
||||||
void mbedtls_entropy_init(mbedtls_entropy_context *ctx)
|
void mbedtls_entropy_init(mbedtls_entropy_context *ctx)
|
||||||
|
@ -49,11 +46,7 @@ void mbedtls_entropy_init(mbedtls_entropy_context *ctx)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ctx->accumulator_started = 0;
|
ctx->accumulator_started = 0;
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
mbedtls_md_init(&ctx->accumulator);
|
||||||
mbedtls_sha512_init(&ctx->accumulator);
|
|
||||||
#else
|
|
||||||
mbedtls_sha256_init(&ctx->accumulator);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Reminder: Update ENTROPY_HAVE_STRONG in the test files
|
/* Reminder: Update ENTROPY_HAVE_STRONG in the test files
|
||||||
* when adding more strong entropy sources here. */
|
* when adding more strong entropy sources here. */
|
||||||
|
@ -89,11 +82,7 @@ void mbedtls_entropy_free(mbedtls_entropy_context *ctx)
|
||||||
#if defined(MBEDTLS_THREADING_C)
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
mbedtls_mutex_free(&ctx->mutex);
|
mbedtls_mutex_free(&ctx->mutex);
|
||||||
#endif
|
#endif
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
mbedtls_md_free(&ctx->accumulator);
|
||||||
mbedtls_sha512_free(&ctx->accumulator);
|
|
||||||
#else
|
|
||||||
mbedtls_sha256_free(&ctx->accumulator);
|
|
||||||
#endif
|
|
||||||
#if defined(MBEDTLS_ENTROPY_NV_SEED)
|
#if defined(MBEDTLS_ENTROPY_NV_SEED)
|
||||||
ctx->initial_entropy_run = 0;
|
ctx->initial_entropy_run = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -150,15 +139,10 @@ static int entropy_update(mbedtls_entropy_context *ctx, unsigned char source_id,
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (use_len > MBEDTLS_ENTROPY_BLOCK_SIZE) {
|
if (use_len > MBEDTLS_ENTROPY_BLOCK_SIZE) {
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
if ((ret = mbedtls_md(mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD),
|
||||||
if ((ret = mbedtls_sha512(data, len, tmp, 0)) != 0) {
|
data, len, tmp)) != 0) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if ((ret = mbedtls_sha256(data, len, tmp, 0)) != 0) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
p = tmp;
|
p = tmp;
|
||||||
use_len = MBEDTLS_ENTROPY_BLOCK_SIZE;
|
use_len = MBEDTLS_ENTROPY_BLOCK_SIZE;
|
||||||
}
|
}
|
||||||
|
@ -171,29 +155,22 @@ static int entropy_update(mbedtls_entropy_context *ctx, unsigned char source_id,
|
||||||
* it is sufficient to start the accumulator here only because all calls to
|
* it is sufficient to start the accumulator here only because all calls to
|
||||||
* gather entropy eventually execute this code.
|
* gather entropy eventually execute this code.
|
||||||
*/
|
*/
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
if (ctx->accumulator_started == 0) {
|
||||||
if (ctx->accumulator_started == 0 &&
|
ret = mbedtls_md_setup(&ctx->accumulator,
|
||||||
(ret = mbedtls_sha512_starts(&ctx->accumulator, 0)) != 0) {
|
mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD), 0);
|
||||||
|
if (ret != 0) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
} else {
|
}
|
||||||
|
ret = mbedtls_md_starts(&ctx->accumulator);
|
||||||
|
if (ret != 0) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
ctx->accumulator_started = 1;
|
ctx->accumulator_started = 1;
|
||||||
}
|
}
|
||||||
if ((ret = mbedtls_sha512_update(&ctx->accumulator, header, 2)) != 0) {
|
if ((ret = mbedtls_md_update(&ctx->accumulator, header, 2)) != 0) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
ret = mbedtls_sha512_update(&ctx->accumulator, p, use_len);
|
ret = mbedtls_md_update(&ctx->accumulator, p, use_len);
|
||||||
#else
|
|
||||||
if (ctx->accumulator_started == 0 &&
|
|
||||||
(ret = mbedtls_sha256_starts(&ctx->accumulator, 0)) != 0) {
|
|
||||||
goto cleanup;
|
|
||||||
} else {
|
|
||||||
ctx->accumulator_started = 1;
|
|
||||||
}
|
|
||||||
if ((ret = mbedtls_sha256_update(&ctx->accumulator, header, 2)) != 0) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
ret = mbedtls_sha256_update(&ctx->accumulator, p, use_len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
mbedtls_platform_zeroize(tmp, sizeof(tmp));
|
mbedtls_platform_zeroize(tmp, sizeof(tmp));
|
||||||
|
@ -354,62 +331,41 @@ int mbedtls_entropy_func(void *data, unsigned char *output, size_t len)
|
||||||
|
|
||||||
memset(buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
memset(buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
||||||
|
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
|
||||||
/*
|
/*
|
||||||
* Note that at this stage it is assumed that the accumulator was started
|
* Note that at this stage it is assumed that the accumulator was started
|
||||||
* in a previous call to entropy_update(). If this is not guaranteed, the
|
* in a previous call to entropy_update(). If this is not guaranteed, the
|
||||||
* code below will fail.
|
* code below will fail.
|
||||||
*/
|
*/
|
||||||
if ((ret = mbedtls_sha512_finish(&ctx->accumulator, buf)) != 0) {
|
if ((ret = mbedtls_md_finish(&ctx->accumulator, buf)) != 0) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reset accumulator and counters and recycle existing entropy
|
* Reset accumulator and counters and recycle existing entropy
|
||||||
*/
|
*/
|
||||||
mbedtls_sha512_free(&ctx->accumulator);
|
mbedtls_md_free(&ctx->accumulator);
|
||||||
mbedtls_sha512_init(&ctx->accumulator);
|
mbedtls_md_init(&ctx->accumulator);
|
||||||
if ((ret = mbedtls_sha512_starts(&ctx->accumulator, 0)) != 0) {
|
ret = mbedtls_md_setup(&ctx->accumulator,
|
||||||
|
mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD), 0);
|
||||||
|
if (ret != 0) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
if ((ret = mbedtls_sha512_update(&ctx->accumulator, buf,
|
ret = mbedtls_md_starts(&ctx->accumulator);
|
||||||
|
if (ret != 0) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
if ((ret = mbedtls_md_update(&ctx->accumulator, buf,
|
||||||
MBEDTLS_ENTROPY_BLOCK_SIZE)) != 0) {
|
MBEDTLS_ENTROPY_BLOCK_SIZE)) != 0) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform second SHA-512 on entropy
|
* Perform second hashing on entropy
|
||||||
*/
|
*/
|
||||||
if ((ret = mbedtls_sha512(buf, MBEDTLS_ENTROPY_BLOCK_SIZE,
|
if ((ret = mbedtls_md(mbedtls_md_info_from_type(MBEDTLS_ENTROPY_MD),
|
||||||
buf, 0)) != 0) {
|
buf, MBEDTLS_ENTROPY_BLOCK_SIZE, buf)) != 0) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
#else /* MBEDTLS_ENTROPY_SHA512_ACCUMULATOR */
|
|
||||||
if ((ret = mbedtls_sha256_finish(&ctx->accumulator, buf)) != 0) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Reset accumulator and counters and recycle existing entropy
|
|
||||||
*/
|
|
||||||
mbedtls_sha256_free(&ctx->accumulator);
|
|
||||||
mbedtls_sha256_init(&ctx->accumulator);
|
|
||||||
if ((ret = mbedtls_sha256_starts(&ctx->accumulator, 0)) != 0) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
if ((ret = mbedtls_sha256_update(&ctx->accumulator, buf,
|
|
||||||
MBEDTLS_ENTROPY_BLOCK_SIZE)) != 0) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Perform second SHA-256 on entropy
|
|
||||||
*/
|
|
||||||
if ((ret = mbedtls_sha256(buf, MBEDTLS_ENTROPY_BLOCK_SIZE,
|
|
||||||
buf, 0)) != 0) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
#endif /* MBEDTLS_ENTROPY_SHA512_ACCUMULATOR */
|
|
||||||
|
|
||||||
for (i = 0; i < ctx->source_count; i++) {
|
for (i = 0; i < ctx->source_count; i++) {
|
||||||
ctx->source[i].size = 0;
|
ctx->source[i].size = 0;
|
||||||
|
|
|
@ -167,6 +167,8 @@ void entropy_seed_file(char *path, int ret)
|
||||||
{
|
{
|
||||||
mbedtls_entropy_context ctx;
|
mbedtls_entropy_context ctx;
|
||||||
|
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
mbedtls_entropy_init(&ctx);
|
mbedtls_entropy_init(&ctx);
|
||||||
|
|
||||||
TEST_ASSERT(mbedtls_entropy_write_seed_file(&ctx, path) == ret);
|
TEST_ASSERT(mbedtls_entropy_write_seed_file(&ctx, path) == ret);
|
||||||
|
@ -174,6 +176,7 @@ void entropy_seed_file(char *path, int ret)
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_entropy_free(&ctx);
|
mbedtls_entropy_free(&ctx);
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
@ -182,6 +185,8 @@ void entropy_write_base_seed_file(int ret)
|
||||||
{
|
{
|
||||||
mbedtls_entropy_context ctx;
|
mbedtls_entropy_context ctx;
|
||||||
|
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
mbedtls_entropy_init(&ctx);
|
mbedtls_entropy_init(&ctx);
|
||||||
|
|
||||||
TEST_ASSERT(mbedtls_entropy_write_seed_file(&ctx, MBEDTLS_PLATFORM_STD_NV_SEED_FILE) == ret);
|
TEST_ASSERT(mbedtls_entropy_write_seed_file(&ctx, MBEDTLS_PLATFORM_STD_NV_SEED_FILE) == ret);
|
||||||
|
@ -189,6 +194,7 @@ void entropy_write_base_seed_file(int ret)
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_entropy_free(&ctx);
|
mbedtls_entropy_free(&ctx);
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
@ -243,6 +249,8 @@ void entropy_func_len(int len, int ret)
|
||||||
unsigned char acc[MBEDTLS_ENTROPY_BLOCK_SIZE + 10] = { 0 };
|
unsigned char acc[MBEDTLS_ENTROPY_BLOCK_SIZE + 10] = { 0 };
|
||||||
size_t i, j;
|
size_t i, j;
|
||||||
|
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
mbedtls_entropy_init(&ctx);
|
mbedtls_entropy_init(&ctx);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -267,6 +275,7 @@ void entropy_func_len(int len, int ret)
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_entropy_free(&ctx);
|
mbedtls_entropy_free(&ctx);
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
@ -277,6 +286,8 @@ void entropy_source_fail(char *path)
|
||||||
unsigned char buf[16];
|
unsigned char buf[16];
|
||||||
entropy_dummy_context dummy = { DUMMY_FAIL, 0, 0 };
|
entropy_dummy_context dummy = { DUMMY_FAIL, 0, 0 };
|
||||||
|
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
mbedtls_entropy_init(&ctx);
|
mbedtls_entropy_init(&ctx);
|
||||||
|
|
||||||
TEST_ASSERT(mbedtls_entropy_add_source(&ctx, entropy_dummy_source,
|
TEST_ASSERT(mbedtls_entropy_add_source(&ctx, entropy_dummy_source,
|
||||||
|
@ -299,6 +310,7 @@ void entropy_source_fail(char *path)
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_entropy_free(&ctx);
|
mbedtls_entropy_free(&ctx);
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
@ -312,6 +324,8 @@ void entropy_threshold(int threshold, int chunk_size, int result)
|
||||||
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
|
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
mbedtls_entropy_init(&ctx);
|
mbedtls_entropy_init(&ctx);
|
||||||
entropy_clear_sources(&ctx);
|
entropy_clear_sources(&ctx);
|
||||||
|
|
||||||
|
@ -340,6 +354,7 @@ void entropy_threshold(int threshold, int chunk_size, int result)
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_entropy_free(&ctx);
|
mbedtls_entropy_free(&ctx);
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
@ -359,6 +374,8 @@ void entropy_calls(int strength1, int strength2,
|
||||||
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
|
unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE] = { 0 };
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
mbedtls_entropy_init(&ctx);
|
mbedtls_entropy_init(&ctx);
|
||||||
entropy_clear_sources(&ctx);
|
entropy_clear_sources(&ctx);
|
||||||
|
|
||||||
|
@ -385,6 +402,7 @@ void entropy_calls(int strength1, int strength2,
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_entropy_free(&ctx);
|
mbedtls_entropy_free(&ctx);
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
|
@ -455,6 +473,8 @@ void entropy_nv_seed(data_t *read_seed)
|
||||||
unsigned char check_seed[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
unsigned char check_seed[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
||||||
unsigned char check_entropy[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
unsigned char check_entropy[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
||||||
|
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
memset(entropy, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
memset(entropy, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
||||||
memset(buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
memset(buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
||||||
memset(empty, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
memset(empty, 0, MBEDTLS_ENTROPY_BLOCK_SIZE);
|
||||||
|
@ -523,12 +543,18 @@ exit:
|
||||||
mbedtls_entropy_free(&ctx);
|
mbedtls_entropy_free(&ctx);
|
||||||
mbedtls_nv_seed_read = original_mbedtls_nv_seed_read;
|
mbedtls_nv_seed_read = original_mbedtls_nv_seed_read;
|
||||||
mbedtls_nv_seed_write = original_mbedtls_nv_seed_write;
|
mbedtls_nv_seed_write = original_mbedtls_nv_seed_write;
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE depends_on:ENTROPY_HAVE_STRONG:MBEDTLS_SELF_TEST */
|
/* BEGIN_CASE depends_on:ENTROPY_HAVE_STRONG:MBEDTLS_SELF_TEST */
|
||||||
void entropy_selftest(int result)
|
void entropy_selftest(int result)
|
||||||
{
|
{
|
||||||
|
MD_PSA_INIT();
|
||||||
|
|
||||||
TEST_ASSERT(mbedtls_entropy_self_test(1) == result);
|
TEST_ASSERT(mbedtls_entropy_self_test(1) == result);
|
||||||
|
|
||||||
|
exit:
|
||||||
|
MD_PSA_DONE();
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
|
@ -74,11 +74,7 @@ static void custom_entropy_init(mbedtls_entropy_context *ctx)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ctx->accumulator_started = 0;
|
ctx->accumulator_started = 0;
|
||||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
mbedtls_md_init(&ctx->accumulator);
|
||||||
mbedtls_sha512_init(&ctx->accumulator);
|
|
||||||
#else
|
|
||||||
mbedtls_sha256_init(&ctx->accumulator);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
||||||
if (custom_entropy_sources_mask & ENTROPY_SOURCE_PLATFORM) {
|
if (custom_entropy_sources_mask & ENTROPY_SOURCE_PLATFORM) {
|
||||||
|
|
Loading…
Reference in a new issue