annotate lib/hmac-sha1.c @ 7296:33903d90fa2b

(argp_doc): Make sure NULL is not passed to dgettext
author Sergey Poznyakoff <gray@gnu.org.ua>
date Tue, 12 Sep 2006 09:06:40 +0000
parents 30ac46875fed
children a88f85e4728f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6364
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
1 /* hmac-sha1.c -- hashed message authentication codes
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
2 Copyright (C) 2005 Free Software Foundation, Inc.
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
3
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
6 the Free Software Foundation; either version 2, or (at your option)
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
7 any later version.
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
8
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
12 GNU General Public License for more details.
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
13
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
15 along with this program; if not, write to the Free Software Foundation,
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
17
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
18 /* Written by Simon Josefsson. */
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
19
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
20 #ifdef HAVE_CONFIG_H
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
21 # include <config.h>
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
22 #endif
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
23
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
24 #include "hmac.h"
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
25
6395
6777a0214f5d Include memxor.h.
Simon Josefsson <simon@josefsson.org>
parents: 6364
diff changeset
26 #include "memxor.h"
6364
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
27 #include "sha1.h"
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
28
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
29 #include <string.h>
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
30
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
31 #define IPAD 0x36
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
32 #define OPAD 0x5c
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
33
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
34 int
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
35 hmac_sha1 (const void *key, size_t keylen,
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
36 const void *in, size_t inlen, void *resbuf)
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
37 {
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
38 struct sha1_ctx inner;
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
39 struct sha1_ctx outer;
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
40 char optkeybuf[20];
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
41 char block[64];
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
42 char innerhash[20];
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
43
6410
30ac46875fed * hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible
Simon Josefsson <simon@josefsson.org>
parents: 6395
diff changeset
44 /* Reduce the key's size, so that it becomes <= 64 bytes large. */
30ac46875fed * hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible
Simon Josefsson <simon@josefsson.org>
parents: 6395
diff changeset
45
6364
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
46 if (keylen > 64)
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
47 {
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
48 struct sha1_ctx keyhash;
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
49
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
50 sha1_init_ctx (&keyhash);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
51 sha1_process_bytes (key, keylen, &keyhash);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
52 sha1_finish_ctx (&keyhash, optkeybuf);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
53
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
54 key = optkeybuf;
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
55 keylen = 20;
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
56 }
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
57
6410
30ac46875fed * hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible
Simon Josefsson <simon@josefsson.org>
parents: 6395
diff changeset
58 /* Compute INNERHASH from KEY and IN. */
30ac46875fed * hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible
Simon Josefsson <simon@josefsson.org>
parents: 6395
diff changeset
59
6364
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
60 sha1_init_ctx (&inner);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
61
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
62 memset (block, IPAD, sizeof (block));
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
63 memxor (block, key, keylen);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
64
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
65 sha1_process_block (block, 64, &inner);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
66 sha1_process_bytes (in, inlen, &inner);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
67
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
68 sha1_finish_ctx (&inner, innerhash);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
69
6410
30ac46875fed * hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible
Simon Josefsson <simon@josefsson.org>
parents: 6395
diff changeset
70 /* Compute result from KEY and INNERHASH. */
30ac46875fed * hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible
Simon Josefsson <simon@josefsson.org>
parents: 6395
diff changeset
71
6364
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
72 sha1_init_ctx (&outer);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
73
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
74 memset (block, OPAD, sizeof (block));
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
75 memxor (block, key, keylen);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
76
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
77 sha1_process_block (block, 64, &outer);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
78 sha1_process_bytes (innerhash, 20, &outer);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
79
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
80 sha1_finish_ctx (&outer, resbuf);
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
81
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
82 return 0;
fb852f022f3f Add hmac-sha1 module.
Simon Josefsson <simon@josefsson.org>
parents:
diff changeset
83 }