我正在编写使用 opessl 库来验证 DSA 签名的 SW。我有来自发送者的 gpg 格式的公钥。我如何将它们转换为 .pem 以便 openssl 可以读取它们?
我从另一个帖子中发现了这一点:
gpgsm -o secret-key.p12 --export-secret-key-p12 0xXXXXXXXX
要进行导出,我需要将密钥放在 gpgsm 密钥环中,不是吗?我只是不知道如何将我的密钥导入 gpgsm 正在使用的密钥环中。我最终遇到了错误:
gpgsm --import public.asc
gpgsm: total number processed: 0
gpgsm: error importing certificate: End of file
可以以gpgsm
某种方式使用 gpg:s 密钥环并从那里进行导出吗?
答案1
您的导出命令是正确的,但正如您所想的那样,gpgsm
的密钥环是空的。您可以使用以下命令进行检查:
gpgsm --list-keys
输出将为空。
对于你的最后一个问题:不。gpg
并gpgsm
使用不同的数据库。更多信息是这里。您必须创建或获取 OpenSSL 密钥/证书对并将其(PKCS#12 格式)导入 gpgsm 密钥环(通常~/.gnupg/pubring.kbx
),因此导入命令必须是:
gpgsm --import mycert.p12
你可以从一个系统导出密钥,然后转换并导入到另一个系统,但所谓的转换只是提供元信息(大多数情况下),并使用该元信息创建一个全新的证书/密钥。你可以看看这里以获得转换示例。