Я пытаюсь сгенерировать пару ключей RSA 1024 бит с infineon XMC4500 f100k1024.
На данный момент я генерирую пару ключей извне с помощью 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, а ЭКСПОНЕНТ - 65537.
С наилучшими пожеланиями,
Рикардо