2010-03-19 80 views
2

目前,我有我的私鑰保存在一個文件中,private.key,我用下面的函數來加載:如何使用OpenSSL C庫將RSA密鑰從二進制數據加載到RSA結構?

RSA * R = PEM_read_RSAPrivateKey( 「private.key」,NULL,NULL,NULL);

這工作完美,但我不滿意基於文件的格式;我想在一個char*變量中將我的密鑰保存爲純二進制格式(即沒有base64或類似的格式),並從/加載/保存密鑰。這樣我有更多的自由:我可以直接將密鑰存儲到應用程序const char key[] { 0x01, 0x02, ... };,通過網絡套接字等發送。

不幸的是,雖然我還沒有找到辦法做到這一點。保存和加載我知道的密鑰的唯一方法是直接讀取/保存到文件中。

回答

6

使用d2i_RSAPrivateKey直接從包含二進制DER格式的緩衝器加載:

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