aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2017-07-24 14:03:25 +0000
committerMarcus Brinkmann <[email protected]>2017-07-24 14:03:25 +0000
commitd8e46f10698da0bee4cd58d95f1f9832bdda0c5f (patch)
tree05e314438ad7886b8983e206ed228307dd69ea6f
parentdoc: Revert the bug reporting address to bugs.gnupg.org (diff)
downloadgnupg-d8e46f10698da0bee4cd58d95f1f9832bdda0c5f.tar.gz
gnupg-d8e46f10698da0bee4cd58d95f1f9832bdda0c5f.zip
g10: Make sure to emit NEED_PASSPHRASE on --export-secret-key.
* call-agent.h (agent_export_key): Add keyid parameters. * call-agent.c (agent_export_key): Set keyid parameters. * export.c (receive_seckey_from_agent): Pass keyid parameters. Signed-off-by: Marcus Brinkmann <[email protected]> GnuPG-bug-id: 2667
Diffstat (limited to '')
-rw-r--r--g10/call-agent.c6
-rw-r--r--g10/call-agent.h3
-rw-r--r--g10/export.c3
3 files changed, 9 insertions, 3 deletions
diff --git a/g10/call-agent.c b/g10/call-agent.c
index 3ad13e874..b17c2e65f 100644
--- a/g10/call-agent.c
+++ b/g10/call-agent.c
@@ -2152,7 +2152,8 @@ agent_import_key (ctrl_t ctrl, const char *desc, char **cache_nonce_addr,
gpg_error_t
agent_export_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
int openpgp_protected, char **cache_nonce_addr,
- unsigned char **r_result, size_t *r_resultlen)
+ unsigned char **r_result, size_t *r_resultlen,
+ u32 *keyid, u32 *mainkeyid, int pubkey_algo)
{
gpg_error_t err;
struct cache_nonce_parm_s cn_parm;
@@ -2164,6 +2165,9 @@ agent_export_key (ctrl_t ctrl, const char *hexkeygrip, const char *desc,
memset (&dfltparm, 0, sizeof dfltparm);
dfltparm.ctrl = ctrl;
+ dfltparm.keyinfo.keyid = keyid;
+ dfltparm.keyinfo.mainkeyid = mainkeyid;
+ dfltparm.keyinfo.pubkey_algo = pubkey_algo;
*r_result = NULL;
diff --git a/g10/call-agent.h b/g10/call-agent.h
index a04fc734c..dcabbe8ff 100644
--- a/g10/call-agent.h
+++ b/g10/call-agent.h
@@ -192,7 +192,8 @@ gpg_error_t agent_import_key (ctrl_t ctrl, const char *desc,
gpg_error_t agent_export_key (ctrl_t ctrl, const char *keygrip,
const char *desc, int openpgp_protected,
char **cache_nonce_addr,
- unsigned char **r_result, size_t *r_resultlen);
+ unsigned char **r_result, size_t *r_resultlen,
+ u32 *keyid, u32 *mainkeyid, int pubkey_algo);
/* Delete a key from the agent. */
gpg_error_t agent_delete_key (ctrl_t ctrl, const char *hexkeygrip,
diff --git a/g10/export.c b/g10/export.c
index ce79a2ffd..8f6371b30 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -1190,7 +1190,8 @@ receive_seckey_from_agent (ctrl_t ctrl, gcry_cipher_hd_t cipherhd,
prompt = gpg_format_keydesc (ctrl, pk, FORMAT_KEYDESC_EXPORT,1);
err = agent_export_key (ctrl, hexgrip, prompt, !cleartext, cache_nonce_addr,
- &wrappedkey, &wrappedkeylen);
+ &wrappedkey, &wrappedkeylen,
+ pk->keyid, pk->main_keyid, pk->pubkey_algo);
xfree (prompt);
if (err)