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

时间:2016-01-21 13:27:21

标签: gnupg openpgp gpgme

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

gpgme_set_engine_info(GPGME_PROTOCOL_OpenPGP, NULL, CONFIG_DIR);

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

1 个答案:

答案 0 :(得分:1)

如果出现问题,该函数会返回错误值。来自documentation

  

如果成功,此函数返回错误代码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 ...

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