如何使用 GnuPG 以 PEM 格式导出公钥?

如何使用 GnuPG 以 PEM 格式导出公钥?

我正在编写使用 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

输出将为空。

对于你的最后一个问题:不。gpggpgsm使用不同的数据库。更多信息是这里。您必须创建或获取 OpenSSL 密钥/证书对并将其(PKCS#12 格式)导入 gpgsm 密钥环(通常~/.gnupg/pubring.kbx),因此导入命令必须是:

gpgsm --import mycert.p12

你可以从一个系统导出密钥,然后转换并导入到另一个系统,但所谓的转换只是提供元信息(大多数情况下),并使用该元信息创建一个全新的证书/密钥。你可以看看这里以获得转换示例。

相关内容