首页 文章

mbedtls:mbedtls_ctr_drbg_seed上的错误

提问于
浏览
2

我正在使用mbedtls来运行SSL服务器 . 函数 mbedtls_ctr_drbg_seed 返回-34 . 我的代码如下:

const char *pers = "ssl_server2";
  mbedtls_havege_state hs;
  mbedtls_ssl_session ssn;
  mbedtls_entropy_context entropy;
  mbedtls_ctr_drbg_context ctr_drbg;
  // One HTTPS Request Handling
  memset( &ssn, 0, sizeof( mbedtls_ssl_session ) );
  /*
  * 4. Setup stuff
  */
  mbedtls_ssl_init( &ssl );
  mbedtls_ssl_config_init( &conf );
  mbedtls_ctr_drbg_init( &ctr_drbg );
  mbedtls_entropy_init( &entropy );
  printf( "  . Setting up the RNG and SSL data...." );
  if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char *) pers, sizeof( pers ) ) ) != 0 )
  {
     printf( " failed\n  ! mbedtls_ctr_drbg_seed returned -0x%x\n", -ret );
     goto ExitFunction;
  }
  else
     printf( " mbedtls_ctr_drbg_seed returned 0x%x ok\n", ret );

1 回答

  • 0

    正如@Gilles所说,你收到的错误可能是-0x34,即 MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED . 函数 mbedtls_entropy_func() 失败时返回此错误 . 请检查您使用的熵源是否足够强,这意味着当添加 mbedtls_entropy_add_source() 时,您至少有一个强大的熵源 . 您还应验证您使用的熵源是否可以收集足够的熵,并超过设置为源的阈值 .
    还有其他位置 mbedtls_entropy_func() 可能会失败,因此我建议您也检查这些位置 .

相关问题