2009-11-18 9 views
5

J'ai utilisé la commande openSSL pour créer deux fichiers: 1 pour la clé publique RSA & 1 pour la clé privée RSA. Comment récupérer des clés RSA en utilisant C?Chargement des clés RSA à partir des fichiers

Plus précisément, j'ai ces fonctions:

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); 

Les arguments 4, public_key et private_key, doivent être de type RSA. Mais ce que je ne sont que deux fichiers texte générés par la commande 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----- 

Maintenant, je lis ces 2 fichiers sur un tableau de caractères []. Ce que je dois faire ensuite est de convertir ces 2 tableaux en 2 clés RSA (clé publique au client & private_key au serveur) afin que je puisse utiliser les fonctions RSA_public_encrypt et RSA_private_decrypt.

Merci.

+0

que signifient-vous par récupérer, récupérer = lire? – RageZ

+3

Attention, vous ne devez pas exposer votre clé privée, même partiellement! – mjv

+0

[entrez la description du lien ici] (http://stackoverflow.com/questions/30621457/how-to-translate-pem-public-key-into-openssl-rsa-structure/39216814#39216814) Jetez un oeil à cet article – ANDRE

Répondre

9

Jetez un oeil à des fonctions d'E/S dans le OpenSSL crypto library, en particulier la PEM functions

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); 
+1

Le lecteur de clé publique doit être 'PEM_read_RSA_PUBKEY' si vous utilisez un format PEM. Voir http://stackoverflow.com/questions/7818117/why-i-cant-read-openssl-generated-rsa-pub-key-with-pem-read-rsapublickey –

Questions connexes