导出c+中的gpg公钥+;使用gpgme 我需要通过GPGME在C++中输出公钥。我在gpgme_get_key调用中遇到问题,它返回[NO DATA]错误或[END OF FILE]错误
我尝试了gpgme_op_keylist_start,调用返回[NO DATA],模式为指纹、uid和名称导出c+中的gpg公钥+;使用gpgme 我需要通过GPGME在C++中输出公钥。我在gpgme_get_key调用中遇到问题,它返回[NO DATA]错误或[END OF FILE]错误,c++,gnupg,gpgme,C++,Gnupg,Gpgme,我尝试了gpgme_op_keylist_start,调用返回[NO DATA],模式为指纹、uid和名称 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_n
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;
budger@thaw:~/gpgme/ref$/导出
export.cpp:60:GPGME:文件结束
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$/导出\u新
分段错误(堆芯转储)我不得不使用gpgme_op_export()来搜索钥匙圈,而不是 获取密钥以使用gpgme_op_export_keys(),这会导致seg故障
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);