Fixed padding in pkcs#12
authorWerner Koch <wk@gnupg.org>
Fri, 16 Sep 2005 12:49:53 +0000 (12:49 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 16 Sep 2005 12:49:53 +0000 (12:49 +0000)
agent/ChangeLog
agent/minip12.c

index 3dfe2c2..8aa219d 100644 (file)
@@ -1,3 +1,8 @@
+2005-09-16  Werner Koch  <wk@g10code.com>
+
+       * minip12.c (build_key_sequence, build_cert_sequence): Fixed
+       padding.
+
 2005-09-15  Moritz Schulte  <moritz@g10code.com>
 
        * t-protect.c (test_agent_protect): Implemented.
index b4e836f..91eef63 100644 (file)
@@ -745,6 +745,15 @@ parse_bag_data (const unsigned char *buffer, size_t length, int startoffset,
   startoffset = 0;
   buffer = p = plain;
 
+/*   { */
+/* #  warning debug code is enabled */
+/*     FILE *fp = fopen ("tmp-rc2-plain-key.der", "wb"); */
+/*     if (!fp || fwrite (p, n, 1, fp) != 1) */
+/*       exit (2); */
+/*     fclose (fp); */
+/*   } */
+
+
   where = "decrypted-text";
   if (parse_tag (&p, &n, &ti) || ti.class || ti.tag != TAG_SEQUENCE)
     goto bailout;
@@ -1229,7 +1238,7 @@ build_key_sequence (gcry_mpi_t *kparms, size_t *r_length)
   assert (needed == plainlen);
   /* Append some pad characters; we already allocated extra space. */
   n = 8 - plainlen % 8;
-  for (;(plainlen % 8); plainlen++)
+  for (i=0; i < n; i++, plainlen++)
     *p++ = n;
 
   *r_length = plainlen;
@@ -1453,6 +1462,7 @@ build_cert_sequence (unsigned char *buffer, size_t buflen, size_t *r_length)
   size_t len[8], needed, n;
   unsigned char *p, *certseq;
   size_t certseqlen;
+  int i;
 
   /* Walk 8 steps down to collect the info: */
 
@@ -1535,7 +1545,7 @@ build_cert_sequence (unsigned char *buffer, size_t buflen, size_t *r_length)
   
   /* Append some pad characters; we already allocated extra space. */
   n = 8 - certseqlen % 8;
-  for (;(certseqlen % 8); certseqlen++)
+  for (i=0; i < n; i++, certseqlen++)
     *p++ = n;
   
   *r_length = certseqlen;