hmacmd5.h 1.74 KB
Newer Older
1
/*
2
 * Copyright (C) 2000, 2001, 2004-2007, 2009, 2014, 2016-2018  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
#ifdef ISC_PLATFORM_OPENSSLHASH
31
#include <openssl/opensslv.h>
Francis Dupont's avatar
Francis Dupont committed
32 33
#include <openssl/hmac.h>

34 35
typedef struct {
	HMAC_CTX *ctx;
36
#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
37 38 39
	HMAC_CTX _ctx;
#endif
} isc_hmacmd5_t;
Francis Dupont's avatar
Francis Dupont committed
40

Evan Hunt's avatar
Evan Hunt committed
41
#elif PKCS11CRYPTO
42
#include <pk11/pk11.h>
Evan Hunt's avatar
Evan Hunt committed
43

44
typedef pk11_context_t isc_hmacmd5_t;
Evan Hunt's avatar
Evan Hunt committed
45

Francis Dupont's avatar
Francis Dupont committed
46 47
#else

48 49 50 51
typedef struct {
	isc_md5_t md5ctx;
	unsigned char key[ISC_HMACMD5_KEYLENGTH];
} isc_hmacmd5_t;
Francis Dupont's avatar
Francis Dupont committed
52
#endif
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72

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

73 74 75
isc_boolean_t
isc_hmacmd5_verify2(isc_hmacmd5_t *ctx, unsigned char *digest, size_t len);

76 77 78
isc_boolean_t
isc_hmacmd5_check(int testing);

79 80
ISC_LANG_ENDDECLS

81 82
#endif /* !PK11_MD5_DISABLE */

83
#endif /* ISC_HMACMD5_H */