JKJS
Замечания:
Предположим, что закрытый ключ RSA создается следующими командами:
openssl genrsa -out mykey.pem 1024
Тогда нет проблем с чтением ключа из этого файла в C:
RSA *privatekey=NULL; privatekey=PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL); if(privatekey==NULL) ERR_print_errors_fp(stderr);
Но, если RSA keypair создается по следующей команде:
openssl req -newkey rsa:1024 -sha1 -keyout mykey.pem -out rootreq.pem
Затем чтение из mykey.pem приводит к ошибке. Зачем?
JKJS Hardik
Во 2-й команде вы дали кодовую фразу? Откройте ключ, созданный 2-й командой в любом редакторе – видите ли вы ENCRYPTED в байтах?
Если да, то именно поэтому вы не можете прочитать его с помощью PEM_read_RSAPrivateKey
потому что вы передаете третий параметр как NULL.
Передайте обратный вызов, чтобы получить пароль при вызове PEM_read_RSAPrivateKey
.
В качестве альтернативы вы можете удалить пароль из ключа, используя следующую команду
openssl rsa -in mykey.pem -out mykey1.pem.
Это потребует парольной фразы – если вы дадите правильную кодовую фразу, вы получите ключ в незашифрованном виде в mykey1.pem