X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fhmac-sha1.c;h=f7a3fda43eae4884cb12da8dc4c2b1ff78022b11;hb=fdba88ca5c48680a219e742f0b3d480daf74703d;hp=9c95791295b50ab26ee9818dd9549f3ab06c0c47;hpb=11ad180881e62f7d8758936af419c2cc88e9cf79;p=gnulib.git diff --git a/lib/hmac-sha1.c b/lib/hmac-sha1.c index 9c9579129..f7a3fda43 100644 --- a/lib/hmac-sha1.c +++ b/lib/hmac-sha1.c @@ -41,6 +41,8 @@ hmac_sha1 (const void *key, size_t keylen, char block[64]; char innerhash[20]; + /* Reduce the key's size, so that it becomes <= 64 bytes large. */ + if (keylen > 64) { struct sha1_ctx keyhash; @@ -53,6 +55,8 @@ hmac_sha1 (const void *key, size_t keylen, keylen = 20; } + /* Compute INNERHASH from KEY and IN. */ + sha1_init_ctx (&inner); memset (block, IPAD, sizeof (block)); @@ -63,6 +67,8 @@ hmac_sha1 (const void *key, size_t keylen, sha1_finish_ctx (&inner, innerhash); + /* Compute result from KEY and INNERHASH. */ + sha1_init_ctx (&outer); memset (block, OPAD, sizeof (block));