diff options
author | Daiki Ueno <ueno@unixuser.org> | 2011-05-24 12:25:51 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@unixuser.org> | 2011-05-24 15:11:08 +0900 |
commit | 3b12b9152ac81b756c23a487ae7922fdb310e738 (patch) | |
tree | cb746dd0b0540f8d8491a6e9defc82505aa3920c /cipher | |
parent | 2d559392b5d2044fc780bfec211f1af9317a5b8f (diff) | |
download | libgcrypt-3b12b9152ac81b756c23a487ae7922fdb310e738.tar.gz |
Simplify MGF1 by initializing MD handle at once.
Diffstat (limited to 'cipher')
-rw-r--r-- | cipher/ChangeLog | 4 | ||||
-rw-r--r-- | cipher/pubkey.c | 9 |
2 files changed, 7 insertions, 6 deletions
diff --git a/cipher/ChangeLog b/cipher/ChangeLog index c5477587..05ada481 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -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 diff --git a/cipher/pubkey.c b/cipher/pubkey.c index ba888f3d..c1b42874 100644 --- a/cipher/pubkey.c +++ b/cipher/pubkey.c @@ -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; } |