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

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