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

Check if config file was set successfully for GnuPG in GPGME

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

gpgme_set_engine_info(GPGME_PROTOCOL_OpenPGP, NULL, CONFIG_DIR);

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

函数 returns 出现问题时的错误值。来自 documentation:

This function returns the error code GPG_ERR_NO_ERROR if successful, or an eror code on failure.

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

home_dir is set to the given value, but this also happens if I pass a directory without a config file.

这是 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 ...

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