Как правильно сгенерировать 1024-битную пару ключей RSA с XMC4500? - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь сгенерировать пару ключей 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.

С наилучшими пожеланиями, Рикардо

...