问题标签 [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.

0 投票
1 回答
146 浏览

c++ - 使用 GPGME 加密灵活数量的数据

我目前正在编写一个 C++ 应用程序,并希望使用 GPGME 进行消息签名、加密和密钥管理。我知道我可以用这种方式加密数据:

但是正如人们所看到的,我必须使用 MAXLEN 作为读取缓冲区中加密数据的限制。有没有办法确定我的加密数据结果会提前多长时间(给定明文)?还是我必须接受静态限制?

0 投票
1 回答
403 浏览

encryption - Symmetric Encryption with GPGME

According to the documentation the gpgme_op_encrypt method of GPGME is able to perform symmetric encryption tasks:

If recp is NULL, symmetric rather than public key encryption is performed. Symmetrically encrypted cipher text can be deciphered with gpgme_op_decrypt. Note that in this case the crypto backend needs to retrieve a passphrase from the user. Symmetric encryption is currently only supported for the OpenPGP crypto backend.

But where does the key used for the symmetric encryption come from? Is it somehow possible to fetch this key and transfer it to another device (where I would like to decrypt the text) ?

0 投票
2 回答
439 浏览

c++ - 使用 GPGME 生成密钥时出错

我正在尝试使用 GPGME 生成一个新密钥,但不幸的是我无法使以下代码工作:

条件error == GPG_ERR_NO_ERROR不成立。事实上,没有任何错误检查条件。我的调试器只是告诉我值为error117440567。初始化如下所示:

我在这里没有任何错误。我完全能够使用 GnuPG 命令行创建密钥。那么使用 GPGME 创建密钥时出现的这个奇怪错误是什么意思呢?

UDAPTE:

感谢 Auges 的回答,我现在可以说这是GPG_ERR_INV_VALUE参数字符串格式错误的意思。但为什么?我是否必须用空格以外的东西来分隔这些值?

更新

我改变了内部的报价

但现在我得到一个GPG_ERR_GENERAL.

更新:

字符串现在看起来像:

但应用程序挂在gpgme_op_genkey.

0 投票
1 回答
1627 浏览

c++ - 为什么 GPGME / GnuPG 使用 pinentry 进行密码输入?

GPGME 使用一种passphrase_cb方法从用户那里获取密码以进行操作,这些操作需要访问私钥。这个回调只能被对称加密覆盖,在所有其他情况下,使用默认的 pinentry。

所有这些努力似乎都让人很不舒服,特别是因为 GPGME 是一个 API,它应该用于编程 C/C++/... 应用程序。在某些情况下,如果可以将密码短语直接传递给加密/签名函数,可能会更容易(对于想要使用 GPGME 的程序员)。我还看到 OpenPGP(更准确地说是 NetPGP)的其他实现使用回调。

所以我想知道是否有任何特定的安全理由这样做?

0 投票
1 回答
786 浏览

c# - GPG 加密在控制台调试模式下工作,但不在发布模式下(窗口服务)

我正在使用 gpg(GnuPG) 将 .csv 文件加密为 .gpg 文件。下面的代码是在调试模式下生成加密文件。当我在 Windows 服务下安装时,它会抛出异常。“gpg: <>C:\emp.csv: 跳过: 没有公钥 gpg: [stdin]: 加密失败: 没有公钥”。当我在“consoleapp.exe -c”等调试模式下运行服务时,它的工作原理</p>

0 投票
1 回答
944 浏览

php - OSX 上的 gnupg 和 gpgme lib 版本错误

看在上帝的份上,我无法使用 pecl 在我的 OS Yosemite 机器上安装 gnupg。

客观的:

安装 gnupg 模块以在 PHP 中使用以进行 PGP 加密。

到目前为止安装的东西:

安装 autoconf 后使用 brew 安装 gpgme。我的机器上既没有 brew 也没有 autoconf 。安装的 gpgme 版本是 1.6.0

问题:

当我这样做sudo pecl install gnupg时,它会尝试安装它但退出

我在下面粘贴完整的日志。

到目前为止我已经尝试过:

  • 我尝试通过 brew 命令安装 gnupg,它确实安装得很好,但我不能在 PHP 中使用它。
  • 尝试使用手动编译 gnupg phpize,但是当我运行命令configure时它们会触发相同的错误。make

请告诉我如何解决此版本问题。

0 投票
0 回答
111 浏览

java - 为什么在运行 gnupg-for-java 的 JUnit 测试时出现 NullPointerException?

我必须使用 GnuPG 和 Java 与客户交换加密和签名的文件。

所以我下载并编译了Java JNI绑定到gpgme库: https ://github.com/guardianproject/gnupg-for-java

但是当我运行测试套件时它失败了:

为什么我得到 NullPointerException?我能做些什么来修复它?

我的环境:

我通常在这台机器上使用 GnuPG:

0 投票
1 回答
221 浏览

java - 在 gnupg-for-java 中为 GnuPG 密钥提供密码

我有一个 Java 应用程序,它从远程机器获取 GnuPG 加密文件,我需要解密和处理它们。然后我需要加密输出文件并将其发送到远程机器。

起初我尝试过gnupg-for-javahttps://github.com/guardianproject/gnupg-for-java)。它有效,但它提示我输入密码来解密文件并签署加密文件。在文档中有“使用 GnuPG 2.x,gpg-agent 将处理提示用户输入密码短语以及密码短语缓存。

您知道如何在不提示用户的情况下提供密码吗?

0 投票
1 回答
197 浏览

gpgme - gpgme_op_export_keys 无效值

我一直在调试 gpgme。当我将日志级别提高到 9 时,我得到了发生错误的确切位置。

我有一个使用 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 在临时文件夹创建中不同于成功运行和失败运行。

好的:

坏的:

两个文件夹都遵循相同的命名方案。我不确定这里出了什么问题。

编辑:我慢慢地陷入了精神错乱。设置似乎不确定。偶尔按预期设置功能。有时它不会。我确保我有最新的库 - 安装了 gpg4win 并从那里复制了库 - 现在调试日志要么不显示调试条目,要么 gpg 停止一起寻找路径。当我尝试使用 OpenPGP 时,它现在会在稍后阶段失败。我估计原因还是一样的。

0 投票
1 回答
65 浏览

ruby - 如何使用 ruby​​-gpgme 加密 file_path?

我使用了以下模块

https://github.com/ueno/ruby-gpgme

我的加密代码库是这样的:

我不知道如何输入文件路径而不是纯文本文件。

任何建议表示赞赏。