mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
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
This commit is contained in:
parent
e684c634df
commit
40959add1b
15
g10/import.c
15
g10/import.c
@ -1318,7 +1318,7 @@ import_one (ctrl_t ctrl,
|
|||||||
function prints diagnostics and returns an error code. If BATCH is
|
function prints diagnostics and returns an error code. If BATCH is
|
||||||
true the secret keys are stored by gpg-agent in the transfer format
|
true the secret keys are stored by gpg-agent in the transfer format
|
||||||
(i.e. no re-protection and aksing for passphrases). */
|
(i.e. no re-protection and aksing for passphrases). */
|
||||||
static gpg_error_t
|
gpg_error_t
|
||||||
transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats, kbnode_t sec_keyblock,
|
transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats, kbnode_t sec_keyblock,
|
||||||
int batch)
|
int batch)
|
||||||
{
|
{
|
||||||
@ -1389,8 +1389,11 @@ transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats, kbnode_t sec_ke
|
|||||||
if (!ski)
|
if (!ski)
|
||||||
BUG ();
|
BUG ();
|
||||||
|
|
||||||
stats->count++;
|
if (stats)
|
||||||
stats->secret_read++;
|
{
|
||||||
|
stats->count++;
|
||||||
|
stats->secret_read++;
|
||||||
|
}
|
||||||
|
|
||||||
/* We ignore stub keys. The way we handle them in other parts
|
/* We ignore stub keys. The way we handle them in other parts
|
||||||
of the code is by asking the agent whether any secret key is
|
of the code is by asking the agent whether any secret key is
|
||||||
@ -1561,7 +1564,8 @@ transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats, kbnode_t sec_ke
|
|||||||
if (opt.verbose)
|
if (opt.verbose)
|
||||||
log_info (_("key %s: secret key imported\n"),
|
log_info (_("key %s: secret key imported\n"),
|
||||||
keystr_from_pk_with_sub (main_pk, pk));
|
keystr_from_pk_with_sub (main_pk, pk));
|
||||||
stats->secret_imported++;
|
if (stats)
|
||||||
|
stats->secret_imported++;
|
||||||
}
|
}
|
||||||
else if ( gpg_err_code (err) == GPG_ERR_EEXIST )
|
else if ( gpg_err_code (err) == GPG_ERR_EEXIST )
|
||||||
{
|
{
|
||||||
@ -1569,7 +1573,8 @@ transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats, kbnode_t sec_ke
|
|||||||
log_info (_("key %s: secret key already exists\n"),
|
log_info (_("key %s: secret key already exists\n"),
|
||||||
keystr_from_pk_with_sub (main_pk, pk));
|
keystr_from_pk_with_sub (main_pk, pk));
|
||||||
err = 0;
|
err = 0;
|
||||||
stats->secret_dups++;
|
if (stats)
|
||||||
|
stats->secret_dups++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1922,7 +1922,6 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
|
|||||||
|
|
||||||
case cmdBKUPTOCARD:
|
case cmdBKUPTOCARD:
|
||||||
case cmdCHECKBKUPKEY:
|
case cmdCHECKBKUPKEY:
|
||||||
log_debug ("FIXME: This needs to be changed\n");
|
|
||||||
{
|
{
|
||||||
/* Ask for a filename, check whether this is really a
|
/* Ask for a filename, check whether this is really a
|
||||||
backup key as generated by the card generation, parse
|
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)
|
if (cmd == cmdCHECKBKUPKEY)
|
||||||
{
|
{
|
||||||
|
log_debug ("FIXME: This needs to be changed\n");
|
||||||
/* PKT_public_key *sk = node->pkt->pkt.secret_key; */
|
/* PKT_public_key *sk = node->pkt->pkt.secret_key; */
|
||||||
/* switch (is_secret_key_protected (sk)) */
|
/* switch (is_secret_key_protected (sk)) */
|
||||||
/* { */
|
/* { */
|
||||||
@ -1996,14 +1996,21 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
|
|||||||
/* } */
|
/* } */
|
||||||
}
|
}
|
||||||
else /* Store it. */
|
else /* Store it. */
|
||||||
{
|
{
|
||||||
if (card_store_subkey (node, 0))
|
/* We need to transfer it to gpg-agent. */
|
||||||
{
|
err = transfer_secret_keys (ctrl, NULL, node, 1);
|
||||||
redisplay = 1;
|
|
||||||
sec_shadowing = 1;
|
/* Then, treat the pkt as a public key to call
|
||||||
}
|
card_store_subkey. */
|
||||||
}
|
pkt->pkttype = PKT_PUBLIC_KEY;
|
||||||
release_kbnode (node);
|
|
||||||
|
if (card_store_subkey (node, 0))
|
||||||
|
{
|
||||||
|
redisplay = 1;
|
||||||
|
sec_shadowing = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
release_kbnode (node);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -337,6 +337,8 @@ gpg_error_t import_old_secring (ctrl_t ctrl, const char *fname);
|
|||||||
import_stats_t import_new_stats_handle (void);
|
import_stats_t import_new_stats_handle (void);
|
||||||
void import_release_stats_handle (import_stats_t hd);
|
void import_release_stats_handle (import_stats_t hd);
|
||||||
void import_print_stats (import_stats_t hd);
|
void import_print_stats (import_stats_t hd);
|
||||||
|
gpg_error_t transfer_secret_keys (ctrl_t ctrl, struct import_stats_s *stats,
|
||||||
|
kbnode_t sec_keyblock, int batch);
|
||||||
|
|
||||||
int collapse_uids( KBNODE *keyblock );
|
int collapse_uids( KBNODE *keyblock );
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user