diff options
author | NIIBE Yutaka <[email protected]> | 2016-10-20 03:05:15 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2016-10-20 03:05:15 +0000 |
commit | 82cbab906a3e72a98fdc16096f2f0451465969a2 (patch) | |
tree | 03b9e3b4a87abb2082ec628445b438520248337b /agent/command-ssh.c | |
parent | dirmngr: improve VERSIONCHECK (diff) | |
download | gnupg-82cbab906a3e72a98fdc16096f2f0451465969a2.tar.gz gnupg-82cbab906a3e72a98fdc16096f2f0451465969a2.zip |
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 <[email protected]>
Diffstat (limited to 'agent/command-ssh.c')
-rw-r--r-- | agent/command-ssh.c | 32 |
1 files changed, 1 insertions, 31 deletions
diff --git a/agent/command-ssh.c b/agent/command-ssh.c index 083b8d890..7bcda504c 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -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); - 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); + err = agent_write_shadow_key (grip, serialno, authkeyid, pkbuf, 0); if (err) { - log_error (_("error writing key: %s\n"), gpg_strerror (err)); xfree (pkbuf); gcry_sexp_release (s_pk); xfree (serialno); |