aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2023-04-18 00:53:24 +0000
committerNIIBE Yutaka <[email protected]>2023-09-06 00:26:16 +0000
commit383d524239e325fca758ceca76b777e31b8ab538 (patch)
treec2cff793d19a6c441fbb723c2c29add2af85ecfd
parentgpg: Prepare enhancement of agent_probe_secret_key. (diff)
downloadgnupg-383d524239e325fca758ceca76b777e31b8ab538.tar.gz
gnupg-383d524239e325fca758ceca76b777e31b8ab538.zip
gpg: Allow overridden key import when stub exists.
* g10/import.c (do_transfer): Force importing when it's card reference. -- Cherry-picked from 2.4 branch: 2c1297055041b4657ea1a927acac978c2b09a483 GnuPG-bug-id: 3456 Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--g10/import.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/g10/import.c b/g10/import.c
index cd3363fc7..f11dedc8b 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -2836,9 +2836,19 @@ do_transfer (ctrl_t ctrl, kbnode_t keyblock, PKT_public_key *pk,
{
gpg_error_t err;
struct import_stats_s subkey_stats = {0};
+ int force = 0;
+ int already_exist = agent_probe_secret_key (ctrl, pk);
+
+ if (already_exist == 2)
+ {
+ if (!opt.quiet)
+ log_info (_("key %s: card reference is overridden by key material\n"),
+ keystr_from_pk (pk));
+ force = 1;
+ }
err = transfer_secret_keys (ctrl, &subkey_stats, keyblock,
- batch, 0, only_marked);
+ batch, force, only_marked);
if (gpg_err_code (err) == GPG_ERR_NOT_PROCESSED)
{
/* TRANSLATORS: For a smartcard, each private key on host has a