mirror of https://github.com/ARMmbed/mbed-os.git
Fix PSA-HAL, TRNG, TLS tests
parent
251a270942
commit
2df2fc7d29
|
@ -23,6 +23,10 @@
|
|||
#error [NOT_SUPPORTED] this test is supported on GCC only
|
||||
#endif
|
||||
|
||||
#if defined(TARGET_FUTURE_SEQUANA_PSA)
|
||||
#error [NOT_SUPPORTED] Disable this Test until FUTURE_SEQUANA_PSA enables Memory protection
|
||||
#endif
|
||||
|
||||
#include "utest/utest.h"
|
||||
#include "unity/unity.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
|
|
|
@ -66,6 +66,33 @@
|
|||
|
||||
using namespace utest::v1;
|
||||
|
||||
#if (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C))
|
||||
#include "entropy.h"
|
||||
#include "entropy_poll.h"
|
||||
#include "crypto.h"
|
||||
#if !defined(MAX)
|
||||
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||
#endif
|
||||
|
||||
/* Calculating the minimum allowed entropy size in bytes */
|
||||
#define MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE \
|
||||
MAX(MBEDTLS_ENTROPY_MIN_PLATFORM, MBEDTLS_ENTROPY_BLOCK_SIZE)
|
||||
|
||||
void inject_entropy_for_psa()
|
||||
{
|
||||
if (psa_crypto_init() == PSA_ERROR_INSUFFICIENT_ENTROPY) {
|
||||
uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0};
|
||||
/* inject some a seed for test*/
|
||||
for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) {
|
||||
seed[i] = i;
|
||||
}
|
||||
|
||||
/* don't really care if this succeed this is just to make crypto init pass*/
|
||||
mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE);
|
||||
}
|
||||
}
|
||||
#endif // (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C))
|
||||
|
||||
static int fill_buffer_trng(uint8_t *buffer, trng_t *trng_obj, size_t trng_len)
|
||||
{
|
||||
size_t temp_size = 0, output_length = 0;
|
||||
|
@ -241,7 +268,13 @@ Specification specification(greentea_test_setup, cases, greentea_test_teardown_h
|
|||
|
||||
int main()
|
||||
{
|
||||
#if (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C))
|
||||
inject_entropy_for_psa();
|
||||
#endif
|
||||
bool ret = !Harness::run(specification);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -84,6 +84,32 @@ Case cases[] = {
|
|||
#endif /* MBEDTLS_SELF_TEST */
|
||||
};
|
||||
|
||||
#if (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C))
|
||||
#include "crypto.h"
|
||||
#if !defined(MAX)
|
||||
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||
#endif
|
||||
|
||||
/* Calculating the minimum allowed entropy size in bytes */
|
||||
#define MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE \
|
||||
MAX(MBEDTLS_ENTROPY_MIN_PLATFORM, MBEDTLS_ENTROPY_BLOCK_SIZE)
|
||||
|
||||
void inject_entropy_for_psa()
|
||||
{
|
||||
if (psa_crypto_init() == PSA_ERROR_INSUFFICIENT_ENTROPY) {
|
||||
uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0};
|
||||
/* inject some a seed for test*/
|
||||
for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) {
|
||||
seed[i] = i;
|
||||
}
|
||||
|
||||
/* don't really care if this succeed this is just to make crypto init pass*/
|
||||
mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE);
|
||||
}
|
||||
}
|
||||
#endif // (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C))
|
||||
|
||||
|
||||
utest::v1::status_t test_setup(const size_t num_cases)
|
||||
{
|
||||
GREENTEA_SETUP(120, "default_auto");
|
||||
|
@ -101,6 +127,11 @@ int main()
|
|||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C))
|
||||
inject_entropy_for_psa();
|
||||
#endif
|
||||
|
||||
ret = (Harness::run(specification) ? 0 : 1);
|
||||
#if defined(MBEDTLS_PLATFORM_C)
|
||||
mbedtls_platform_teardown(NULL);
|
||||
|
|
Loading…
Reference in New Issue