首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gpgme导出c++格式的gpg公钥

使用gpgme导出c++格式的gpg公钥
EN

Stack Overflow用户
提问于 2019-08-30 08:10:13
回答 1查看 150关注 0票数 0

我需要在c++中通过gpgme导出公钥。我有一个gpgme_get_key调用的问题,它返回一个无数据错误或and文件结束错误。

我尝试了gpgme_op_keylist_start,但调用没有返回以指纹、uid和姓名作为模式的数据。

代码语言:javascript
复制
 gpgme_ctx_t ctx;
 gpgme_error_t err;
 gpgme_data_t  out;
 gpgme_key_t key[4] = {NULL,NULL,NULL,NULL};
  gpgme_key_t ekey[2] = {NULL,NULL};

 init_gpgme (GPGME_PROTOCOL_OpenPGP);

   err = gpgme_new (&ctx);
   fail_if_err (err);
gpgme_set_armor (ctx,1);

/* Might want to comment gpgme_ctx_set_engine_info() below. */
    err = gpgme_ctx_set_engine_info (ctx,GPGME_PROTOCOL_OpenPGP,
      "/usr/local/bin/gpg","/root/budger/.gnupg");
    fail_if_err (err);

  /* Generate test keys. */
      err = gpgme_get_key (ctx,"203EBE6AD4860CDB33A66BE8809C3C1548861E13",&key[0],1);
  fail_if_err (err);


   err = gpgme_data_new (&out);
    fail_if_err (err);

    /* Export key[2] only. */
    ekey[0] = key[0];
      err = gpgme_op_export_keys (ctx,ekey,0,out);
     fail_if_err (err);

    fflush (NULL);
    fputs ("Begin Result:\n", stdout);
  print_data (out);
     fputs ("End Result.\n", stdout);
     gpgme_data_release (out);


 gpgme_release (ctx);
 return 0;

export.cpp:60: GPGME/ref$ ./export budger: GPGME:文件结束

代码语言:javascript
复制
gpgme_op_keylist_start (ctx, NULL, 0);
while (!(err = gpgme_op_keylist_next (ctx, &key[0]))){

   gpgme_op_export_keys(ctx, key, 0, out);
   print_data(out);

}

budger@thaw:~/gpgme/ref$ ./export_new分段错误(核心转储)

EN

回答 1

Stack Overflow用户

发布于 2019-08-30 11:52:16

为了使用呈现seg错误的gpgme_op_export_keys(),我不得不使用gpgme_op_export()来搜索密钥环,而不是获取密钥。

代码语言:javascript
复制
  gpgme_key_t key[1]={NULL};
  gpgme_data_t out;
  gpgme_data_new(&out);

  gpgme_set_armor (ctx,1);
  gpgme_op_export(ctx, "joe@foo.bar", 0, out);
  print_data(out);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57719006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档