]> andersk Git - openssh.git/blob - hmac.c
831dd243a35e2791788708f5f1f8b22d321dcfc7
[openssh.git] / hmac.c
1 /*
2  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
16  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  */
24
25 #include "includes.h"
26 RCSID("$OpenBSD: hmac.c,v 1.7 2001/02/08 19:30:51 itojun Exp $");
27
28 #include "xmalloc.h"
29 #include "getput.h"
30 #include "log.h"
31
32 #include <openssl/hmac.h>
33
34 #include "hmac.h"
35
36 u_char *
37 hmac(
38     EVP_MD *evp_md,
39     u_int seqno,
40     u_char *data, int datalen,
41     u_char *key, int keylen)
42 {
43         HMAC_CTX c;
44         static u_char m[EVP_MAX_MD_SIZE];
45         u_char b[4];
46
47         if (key == NULL)
48                 fatal("hmac: no key");
49         HMAC_Init(&c, key, keylen, evp_md);
50         PUT_32BIT(b, seqno);
51         HMAC_Update(&c, b, sizeof b);
52         HMAC_Update(&c, data, datalen);
53         HMAC_Final(&c, m, NULL);
54         HMAC_cleanup(&c);
55         return(m);
56 }
This page took 0.026977 seconds and 3 git commands to generate.