我正在尝试使用英飞凌 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。
最好的问候,里卡多