问题标签 [gpgme]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP gnupg enrypt 可以工作,但不能解密
我即将使用gnupg加密和解密文件。奇怪的是,加密工作正常,但解密总是返回 false。
这是一个加密和解密内容的简单 php 脚本:
版本
Debian 软件包
gpgv 1.4.18-7
libgpgme11:amd64 1.5.1-6
pecl
包版本状态 gnupg 1.4.0 stable
PHP版本: PHP 7.1.11-1+0~20171027135825.10+jessie~1.gbp2e638d
有人已经遇到过这个问题吗?我没主意了。先感谢您。
ruby - 如何使用 Ruby 使用 GPG 在 S3 中流式传输和解密大文件
我正在处理 S3 中需要解密并保存回 S3 的非常大的文件。我们的磁盘空间和内存有限,因此流媒体是我们的最佳选择。
我正在使用ruby-gpgme gem。
这是我到目前为止所拥有的:
这成功地解密并写入了第一个块,但在处理下一个块之前解密失败。
我假设这是因为第一个块没有正确终止,并且 .decrypt 没有连续地从流本身读取。
关于如何将块作为流传递来解密的任何想法?
c - 如何抑制来自 gpgme 的 valgrind 警告?
我试图在我的代码中使用 GPGME 来验证一些签名。然而,简单地初始化和释放 GPGME 上下文会导致 valgrind 发出大量警告。
例如:
编译它gcc -lgpgme -lassuan -lgpg-error main.c
,然后在 valgrind 下运行它。从valgrind -v ./a.out
开始,这段代码似乎启动了 6 个不同的进程。我已经复制了相关的警告信息:
总共为 6 个不同的进程重复了完全相同的一组警告。似乎 GPGME 试图关闭一些不属于自己的文件描述符。
我的问题是双重的:
- 我使用 gpgme API 错了吗?还有什么我需要做的吗?
- 如果 API 的使用是正确的,我该如何抑制来自 valgrind 的这些警告?
我似乎无法让 valgrind 对这些警告产生抑制作用。运行valgrind --gen-suppressions=all -v ./a.out
不会在输出中显示任何抑制。我想这是因为这些是警告而不是真正的错误。我尝试自己写一个抑制,但我不确定应该是什么类型。通常,当我不得不写抑制时,它们是为了Memcheck:Leak
. 但是这些警告属于哪一类呢?
编辑:这是我尝试写的一个抑制:
编辑 2:我试图提供赏金,但它已过期。如果你对此有一个有效的答案,我提供 100 代表的赏金。
ruby - GPG 从流中解密块
我正在尝试将几个大型对称加密的 .csv.gpg(每个 40GB+)文件从 S3 流式传输到 gnupg 到输出流。
我想使用流分块处理文件,这样我们就不需要将整个加密/解密文件下载到磁盘或内存中。
这是一个使用AWS Ruby S3 SDK下载对象块并将它们传递给 gnupg 进行解密的示例,使用 Ruby 2.5.0 和ruby-gpgme gem。
运行此程序时,我在 STDOUT 中看到有效的解密 CSV 数据(好!),直到它在第一个块的末尾失败:
~/.rvm/gems/ruby-2.5.0/gems/gpgme-2.0.14/lib/gpgme/ctx.rb:435:in `decrypt_verify': 解密失败 (GPGME::Error::DecryptFailed)
这就是我卡住的地方。
- gnupg 可以一次解密块还是必须在写入输出之前读取整个文件?
- 块是否需要具有一定的大小和/或以某种方式分隔?
任何反馈将不胜感激。
php - PHP Gnupg 没有在 phpinfo() 中显示为扩展,我不能在 php 中使用它
我使用自制软件安装了 gnupg 和 gpgme。我还链接了两者,并通过运行 brew gnupg install 和 brew gpgme install 确保它们已安装和链接,并收到确认安装和版本的消息。
我已将 gnupg.so 文件放在扩展路径中,并将 extension=gnupg.so 添加到 php.ini 文件中。
我从 infophp 页面获得了扩展路径和特定的 php.ini 路径。重新启动 mamp 后,我仍然看不到 gnupg 或 gpgme 作为 phpinfo 的扩展,我也不能在我的 php 代码中使用 gnupg。
使用$gpg = new \gnupg();
它会给我错误说 gnupg 类不存在。
我尝试了另一种方法:我还从他们的网站手动下载了 gnupg 和 gpgme 提取它们运行如下
。/配置,
制作,
须藤使安装,
并且能够再次成功安装,还确保 gnupg.so 位于 phpinfo 页面中显示的扩展路径相同的路径中,并且还添加extension=gnupg.so
到 phpinfo 页面中显示的相同 php.ini 中(我添加了 extension=gnupg .so 在 php.ini 文件中的所有其他扩展名之后)
我在用:
mac os 高山脉 10.13.3
php 7.1.12
地图 4.4.1
gnupg 2.2.5(我用 brew install 试过这个版本)
gnupg 1.4.0(我试过这个版本,从 gnupg.org 下载)
gpgme 1.10.0
我也想知道,在希望解决上述问题之后,我是否需要在我的 php 文件中包含任何内容才能使用 gnupg?
gnupg 和 gpgme 有什么区别?为了加密php中的文件,我需要两者吗?
如果我无法解决此问题,还有什么方法可以加密 xml 文件或包含文本数据的文件?我需要将文件和 FTP 加密到另一台服务器并在那里解密。
预先感谢大家的帮助
c++ - 如何使用 C++ GPGME 导入 GPG 密钥和解密文件
如何使用 GPGME C++ 库简单地加载 gpg 密钥以导入上下文?
我正在尝试构建一个使用 GPGME 解密文件的应用程序,但我很难理解 GPU 文档。我试图在网上搜索示例,但尚未遇到加载预先存在的 GPG 密钥的示例。我所做的尝试包括尝试创建一个上下文并加载一个预先存在的密钥,该密钥将用于根据此示例代码解密文件。
我不断收到“无效输入”作为响应错误,不知道为什么。我已经包含了删除了输出语句的代码,但是注释了它们的输出返回。
更新:修复上下文后,解密输出成功,尽管文件未正确解密并且似乎未成功添加密钥。我在下面提供了修改后的代码。
任何输入都非常感谢,在此先感谢!
python - 如何在基于 gpgme 的 Python 脚本中防止密码缓存?
以下简短的 Python 脚本采用三个命令行参数:密码、输入路径和输出路径。然后它使用密码短语解密输入路径的内容,并将解密的内容放入输出路径。
只要提供了正确的密码,此解密就可以正常工作,但显然会导致缓存此类正确的密码,因此任何后续解密尝试都会成功,而与提供的密码无关。(我在这篇文章的末尾给出了我的意思的更完整的说明,以及版本细节。)
显然,正在进行一些密码缓存,但我并不真正了解细节。
我想知道的是:如何修改 Python 脚本以禁用密码短语的缓存?请注意,我对如何在脚本之外禁用密码缓存不感兴趣!我希望脚本自动禁用密码缓存。那可能吗?
这是我上面提到的详细示例。该脚本./demo.py
是我上面列出的来源。重要提示:下面给出的代码仅在我从命令行执行时才显示。如果我将它放在一个文件中并作为脚本执行(或获取它),那么所有使用错误密码的解密都会失败,无论之前是否使用正确的密码成功解密。
ruby-on-rails - 解析解密的 PGP 电子邮件
我对使用 PGP 加密的解密电子邮件内容有疑问。当我使用 mail-gpg (或任何其他 gem)解密邮件时,结果不是邮件对象;它只是电子邮件的来源,类似于下面的结构。
我尝试使用邮件 gem 和另一个名为 mail_parser 的 gem,但它们都不能解析这个源。
以下是解密源的示例:
python - 如何在`pygpgme`中启用密码回调(而不是提示)?
我正在编写软件来检索加密文件,解密它们并定期使用其中包含的信息填充 AWS S3 上的数据湖。这些文件使用 GPG 密钥加密,我们使用pygpgme
( https://launchpad.net/pygpgme ) 包进行加密。我在 Mac 上,我安装了 GPG 2.2.16 和pygpgme
0.3。
我们用来解密文件的私钥有一个密码。
我尝试了多种在网上找到的技术/建议,包括:
- http://www.topdog.za.net/2012/05/23/python-modules-you-should-know:-pygpgme/
- 试图更改
Context().pinentry_mode
参数,这在我的版本中似乎不存在pygpgme
- 尝试将参数添加到
{GNUPGHOME}/gpg.conf
:- 批
- 使用代理
无禁用提示。
这是我用于分配密码回调的代码:
这是我的gpg.conf
:
尽管如此,每次我运行该服务时,都会在命令行中提示输入密码。如何让软件使用我提供的回调?