cencryptionrsalibtomcrypt

How do I use libtomcrypt to import an RSA public key?


I am experimenting with using libtomcrypt to do RSA-2048 bit encryption. My current objective is to import a public key from a file. This file was generated using OpenSSL with the command:

$ openssl rsa -in private.pem -outform PEM -pubout -out public.pem

So I believe my public key is in PKCS#1 padding and in OpenSSL's PEM format.

I believe the function I need to use is rsa_import(), but that takes an in buffer, a length, and outputs an rsa_key pointer. Just to be clear, I believe what I need to do is as follows:

  1. Read in the contents of public.pem to a buffer
  2. Toss out the Header and Footers containing "Begin Public Key" etc.
  3. Decode data from base64.
  4. Pass in resulting data to rsa_import.

Is this correct? Can anyone who has used libtomcrypt for this purpose comment on this? Thanks.


Solution

  • So, upon digging into the source of rsa_import(), I figured out pretty quickly that it was expecting the key to be in DER format. Since I had access to the private key, I just made a DER file using this openssl command:

    openssl rsa -in private.pem -outform DER -pubout -out public.der
    

    Notably the argument for -outform is now DER rather than PEM. After this, I just read the file contents into a char buffer, then passed that in as the main argument for rsa_import. After that rsa_import made the key no problem and I was able to encrypt/decrypt from there.