Из вашего описания я предполагаю, что ваше приложение застряло в вызове на mbedtls_ctr_drbg_seed()
.Наиболее вероятная причина, ИМХО, заключается в функции mbedtls_entropy_func()
:
do
{
if( count++ > ENTROPY_MAX_LOOP )
{
ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
goto exit;
}
if( ( ret = entropy_gather_internal( ctx ) ) != 0 )
goto exit;
done = 1;
for( i = 0; i < ctx->source_count; i++ )
if( ctx->source[i].size < ctx->source[i].threshold )
done = 0;
}
while( ! done );
Вам следует убедиться, что ваша коллекция энтропии увеличивает размер собранных данных, что пороговое значение не равно MAX_INT
иличто-то в этом роде, и что ваш сборщик энтропии hw на самом деле возвращает энтропийные данные.