hmacmd5.h 1.54 KB
Newer Older
1
/*
2
 * Copyright (C) 2000, 2001, 2004-2007, 2009, 2014, 2016  Internet Systems Consortium, Inc. ("ISC")
3
 *
4
5
6
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
8
 */

Automatic Updater's avatar
Automatic Updater committed
9
/* $Id: hmacmd5.h,v 1.14 2009/02/06 23:47:42 tbox Exp $ */
10

11
/*! \file isc/hmacmd5.h
12
13
 * \brief This is the header file for the HMAC-MD5 keyed hash algorithm
 * described in RFC2104.
14
15
16
17
18
 */

#ifndef ISC_HMACMD5_H
#define ISC_HMACMD5_H 1

19
20
21
22
#include <pk11/site.h>

#ifndef PK11_MD5_DISABLE

23
24
#include <isc/lang.h>
#include <isc/md5.h>
Francis Dupont's avatar
Francis Dupont committed
25
#include <isc/platform.h>
26
27
28
29
#include <isc/types.h>

#define ISC_HMACMD5_KEYLENGTH 64

Francis Dupont's avatar
Francis Dupont committed
30
31
32
33
34
#ifdef ISC_PLATFORM_OPENSSLHASH
#include <openssl/hmac.h>

typedef HMAC_CTX isc_hmacmd5_t;

Evan Hunt's avatar
Evan Hunt committed
35
#elif PKCS11CRYPTO
36
#include <pk11/pk11.h>
Evan Hunt's avatar
Evan Hunt committed
37

38
typedef pk11_context_t isc_hmacmd5_t;
Evan Hunt's avatar
Evan Hunt committed
39

Francis Dupont's avatar
Francis Dupont committed
40
41
#else

42
43
44
45
typedef struct {
	isc_md5_t md5ctx;
	unsigned char key[ISC_HMACMD5_KEYLENGTH];
} isc_hmacmd5_t;
Francis Dupont's avatar
Francis Dupont committed
46
#endif
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

ISC_LANG_BEGINDECLS

void
isc_hmacmd5_init(isc_hmacmd5_t *ctx, const unsigned char *key,
		 unsigned int len);

void
isc_hmacmd5_invalidate(isc_hmacmd5_t *ctx);

void
isc_hmacmd5_update(isc_hmacmd5_t *ctx, const unsigned char *buf,
		   unsigned int len);

void
isc_hmacmd5_sign(isc_hmacmd5_t *ctx, unsigned char *digest);

isc_boolean_t
isc_hmacmd5_verify(isc_hmacmd5_t *ctx, unsigned char *digest);

67
68
69
isc_boolean_t
isc_hmacmd5_verify2(isc_hmacmd5_t *ctx, unsigned char *digest, size_t len);

70
71
ISC_LANG_ENDDECLS

72
73
#endif /* !PK11_MD5_DISABLE */

74
#endif /* ISC_HMACMD5_H */