mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
agent: IMPORT_KEY with --force option fix.
* agent/cvt-openpgp.c (convert_from_openpgp_main): Add an option not to check existing key. (convert_from_openpgp): Ditto. (convert_from_openpgp_native): Call convert_from_openpgp_main with dontcare_exist=0. * agent/command.c (cmd_import_key): Call with dontcare_exist=force.
This commit is contained in:
parent
5ca57f1a69
commit
79b51bb872
@ -2151,7 +2151,7 @@ cmd_import_key (assuan_context_t ctx, char *line)
|
||||
|
||||
xfree (key);
|
||||
key = NULL;
|
||||
err = convert_from_openpgp (ctrl, openpgp_sexp, grip,
|
||||
err = convert_from_openpgp (ctrl, openpgp_sexp, force, grip,
|
||||
ctrl->server_local->keydesc, cache_nonce,
|
||||
&key, opt_unattended? NULL : &passphrase);
|
||||
if (err)
|
||||
|
@ -685,7 +685,7 @@ try_do_unprotect_cb (struct pin_entry_info_s *pi)
|
||||
silently decrypt the key; CACHE_NONCE and R_PASSPHRASE must both be
|
||||
NULL in this mode. */
|
||||
static gpg_error_t
|
||||
convert_from_openpgp_main (ctrl_t ctrl, gcry_sexp_t s_pgp,
|
||||
convert_from_openpgp_main (ctrl_t ctrl, gcry_sexp_t s_pgp, int dontcare_exist,
|
||||
unsigned char *grip, const char *prompt,
|
||||
const char *cache_nonce, const char *passphrase,
|
||||
unsigned char **r_key, char **r_passphrase)
|
||||
@ -894,7 +894,7 @@ convert_from_openpgp_main (ctrl_t ctrl, gcry_sexp_t s_pgp,
|
||||
if (err)
|
||||
goto leave;
|
||||
|
||||
if (!from_native && !agent_key_available (grip))
|
||||
if (!dontcare_exist && !from_native && !agent_key_available (grip))
|
||||
{
|
||||
err = gpg_error (GPG_ERR_EEXIST);
|
||||
goto leave;
|
||||
@ -1028,12 +1028,12 @@ convert_from_openpgp_main (ctrl_t ctrl, gcry_sexp_t s_pgp,
|
||||
the key. The keygrip will be stored at the 20 byte buffer pointed
|
||||
to by GRIP. On error NULL is stored at all return arguments. */
|
||||
gpg_error_t
|
||||
convert_from_openpgp (ctrl_t ctrl, gcry_sexp_t s_pgp,
|
||||
convert_from_openpgp (ctrl_t ctrl, gcry_sexp_t s_pgp, int dontcare_exist,
|
||||
unsigned char *grip, const char *prompt,
|
||||
const char *cache_nonce,
|
||||
unsigned char **r_key, char **r_passphrase)
|
||||
{
|
||||
return convert_from_openpgp_main (ctrl, s_pgp, grip, prompt,
|
||||
return convert_from_openpgp_main (ctrl, s_pgp, dontcare_exist, grip, prompt,
|
||||
cache_nonce, NULL,
|
||||
r_key, r_passphrase);
|
||||
}
|
||||
@ -1052,7 +1052,7 @@ convert_from_openpgp_native (ctrl_t ctrl,
|
||||
if (!passphrase)
|
||||
return gpg_error (GPG_ERR_INTERNAL);
|
||||
|
||||
err = convert_from_openpgp_main (ctrl, s_pgp, grip, NULL,
|
||||
err = convert_from_openpgp_main (ctrl, s_pgp, 0, grip, NULL,
|
||||
NULL, passphrase,
|
||||
r_key, NULL);
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
#define GNUPG_AGENT_CVT_OPENPGP_H
|
||||
|
||||
gpg_error_t convert_from_openpgp (ctrl_t ctrl, gcry_sexp_t s_pgp,
|
||||
int dontcare_exist,
|
||||
unsigned char *grip, const char *prompt,
|
||||
const char *cache_nonce,
|
||||
unsigned char **r_key, char **r_passphrase);
|
||||
|
Loading…
x
Reference in New Issue
Block a user