gpt4 book ai didi

C GPGMe 忽略用户 key 环

转载 作者:行者123 更新时间:2023-12-02 17:43:17 28 4
gpt4 key购买 nike

我最近完成了一个程序,该程序将公钥下载到内存中,然后使用所有公钥创建一条加密消息。但是,我在创建仅包含我下载的 key 的列表时遇到了一些困难。首次下载时,它们存储在 gpgme_data_t 中。我无法找到将其直接转换为 gpgme_key_t 的函数。因此,我只是将它们导入到新的上下文中。但是,当我再次导出 key 以构建 gpgme_op_encrypt 列表时,我最终得到了本地 key 环中的其他 key 。我尝试设置 disable-gpgconf,但这并没有改变任何东西。我还尝试将 GNUPGHOME 设置为 tmp 目录,但这在我调用加密时导致了段错误。有没有办法不导入用户的 key 环或将 gpgme_data_tchar* 转换为 gpgme_key_t

最佳答案

Is there a way not to import the user's keyring

为了防止加载用户 key 环,您需要将上下文的 GnuPG homedir 设置为其他位置。

下面是一个没有任何错误检查的示例

#include <gpgme.h>
#include <locale.h>

int main() {
gpgme_ctx_t ctx; // the context
gpgme_error_t err; // errors
gpgme_key_t key; // the key
gpgme_keylist_result_t result; // the keylist results

setlocale (LC_ALL, ""); // set the locale
gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL)); // set gpgme locale
gpgme_check_version(NULL); // initialize gpgme

gpgme_new (&ctx); // initialize the context

gpgme_ctx_set_engine_info (ctx, GPGME_PROTOCOL_OpenPGP, NULL, "/tmp/xyz"); // set the context GNUPGHOME to "/tmp/xyz"

gpgme_op_keylist_start (ctx, NULL, 0); // start the keylist

while (!(err = gpgme_op_keylist_next (ctx, &key))) { // loop through the keys in the keyring
fprintf(stdout, "Key ID: %s\n", key->subkeys->keyid); // print out the keyid
gpgme_key_unref (key); // release the key reference
}

gpgme_release(ctx); // release the context, all done

return 0;
}

关于C GPGMe 忽略用户 key 环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29676626/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com