scd: Fix regression for generating RSA keys on card.
authorNIIBE Yutaka <gniibe@fsij.org>
Mon, 14 Dec 2015 05:37:18 +0000 (14:37 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Mon, 14 Dec 2015 05:37:18 +0000 (14:37 +0900)
* scd/app-openpgp.c (do_genkey): Strip leading zeros for fingerprint
computation.

--

This bug is difficult to reproduce because the probability is 1/256,
and key generation takes long time.  The regression was introduced
when we add the support for ECC.

GnuPG-bug-id: 2150

scd/app-openpgp.c

index 581c5dd..92330ec 100644 (file)
@@ -3623,6 +3623,11 @@ do_genkey (app_t app, ctrl_t ctrl,  const char *keynostr, unsigned int flags,
   send_status_info (ctrl, "KEY-CREATED-AT",
                     numbuf, (size_t)strlen(numbuf), NULL, 0);
 
+  for (; mlen && !*m; mlen--, m++) /* strip leading zeroes */
+    ;
+  for (; elen && !*e; elen--, e++) /* strip leading zeroes */
+    ;
+
   rc = store_fpr (app, keyno, (u32)created_at, fprbuf, PUBKEY_ALGO_RSA,
                   m, mlen, e, elen);
   if (rc)