diff options
Diffstat (limited to '')
-rw-r--r-- | g10/keyedit.c | 25 |
1 files changed, 16 insertions, 9 deletions
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; |