agent: Fix length detection of canonical formatted openpgp keys.
authorWerner Koch <wk@gnupg.org>
Tue, 21 May 2013 12:00:16 +0000 (13:00 +0100)
committerWerner Koch <wk@gnupg.org>
Wed, 22 May 2013 07:56:30 +0000 (09:56 +0200)
* agent/command.c (cmd_import_key): Pass 0 instead of KEYLEN to
gcry_sexp_canon_len.
--

We used to pass KEYLEN to the gcry_sexp_canon_len for no good reason:
convert_from_openpgp is guaranteed to return a valid canonical
S-expression and KEYLEN would thus act only as an upper limit.  This
is not a problem because usually the original input key is longer than
the returned unprotected key.  A future patch may change this
assertion and thus we better fix this bug now.

Signed-off-by: Werner Koch <wk@gnupg.org>
agent/command.c

index 823b233..e57c69d 100644 (file)
@@ -1924,7 +1924,7 @@ cmd_import_key (assuan_context_t ctx, char *line)
                                   &key, &passphrase);
       if (err)
         goto leave;
-      realkeylen = gcry_sexp_canon_len (key, keylen, NULL, &err);
+      realkeylen = gcry_sexp_canon_len (key, 0, NULL, &err);
       if (!realkeylen)
         goto leave; /* Invalid canonical encoded S-expression.  */
       if (passphrase)