hmacmd5.h 1.46 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
19
20
 */

#ifndef ISC_HMACMD5_H
#define ISC_HMACMD5_H 1

#include <isc/lang.h>
#include <isc/md5.h>
Francis Dupont's avatar
Francis Dupont committed
21
#include <isc/platform.h>
22
23
24
25
#include <isc/types.h>

#define ISC_HMACMD5_KEYLENGTH 64

Francis Dupont's avatar
Francis Dupont committed
26
27
28
29
30
#ifdef ISC_PLATFORM_OPENSSLHASH
#include <openssl/hmac.h>

typedef HMAC_CTX isc_hmacmd5_t;

Evan Hunt's avatar
Evan Hunt committed
31
#elif PKCS11CRYPTO
32
#include <pk11/pk11.h>
Evan Hunt's avatar
Evan Hunt committed
33

34
typedef pk11_context_t isc_hmacmd5_t;
Evan Hunt's avatar
Evan Hunt committed
35

Francis Dupont's avatar
Francis Dupont committed
36
37
#else

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

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);

63
64
65
isc_boolean_t
isc_hmacmd5_verify2(isc_hmacmd5_t *ctx, unsigned char *digest, size_t len);

66
67
68
ISC_LANG_ENDDECLS

#endif /* ISC_HMACMD5_H */