检查 GPGME 中是否为 GnuPG 成功设置了配置文件



用于指定 GPG 中加密算法的优先顺序,我使用

gpgme_set_engine_info(GPGME_PROTOCOL_OpenPGP, NULL, CONFIG_DIR);

以设置自定义配置文件。但是,如何检查此操作是否成功? home_dir设置为给定值,但如果我传递一个没有配置文件的目录,也会发生这种情况。我在文档中看不到任何函数或调用来评估配置文件是否已加载或当前首选项顺序是什么。

如果出现问题,该函数将返回错误值。从文档中:

此函数GPG_ERR_NO_ERROR成功时返回错误代码,失败时返回错误代码。

您在设置没有配置文件的主目录时观察到意外行为:

home_dir设置为给定值,但如果我传递一个没有配置文件的目录,也会发生这种情况。

这是 GnuPG 中的预期行为。空配置文件不是错误,而只是意味着没有其他配置,但默认值已到位。如果你将--homedir传递给 GnuPG 并引用一个空文件夹,也会发生类似的事情:GnuPG 将尝试将此文件夹初始化为主目录,但打印一条信息消息:

$ LANG=C gpg --homedir /tmp
gpg: keyring `/tmp/secring.gpg' created
gpg: keyring `/tmp/pubring.gpg' created
gpg: Go ahead and type your message ...

如果您想验证文件夹是否已设置,我建议您验证您期望的一些选项,或者自行测试配置文件(或您希望可用的任何内容)。

最新更新