Annotation of embedaddon/strongswan/src/libtls/tls_prf.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2010 Martin Willi
3: * Copyright (C) 2010 revosec AG
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: /**
17: * @defgroup tls_prf tls_prf
18: * @{ @ingroup libtls
19: */
20:
21: #ifndef TLS_PRF_H_
22: #define TLS_PRF_H_
23:
24: typedef struct tls_prf_t tls_prf_t;
25:
26: #include <crypto/prfs/prf.h>
27:
28: /**
29: * The PRF function specified on TLS, based on HMAC.
30: */
31: struct tls_prf_t {
32:
33: /**
34: * Set the key of the PRF function.
35: *
36: * @param key key to set
37: * @return TRUE if key set successfully
38: */
39: bool (*set_key)(tls_prf_t *this, chunk_t key);
40:
41: /**
42: * Generate a series of bytes using a label and a seed.
43: *
44: * @param label ASCII input label
45: * @param seed seed input value
46: * @param bytes number of bytes to get
47: * @param out buffer receiving bytes
48: * @return TRUE if bytes generated successfully
49: */
50: bool (*get_bytes)(tls_prf_t *this, char *label, chunk_t seed,
51: size_t bytes, char *out);
52:
53: /**
54: * Destroy a tls_prf_t.
55: */
56: void (*destroy)(tls_prf_t *this);
57: };
58:
59: /**
60: * Create a tls_prf instance with specific algorithm as in TLS 1.2.
61: *
62: * @param prf underlying PRF function to use
63: * @return TLS PRF algorithm
64: */
65: tls_prf_t *tls_prf_create_12(pseudo_random_function_t prf);
66:
67: /**
68: * Create a tls_prf instance with XOred SHA1/MD5 as in TLS 1.0/1.1.
69: *
70: * @return TLS PRF algorithm
71: */
72: tls_prf_t *tls_prf_create_10();
73:
74: #endif /** TLS_PRF_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>