2017-07-26 98 views
1

我试图移植在Ameba Board上使用mbedtls的AWS SDK。我有一个AWS的函数:iot_tls_connect来初始化mbedtls。mbedtls为什么我得到“随机发生器未能生成非零”错误

MCU有一个TRNG,但在第一阶段使用HW TRNG并不重要。软件RNG和熵可以很好。我试过很多不同的组合和mbedtls配置的,但我收到以下错误

iot_tls_connect:mbedtls_ssl_handshake():RSA - 随机发生器不能产生非零aws_iot_mqtt_connect失败SSL握手错误

我最后的代码

mbedtls_net_init(&server_fd); 
mbedtls_ssl_init(&ssl); 
mbedtls_ssl_config_init(&conf); 
mbedtls_ctr_drbg_init(&ctr_drbg); 
mbedtls_x509_crt_init(&cacert); 
mbedtls_x509_crt_init(&clicert); 
mbedtls_pk_init(&pkey); 
/* my_random returns random values from HW TRNG */ 
mbedtls_ssl_conf_rng(&ssl, my_random, NULL); 

IOT_DEBUG("Seeding the random number generator..."); 
mbedtls_entropy_init(&entropy); 

/* Added to test */ 
ret = mbedtls_entropy_add_source(&entropy, entropy_dummy_source, NULL, 16, 1); 

if((ret = mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy, pers, strlen(pers))) != 0) { ... } 

/* Added for test as suggested in tutorials */ 
mbedtls_ctr_drbg_set_prediction_resistance(&ctr_drbg, MBEDTLS_CTR_DRBG_PR_ON); 

它可以关于我的配置文件。教程没有帮助。它挡住了我。任何想法。

谢谢。

回答

1

我正在使用Ameba SDK,并在AES.c中的HW Crypto模块的修改中发现了一个错误。这是不是一个普遍问题的原因。