mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
agent: Add --card option for READKEY.
* agent/findkey.c (agent_write_shadow_key): New. * agent/command-ssh.c (card_key_available): Use agent_write_shadow_key. * agent/learncard.c (agent_handle_learn): Likewise. * agent/command.c (cmd_readkey): Add --card option. -- Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
72a99f582d
commit
82cbab906a
5 changed files with 100 additions and 70 deletions
|
@ -2474,39 +2474,9 @@ card_key_available (ctrl_t ctrl, gcry_sexp_t *r_pk, char **cardsn)
|
|||
if ( agent_key_available (grip) )
|
||||
{
|
||||
/* (Shadow)-key is not available in our key storage. */
|
||||
unsigned char *shadow_info;
|
||||
unsigned char *tmp;
|
||||
|
||||
shadow_info = make_shadow_info (serialno, authkeyid);
|
||||
if (!shadow_info)
|
||||
{
|
||||
err = gpg_error_from_syserror ();
|
||||
xfree (pkbuf);
|
||||
gcry_sexp_release (s_pk);
|
||||
xfree (serialno);
|
||||
xfree (authkeyid);
|
||||
return err;
|
||||
}
|
||||
err = agent_shadow_key (pkbuf, shadow_info, &tmp);
|
||||
xfree (shadow_info);
|
||||
err = agent_write_shadow_key (grip, serialno, authkeyid, pkbuf, 0);
|
||||
if (err)
|
||||
{
|
||||
log_error (_("shadowing the key failed: %s\n"), gpg_strerror (err));
|
||||
xfree (pkbuf);
|
||||
gcry_sexp_release (s_pk);
|
||||
xfree (serialno);
|
||||
xfree (authkeyid);
|
||||
return err;
|
||||
}
|
||||
xfree (pkbuf);
|
||||
pkbuf = tmp;
|
||||
pkbuflen = gcry_sexp_canon_len (pkbuf, 0, NULL, NULL);
|
||||
assert (pkbuflen);
|
||||
|
||||
err = agent_write_private_key (grip, pkbuf, pkbuflen, 0);
|
||||
if (err)
|
||||
{
|
||||
log_error (_("error writing key: %s\n"), gpg_strerror (err));
|
||||
xfree (pkbuf);
|
||||
gcry_sexp_release (s_pk);
|
||||
xfree (serialno);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue