Я пытаюсь сгенерировать несколько ключей RSA в C, но я сталкиваюсь с ошибкой сегментации со следующим кодом:
#include <stdio.h>
#include <stdlib.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl/bn.h>
int main () {
RSA* keys = RSA_new();
BIGNUM* e = malloc(sizeof(BIGNUM));
BN_generate_prime_ex(e, 16, 1, NULL, NULL, NULL);
int r = RSA_generate_key_ex(keys, 2048, e, NULL);
RSA* keys2 = RSA_new();
BIGNUM* e2 = malloc(sizeof(BIGNUM));
BN_generate_prime_ex(e2, 16, 1, NULL, NULL, NULL);
int r2 = RSA_generate_key_ex(keys2, 2048, e2, NULL);
return 0;
}
Однако следующий код, похоже, работает хорошо:
#include <stdio.h>
#include <stdlib.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl/bn.h>
int main () {
RSA* keys = RSA_new();
RSA* keys2 = RSA_new();
BIGNUM* e = malloc(sizeof(BIGNUM));
BIGNUM* e2 = malloc(sizeof(BIGNUM));
BN_generate_prime_ex(e, 16, 1, NULL, NULL, NULL);
BN_generate_prime_ex(e2, 16, 1, NULL, NULL, NULL);
int r = RSA_generate_key_ex(keys, 2048, e, NULL);
int r2 = RSA_generate_key_ex(keys2, 2048, e2, NULL);
return 0;
}
Может кто-нибудь помочь мне выяснить, почему?
Я действительно хочу реализовать первое решение, потому что мое поколение RSA находится в функции.