我一直在调试 gpgme。当我将日志级别提高到 9 时,我得到了发生错误的确切位置。
GPGME 2017-06-02 16:25:42 <0x3968> gpgme_op_export_keys: enter: ctx=08A19D68, mode=0x10, keydata=089C4578
GPGME 2017-06-02 16:25:42 <0x3968> gpgme_op_export_keys: check: ctx=08A19D68, keys[0] = 089C4190 (9E799EB266729E930BE7A22B7650B73C8AD5436D)
GPGME 2017-06-02 16:25:42 <0x3968> gpgme_op_export_keys: error: Invalid value <GPGME>
我有一个使用 gpgme 的 c++ 库。当我在 Boost.Test 应用程序中使用该库时,不会发生错误。当我在 C# 应用程序中使用该库时,会发生错误。
我正在做的是从我的钥匙圈中导出一个私人 ascii 装甲钥匙。它始终是同一个指纹。我可以从这里去哪里,我需要在 gpgme 上验证以找出差异吗?
编辑:我有关于该问题的其他信息。我用我的应用程序重新分发了一些 gpgme 文件。即:libassuan-0.dll
, libgpg-error-0.dll
, libgpgme-11.dll
.
当我将整个安装复制到同一个文件夹中时,相同的调用运行没有错误。
这让我相信当我加载库时有一个后台设置正在运行。为我阅读文档gpgme_set_global_flag
可以看到有一些条目引用gpgconf
。
为了让我的应用程序能够以正确的配置运行,我需要导出什么?
编辑 2: gpgme.log 在临时文件夹创建中不同于成功运行和失败运行。
好的:
_gpgme_io_spawn: check: path=00444FB8, CreateProcess ready: hProcess=000005D0, hThread=000005CC, dwProcessID=6184, dwThreadId=16268
坏的:
_gpgme_io_spawn: check: path=001850E8, CreateProcess failed: ec=87
两个文件夹都遵循相同的命名方案。我不确定这里出了什么问题。
编辑:我慢慢地陷入了精神错乱。设置似乎不确定。偶尔按预期设置功能。有时它不会。我确保我有最新的库 - 安装了 gpg4win 并从那里复制了库 - 现在调试日志要么不显示调试条目,要么 gpg 停止一起寻找路径。当我尝试使用 OpenPGP 时,它现在会在稍后阶段失败。我估计原因还是一样的。