如何使用 libtomcrypt 导入 RSA public 密钥?

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

我正在尝试使用 libtomcrypt 进行 RSA-2048 位加密。我当前的 objective 是从文件中导入一个 public 密钥。此文件是使用 OpenSSL 和以下命令生成的:

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

所以我相信我的 public 密钥在 PKCS#1 填充和 OpenSSL 的 PEM 格式中。

我相信我需要使用的函数是 rsa_import(),但它需要一个输入缓冲区、一个长度,并输出一个 rsa_key 指针。明确一点,我认为我需要做的如下:

  1. 将public.pem的内容读入缓冲区
  2. 扔掉包含 "Begin Public Key" 等的页眉和页脚
  3. 从 base64 解码数据。
  4. 将结果数据传递给 rsa_import。

这是正确的吗?任何为此目的使用 libtomcrypt 的人都可以对此发表评论吗?谢谢。

因此,在深入研究 rsa_import() 的源代码后,我很快发现它期望密钥采用 DER 格式。因为我可以访问私钥,所以我使用这个 openssl 命令创建了一个 DER 文件:

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

值得注意的是 -outform 的参数现在是 DER 而不是 PEM。在此之后,我只是将文件内容读入一个字符缓冲区,然后将其作为 rsa_import 的主要参数传递进来。在那之后 rsa_import 使密钥没问题,我可以从那里 encrypt/decrypt。