我试图将 Diffie-Hellman 密钥交换(客户端)编码到 XMC4500 中,我正在使用ARMmbed lib。
这是我得到的代码(基于dh_client.c):
int dhm(无效){
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;}
我没有尝试更进一步,因为它不起作用并且它是 dhm 算法的开始。函数mbedtls_ctr_drbg_seed正在返回MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED。
同样在ctr_drbg.h中,我必须将MBEDTLS_CTR_DRBG_MAX_SEED_INPUT从 384(默认)编辑为 336,否则代码会崩溃。其他一切都是默认的。
有人知道为什么返回此错误吗?提前致谢。
注意:我在 main 中调用此函数。运行代码没有给我任何错误。