MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED - PullRequest
0 голосов
/ 25 мая 2018

я пытаюсь закодировать обмен ключами Диффи-Хеллмана (на стороне клиента) в XMC4500, и я использую ARMmbed lib .

Это код, который я получил (основываясь на dh_client.c ):

int dhm (void) {

int ret;
size_t n, buflen;

unsigned char *p, *end;
unsigned char buf[512];
unsigned char hash[32];
const char *pers = "dh_client";

mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_rsa_context rsa;
mbedtls_dhm_context dhm;
mbedtls_aes_context aes;

mbedtls_rsa_init( &rsa, MBEDTLS_RSA_PKCS_V15, MBEDTLS_MD_SHA256 );
mbedtls_dhm_init( &dhm );
mbedtls_aes_init( &aes );
mbedtls_ctr_drbg_init( &ctr_drbg );

/*
 * 1. Setup the RNG
 */

mbedtls_entropy_init( &entropy );
ret = mbedtls_ctr_drbg_seed( &ctr_drbg,
                            mbedtls_entropy_func,
                            &entropy,
                            (const unsigned char *) pers,
                            strlen( pers ) );

mbedtls_aes_free( &aes );
mbedtls_rsa_free( &rsa );
mbedtls_dhm_free( &dhm );
mbedtls_ctr_drbg_free( &ctr_drbg );
mbedtls_entropy_free( &entropy );

return ret;}

Я не пытался идти дальше, потому что это не работает, и это оченьначало алгоритма дхм.Функция mbedtls_ctr_drbg_seed возвращает MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED .

Кроме того, в ctr_drbg.h * * * * * * * * * *С 384 (по умолчанию) до 336, в противном случае код зависнет.Все остальное по умолчанию.

Кто-то знает, почему возвращает эту ошибку?Заранее спасибо.

Примечание: я вызываю эту функцию в main.Запуск кода не дает мне ошибок.

1 Ответ

0 голосов
/ 07 июня 2018

Эта ошибка возвращается при сбое функции энтропии (mbedtls_entropy_func).У вас включен источник энтропии?Скорее всего, на вашей платформе не настроен источник сильной энтропии, что приводит к этой ошибке.

...