Annotation of embedaddon/strongswan/src/libstrongswan/crypto/mac.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2012 Tobias Brunner
3: * Copyright (C) 2005-2008 Martin Willi
4: * Copyright (C) 2005 Jan Hutter
5: * HSR Hochschule fuer Technik Rapperswil
6: *
7: * This program is free software; you can redistribute it and/or modify it
8: * under the terms of the GNU General Public License as published by the
9: * Free Software Foundation; either version 2 of the License, or (at your
10: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
11: *
12: * This program is distributed in the hope that it will be useful, but
13: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15: * for more details.
16: */
17:
18: /**
19: * @defgroup mac mac
20: * @{ @ingroup crypto
21: */
22:
23: #ifndef MAC_H_
24: #define MAC_H_
25:
26: typedef struct mac_t mac_t;
27:
28: #include <library.h>
29:
30: /**
31: * Generic interface for message authentication codes.
32: *
33: * Classes implementing this interface can use the PRF and signer wrappers.
34: */
35: struct mac_t {
36:
37: /**
38: * Generate message authentication code.
39: *
40: * If out is NULL, no result is given back. A next call will
41: * append the data to already supplied data. If out is not NULL,
42: * the MAC of all appended data is calculated, written to out and the
43: * internal state is reset.
44: *
45: * @param data chunk of data to authenticate
46: * @param out pointer where the generated bytes will be written
47: * @return TRUE if MAC generated successfully
48: */
49: bool (*get_mac)(mac_t *this, chunk_t data,
50: uint8_t *out) __attribute__((warn_unused_result));
51:
52: /**
53: * Get the size of the resulting MAC.
54: *
55: * @return block size in bytes
56: */
57: size_t (*get_mac_size)(mac_t *this);
58:
59: /**
60: * Set the key to be used for the MAC.
61: *
62: * Any key length must be accepted.
63: *
64: * @param key key to set
65: * @return TRUE if key set successfully
66: */
67: bool (*set_key)(mac_t *this,
68: chunk_t key) __attribute__((warn_unused_result));
69:
70: /**
71: * Destroys a mac_t object.
72: */
73: void (*destroy) (mac_t *this);
74: };
75:
76: #endif /** MAC_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>