如何在 C++ 应用程序中使用 GnuPG(不像命令行工具)?
How to use GnuPG in a C++ application (not command line tool like)?
我打算编写一个小应用程序,其基本思想是用户能够相互共享加密信息。是的,类似于 PGP。因此,我想重用 GnuPG 中的现有功能。
场景如下(非常简短):爱丽丝写了一个待办事项列表。应用程序使用对称密钥加密此列表,对称密钥使用 Alice 的 public 密钥并将列表保存在应用程序服务器上。现在 Alice 想与 Bob 共享此信息。因此,Alice 使用该应用程序将 Bob 添加到待办事项列表的读者中。该应用程序还使用 Bob 的 public 密钥加密待办事项列表的对称密钥并更新服务器数据。
如前所述,我知道这与 PGP 非常相似,我想在我的 C++ 应用程序中使用 GnuPG(就像使用 OpenSSL 一样,可以看出 here). But GnuPG is documented 就像一个命令行工具. 是否有任何 API 文档说明我如何在 C++ 应用程序中使用此功能?这甚至可能吗?
如果您想使用一个库来连接 GnuPG,GPGME is the way to go without the hassles of parsing GnuPG's output. There are several language bindings 连接它。
如果 GPGME 不匹配所需的操作,或者您不想使用该库(尽管应该推荐),请使用 --with-colons
和 --batch
选项以获得更容易解析的输出。与 gpg-agent
一起,您还可以通过现有的实现让您的应用程序提示用户输入密码,同时启用 GUI 提示输入密码。
我打算编写一个小应用程序,其基本思想是用户能够相互共享加密信息。是的,类似于 PGP。因此,我想重用 GnuPG 中的现有功能。
场景如下(非常简短):爱丽丝写了一个待办事项列表。应用程序使用对称密钥加密此列表,对称密钥使用 Alice 的 public 密钥并将列表保存在应用程序服务器上。现在 Alice 想与 Bob 共享此信息。因此,Alice 使用该应用程序将 Bob 添加到待办事项列表的读者中。该应用程序还使用 Bob 的 public 密钥加密待办事项列表的对称密钥并更新服务器数据。
如前所述,我知道这与 PGP 非常相似,我想在我的 C++ 应用程序中使用 GnuPG(就像使用 OpenSSL 一样,可以看出 here). But GnuPG is documented 就像一个命令行工具. 是否有任何 API 文档说明我如何在 C++ 应用程序中使用此功能?这甚至可能吗?
如果您想使用一个库来连接 GnuPG,GPGME is the way to go without the hassles of parsing GnuPG's output. There are several language bindings 连接它。
如果 GPGME 不匹配所需的操作,或者您不想使用该库(尽管应该推荐),请使用 --with-colons
和 --batch
选项以获得更容易解析的输出。与 gpg-agent
一起,您还可以通过现有的实现让您的应用程序提示用户输入密码,同时启用 GUI 提示输入密码。