Загрузить ключи RSA из файлов - PullRequest
5 голосов
/ 18 ноября 2009

Я использовал команду openSSL для создания 2 файлов: 1 для открытого ключа RSA и 1 для закрытого ключа RSA. Как восстановить ключи RSA с помощью C?

В частности, у меня есть следующие функции:

RSA_public_encrypt(read_num, in_buf, out_buf, public_key, RSA_PKCS1_PADDING);
RSA_private_decrypt(read_num, in_buf, out_buf, private_key, RSA_PKCS1_PADDING);

4-ые аргументы, public_key и private_key, должны быть в типе RSA. Но у меня есть только 2 текстовых файла, сгенерированных командой openSSL:

File 1: 
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDP78B9GZ9ZFG6OnZ1PU+9BPoyLRuYJr3rSX470XjbJhmlq9DTn
NvG1pxWxrd5tjlmMWD4AkHqD7E87AafvQEiABdUXwf30LatT1w6tlyQWkM/HCN5k
....
npF+nDtKmGteLJVp5x7HHMnZaRbvcV2oUtgdmIMbqVYgbPkwO2tUfUPA6zg1fzhy
nNzQ35e/Hi0fgSHZib0CQEe4e4txXzkezomkWqwuGL8Qqp8iCbBn44mzxXTBvAQl
muFu93C/ULMzRoq4cpPgl3sS0F9s7+zR18SERerFvfc=
-----END RSA PRIVATE KEY-----

File 2:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP78B9GZ9ZFG6OnZ1PU+9BPoyL
RuYJr3rSX470XjbJhmlq9DTnNvG1pxWxrd5tjlmMWD4AkHqD7E87AafvQEiABdUX
wf30LatT1w6tlyQWkM/HCN5kmK5WzPUYbI1q5xGy7Eox9sJ6cNwMUOT+MSDhErgB
gkgF6uG1yGrxuEVk/QIDAQAB
-----END PUBLIC KEY-----

Теперь я прочитал эти 2 файла в массив char []. Далее мне нужно преобразовать эти 2 массива в 2 ключа RSA (открытый ключ на клиенте и private_key на сервере), чтобы я мог использовать функции RSA_public_encrypt и RSA_private_decrypt.

Спасибо.

1 Ответ

9 голосов
/ 18 ноября 2009

Посмотрите на функции ввода-вывода в криптографической библиотеке OpenSSL , в частности функции PEM

RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **x,
                                    pem_password_cb *cb, void *u);

RSA *PEM_read_RSAPublicKey(FILE *fp, RSA **x,
                                    pem_password_cb *cb, void *u);
...