aboutsummaryrefslogtreecommitdiffstats
path: root/agent/command-ssh.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/command-ssh.c')
-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);