0

我正在尝试使用英飞凌 XMC4500 f100k1024 生成 RSA 1024 位密钥对。目前,我使用 openssl 在外部生成密钥对。然后,为了签署和验证数据,我使用 mbedtls 包没有问题。用这个包生成这个 RSA 密钥对我没有成功。

我尝试使用 mbedtls 上可用的函数来生成密钥对(mbedtls_ctr_drbg_seed 和 mbedtls_rsa_gen_key),但是,在其中一个函数期间(在 mbedtls_rsa_gen_key 上,我猜是在找到 Q 素数时),程序最终出现硬故障情况。

#define KEY_SIZE 1024
#define EXPONENT 65537

void create_rsa_keys() {
    uint8_t error_found = 0;
mbedtls_rsa_context rsa;
mbedtls_rsa_init( &rsa, MBEDTLS_RSA_PKCS_V15, 0 );
    const char *pers = "rsa_genkey";
mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg;
    mbedtls_ctr_drbg_init( &ctr_drbg );
    mbedtls_entropy_init( &entropy );

error_found = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy,
        (const unsigned char *) pers, strlen( pers ));
   if( error_found != 0 ){
      error_found = 100;
  }

    error_found = mbedtls_rsa_gen_key( &rsa, mbedtls_ctr_drbg_random, &ctr_drbg, KEY_SIZE,
        EXPONENT );

    if( error_found != 0 ){
      error_found = 100;
    }

    error_found = 1;


 }

你能告诉我我做错了什么吗?还有更多的软件包可用于在微控制器单元上创建 RSA 密钥吗?

编辑:错误发生在我调用函数 mbedtls_rsa_gen_key 的行上。KEY_SIZE 是 1024,EXPONENT 是 65537。

最好的问候,里卡多

4

0 回答 0