diff options
author | NIIBE Yutaka <[email protected]> | 2020-06-05 01:35:33 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2020-06-05 01:35:33 +0000 |
commit | 47c1c329ed823a562185f86e98ac903605104f11 (patch) | |
tree | 76c582e259525accb38469b6c3be455f883ac99b /agent/findkey.c | |
parent | agent: For ECC, use opaque MPI for key representation. (diff) | |
download | gnupg-47c1c329ed823a562185f86e98ac903605104f11.tar.gz gnupg-47c1c329ed823a562185f86e98ac903605104f11.zip |
agent,ecc: Use of opaque MPI for ECC, fixup 'd'.
* agent/Makefile.am: Add sexp-secret.c.
* agent/agent.h: New function declarations.
* agent/sexp-secret.c: New.
* agent/findkey.c (agent_key_from_file): Use sexp_sscan_private_key.
* agent/protect-tool.c (read_and_unprotect): Fix up private part,
calling fixup_when_ecc_private_key.
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'agent/findkey.c')
-rw-r--r-- | agent/findkey.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/agent/findkey.c b/agent/findkey.c index 7fb938b35..af42d6ece 100644 --- a/agent/findkey.c +++ b/agent/findkey.c @@ -968,7 +968,7 @@ agent_key_from_file (ctrl_t ctrl, const char *cache_nonce, { gpg_error_t err; unsigned char *buf; - size_t len, buflen, erroff; + size_t len, erroff; gcry_sexp_t s_skey; nvc_t keymeta = NULL; char *desc_text_buffer = NULL; /* Used in case we extend DESC_TEXT. */ @@ -1117,10 +1117,10 @@ agent_key_from_file (ctrl_t ctrl, const char *cache_nonce, return err; } - buflen = gcry_sexp_canon_len (buf, 0, NULL, NULL); - err = gcry_sexp_sscan (&s_skey, &erroff, (char*)buf, buflen); - wipememory (buf, buflen); + err = sexp_sscan_private_key (result, &erroff, buf); xfree (buf); + nvc_release (keymeta); + xfree (desc_text_buffer); if (err) { log_error ("failed to build S-Exp (off=%u): %s\n", @@ -1130,15 +1130,9 @@ agent_key_from_file (ctrl_t ctrl, const char *cache_nonce, xfree (*r_passphrase); *r_passphrase = NULL; } - nvc_release (keymeta); - xfree (desc_text_buffer); - return err; } - *result = s_skey; - nvc_release (keymeta); - xfree (desc_text_buffer); - return 0; + return err; } |