diff --git a/g10/call-agent.c b/g10/call-agent.c index b17c2e65f..1ce6641af 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -2096,7 +2096,8 @@ inq_import_key_parms (void *opaque, const char *line) /* Call the agent to import a key into the agent. */ gpg_error_t agent_import_key (ctrl_t ctrl, const char *desc, char **cache_nonce_addr, - const void *key, size_t keylen, int unattended, int force) + const void *key, size_t keylen, int unattended, int force, + u32 *keyid, u32 *mainkeyid, int pubkey_algo) { gpg_error_t err; struct import_key_parm_s parm; @@ -2106,6 +2107,9 @@ agent_import_key (ctrl_t ctrl, const char *desc, char **cache_nonce_addr, memset (&dfltparm, 0, sizeof dfltparm); dfltparm.ctrl = ctrl; + dfltparm.keyinfo.keyid = keyid; + dfltparm.keyinfo.mainkeyid = mainkeyid; + dfltparm.keyinfo.pubkey_algo = pubkey_algo; err = start_agent (ctrl, 0); if (err) diff --git a/g10/call-agent.h b/g10/call-agent.h index dcabbe8ff..f45b64d90 100644 --- a/g10/call-agent.h +++ b/g10/call-agent.h @@ -186,7 +186,8 @@ gpg_error_t agent_keywrap_key (ctrl_t ctrl, int forexport, /* Send a key to the agent. */ gpg_error_t agent_import_key (ctrl_t ctrl, const char *desc, char **cache_nonce_addr, const void *key, - size_t keylen, int unattended, int force); + size_t keylen, int unattended, int force, + u32 *keyid, u32 *mainkeyid, int pubkey_algo); /* Receive a key from the agent. */ gpg_error_t agent_export_key (ctrl_t ctrl, const char *keygrip, diff --git a/g10/import.c b/g10/import.c index 02440ffd8..c87f49b06 100644 --- a/g10/import.c +++ b/g10/import.c @@ -2109,7 +2109,8 @@ transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats, { char *desc = gpg_format_keydesc (ctrl, pk, FORMAT_KEYDESC_IMPORT, 1); err = agent_import_key (ctrl, desc, &cache_nonce, - wrappedkey, wrappedkeylen, batch, force); + wrappedkey, wrappedkeylen, batch, force, + pk->keyid, pk->main_keyid, pk->pubkey_algo); xfree (desc); } if (!err)