From 40959add1ba0efc1f4aa87fa075fa42423eff73c Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 24 Dec 2015 09:54:23 +0900 Subject: g10: fix regression of bkuptocard subcommand in --edit-key. * g10/keyedit.c (keyedit_menu): Call transfer_secret_keys. * g10/import.c (transfer_secret_keys): Make it global function. Allow stats==NULL. -- GnuPG-bug-id: 2169 --- g10/keyedit.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'g10/keyedit.c') diff --git a/g10/keyedit.c b/g10/keyedit.c index d958db8f3..15500ef1d 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -1922,7 +1922,6 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, case cmdBKUPTOCARD: case cmdCHECKBKUPKEY: - log_debug ("FIXME: This needs to be changed\n"); { /* Ask for a filename, check whether this is really a backup key as generated by the card generation, parse @@ -1975,6 +1974,7 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, if (cmd == cmdCHECKBKUPKEY) { + log_debug ("FIXME: This needs to be changed\n"); /* PKT_public_key *sk = node->pkt->pkt.secret_key; */ /* switch (is_secret_key_protected (sk)) */ /* { */ @@ -1996,14 +1996,21 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, /* } */ } else /* Store it. */ - { - if (card_store_subkey (node, 0)) - { - redisplay = 1; - sec_shadowing = 1; - } - } - release_kbnode (node); + { + /* We need to transfer it to gpg-agent. */ + err = transfer_secret_keys (ctrl, NULL, node, 1); + + /* Then, treat the pkt as a public key to call + card_store_subkey. */ + pkt->pkttype = PKT_PUBLIC_KEY; + + if (card_store_subkey (node, 0)) + { + redisplay = 1; + sec_shadowing = 1; + } + } + release_kbnode (node); } break; -- cgit v1.2.3