Как загрузить ключ RSA из двоичных данных в структуру RSA с использованием библиотеки OpenSSL C? - PullRequest
2 голосов
/ 19 марта 2010

В настоящее время мой закрытый ключ сохранен в файле private.key, и я использую следующую функцию для его загрузки:

RSA * r = PEM_read_RSAPrivateKey ("private.key", NULL, NULL, NULL);

Это прекрасно работает, но меня не устраивает формат на основе файлов; Я хочу сохранить свой ключ в чистом двоичном виде (т.е. без base64 или аналогичного) в переменной char* и загрузить / сохранить ключ из / в него. Таким образом, у меня гораздо больше свободы: я смогу хранить ключ непосредственно в приложении const char key[] { 0x01, 0x02, ... };, отправлять его через сетевой сокет и т. Д.

К сожалению, хотя я не нашел способа сделать это. Единственный способ сохранить и загрузить ключ, который я знаю, читает / сохраняет его в файл напрямую.

1 Ответ

6 голосов
/ 19 марта 2010

Используйте d2i_RSAPrivateKey для загрузки напрямую из буфера, содержащего двоичный формат DER:

const unsigned char *p = key;
RSA *r = d2i_RSAPrivateKey(NULL, &p, keylen);
...