Load RSA keys from files

10,379

Take a look at the I/O functions in the OpenSSL crypto library, specifically the 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);
Share:
10,379
user397232
Author by

user397232

Updated on June 04, 2022

Comments

  • user397232
    user397232 almost 2 years

    I used openSSL command to create 2 files: 1 for RSA public key & 1 for RSA private key. How do I recover RSA keys using C?

    Specifically, I have these functions:

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

    The 4th arguments, public_key and private_key, need to be in RSA type. But what I have are only 2 text files generated by openSSL command:

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

    Now, I read these 2 files to a char[] array. What I have to do next is convert these 2 arrays to 2 RSA keys (public key at client & private_key at server) so that I can use RSA_public_encrypt and RSA_private_decrypt functions.

    Thanks.

  • Mark Lakata
    Mark Lakata about 11 years
    The public key reader should be PEM_read_RSA_PUBKEY, if you are dealing with PEM format. See stackoverflow.com/questions/7818117/…