X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fhmac-md5.c;h=3f8b82787124b2f55eebf13fe082b151220ea77e;hb=bed5facc8ba8813aec741ae883a5021f4bc6339e;hp=ecd071496049b0e23d75b83712aa80cf00ac92c9;hpb=11ad180881e62f7d8758936af419c2cc88e9cf79;p=gnulib.git diff --git a/lib/hmac-md5.c b/lib/hmac-md5.c index ecd071496..3f8b82787 100644 --- a/lib/hmac-md5.c +++ b/lib/hmac-md5.c @@ -1,5 +1,5 @@ /* hmac-md5.c -- hashed message authentication codes - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -12,14 +12,11 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program; if not, see . */ /* Written by Simon Josefsson. */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include #include "hmac.h" @@ -33,7 +30,7 @@ int hmac_md5 (const void *key, size_t keylen, - const void *in, size_t inlen, void *resbuf) + const void *in, size_t inlen, void *resbuf) { struct md5_ctx inner; struct md5_ctx outer; @@ -41,6 +38,8 @@ hmac_md5 (const void *key, size_t keylen, char block[64]; char innerhash[16]; + /* Reduce the key's size, so that it becomes <= 64 bytes large. */ + if (keylen > 64) { struct md5_ctx keyhash; @@ -53,6 +52,8 @@ hmac_md5 (const void *key, size_t keylen, keylen = 16; } + /* Compute INNERHASH from KEY and IN. */ + md5_init_ctx (&inner); memset (block, IPAD, sizeof (block)); @@ -63,6 +64,8 @@ hmac_md5 (const void *key, size_t keylen, md5_finish_ctx (&inner, innerhash); + /* Compute result from KEY and INNERHASH. */ + md5_init_ctx (&outer); memset (block, OPAD, sizeof (block));