Simplify MGF1 by initializing MD handle at once.
authorDaiki Ueno <ueno@unixuser.org>
Tue, 24 May 2011 03:25:51 +0000 (12:25 +0900)
committerDaiki Ueno <ueno@unixuser.org>
Tue, 24 May 2011 06:11:08 +0000 (15:11 +0900)
cipher/ChangeLog
cipher/pubkey.c

index c547758..05ada48 100644 (file)
@@ -1,3 +1,7 @@
+2011-05-24  Daiki Ueno  <ueno@unixuser.org>
+
+       * pubkey.c (mgf1): Simplify initializing MD handle.
+
 2011-05-23  Daiki Ueno  <ueno@unixuser.org>
 
        * pubkey.c (pkcs1_decode_for_encryption, oaep_decode): Fix memleak
index ba888f3..c1b4287 100644 (file)
@@ -1000,7 +1000,7 @@ mgf1 (unsigned char *output, size_t outlen, unsigned char *seed, size_t seedlen,
   gcry_error_t err;
   unsigned char *p;
 
-  err = gcry_md_test_algo (algo);
+  err = gcry_md_open (&hd, algo, 0);
   if (err)
     return gpg_err_code (err);
 
@@ -1015,10 +1015,7 @@ mgf1 (unsigned char *output, size_t outlen, unsigned char *seed, size_t seedlen,
       c[2] = (idx >> 8) & 0xFF;
       c[3] = idx & 0xFF;
 
-      err = gcry_md_open (&hd, algo, 0);
-      if (err)
-       return gpg_err_code (err);
-
+      gcry_md_reset (hd);
       gcry_md_write (hd, seed, seedlen);
       gcry_md_write (hd, c, 4);
       digest = gcry_md_read (hd, 0);
@@ -1026,8 +1023,8 @@ mgf1 (unsigned char *output, size_t outlen, unsigned char *seed, size_t seedlen,
        memcpy (p, digest, dlen);
       else
        memcpy (p, digest, outlen - (p - output));
-      gcry_md_close (hd);
     }
+  gcry_md_close (hd);
   return GPG_ERR_NO_ERROR;
 }