aboutsummaryrefslogtreecommitdiffstats
path: root/agent/command-ssh.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2016-10-20 03:05:15 +0000
committerNIIBE Yutaka <[email protected]>2016-10-20 03:05:15 +0000
commit82cbab906a3e72a98fdc16096f2f0451465969a2 (patch)
tree03b9e3b4a87abb2082ec628445b438520248337b /agent/command-ssh.c
parentdirmngr: improve VERSIONCHECK (diff)
downloadgnupg-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 '')
-rw-r--r--agent/command-ssh.c32
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);