Blame SOURCES/libgcrypt-1.5.3-pbkdf-speedup.patch

88000a
diff -up libgcrypt-1.5.3/cipher/kdf.c.pbkdf-speedup libgcrypt-1.5.3/cipher/kdf.c
88000a
--- libgcrypt-1.5.3/cipher/kdf.c.pbkdf-speedup	2014-01-21 15:49:22.676638703 +0100
88000a
+++ libgcrypt-1.5.3/cipher/kdf.c	2014-01-21 15:52:40.115047218 +0100
88000a
@@ -172,19 +172,21 @@ pkdf2 (const void *passphrase, size_t pa
88000a
       return ec;
88000a
     }
88000a
 
88000a
+  ec = gpg_err_code (gcry_md_setkey (md, passphrase, passphraselen));
88000a
+  if (ec)
88000a
+    {
88000a
+      gcry_md_close (md);
88000a
+      gcry_free (sbuf);
88000a
+      return ec;
88000a
+    }
88000a
+
88000a
   /* Step 3 and 4. */
88000a
   memcpy (sbuf, salt, saltlen);
88000a
   for (lidx = 1; lidx <= l; lidx++)
88000a
     {
88000a
       for (iter = 0; iter < iterations; iter++)
88000a
         {
88000a
-          ec = gpg_err_code (gcry_md_setkey (md, passphrase, passphraselen));
88000a
-          if (ec)
88000a
-            {
88000a
-              gcry_md_close (md);
88000a
-              gcry_free (sbuf);
88000a
-              return ec;
88000a
-            }
88000a
+          gcry_md_reset (md);
88000a
           if (!iter) /* Compute U_1:  */
88000a
             {
88000a
               sbuf[saltlen]     = (lidx >> 24);