Hi,
I am working on a embedded platform, that does not has any entropy source except system ticks. To improve the randomness, I am trying to utilize NV_SEED operations. The version of mbedtls version 2.16.2 is being used.
Configuration file I have enabled:
#define MBEDTLS_ENTROPY_NV_SEED
#define MBEDTLS_PLATFORM_NV_SEED_ALT
After initializing and before seeding random number generator, I assign functions of nv seed read and write to platform seeding function as below.
if( r = mbedtls_platform_set_nv_seed(FN_NV_SEED_RD, FN_NV_SEED_WR) )
{
return( r );
}
if( r = mbedtls_ctr_drbg_seed( &CtrDrbg, mbedtls_entropy_func, &Entropy,
(const unsigned char *) u8SeedingString, (size_t)Length ) )
{
return ( r );
}
Later functions to generate random and free context.
While running, I could see only the FN_NV_SEED_RD function is getting called. And,
FN_NV_SEED_WR function is not getting called. I tried to add some print statements in mbedtls library function,
mbedtls_entropy_update_nv_seed().
But it looks like, this function was never called by the library.
Thanks,
Gopi Krishnan