Annotation of embedaddon/strongswan/src/libtls/tls_eap.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_eap tls_eap
18: * @{ @ingroup libtls
19: */
20:
21: #ifndef TLS_EAP_H_
22: #define TLS_EAP_H_
23:
24: typedef struct tls_eap_t tls_eap_t;
25:
26: #include <eap/eap.h>
27:
28: #include "tls.h"
29:
30: /**
31: * TLS over EAP helper, as used by EAP-TLS and EAP-TTLS.
32: */
33: struct tls_eap_t {
34:
35: /**
36: * Initiate TLS/TTLS/TNC over EAP exchange (as client).
37: *
38: * @param out allocated EAP packet data to send
39: * @return
40: * - NEED_MORE if more exchanges required
41: * - FAILED if initiation failed
42: */
43: status_t (*initiate)(tls_eap_t *this, chunk_t *out);
44:
45: /**
46: * Process a received EAP-TLS/TTLS/TNC packet, create response.
47: *
48: * @param in EAP packet data to process
49: * @param out allocated EAP packet data to send
50: * @return
51: * - SUCCESS if TLS negotiation completed
52: * - FAILED if TLS negotiation failed
53: * - NEED_MORE if more exchanges required
54: */
55: status_t (*process)(tls_eap_t *this, chunk_t in, chunk_t *out);
56:
57: /**
58: * Get the EAP-MSK.
59: *
60: * @return MSK
61: */
62: chunk_t (*get_msk)(tls_eap_t *this);
63:
64: /**
65: * Get the current EAP identifier.
66: *
67: * @return identifier
68: */
69: uint8_t (*get_identifier)(tls_eap_t *this);
70:
71: /**
72: * Set the EAP identifier to a deterministic value, overwriting
73: * the randomly initialized default value.
74: *
75: * @param identifier EAP identifier
76: */
77: void (*set_identifier) (tls_eap_t *this, uint8_t identifier);
78:
79: /**
80: * Get the authentication details after completing the handshake.
81: *
82: * @return authentication details, internal data
83: */
84: auth_cfg_t* (*get_auth)(tls_eap_t *this);
85:
86: /**
87: * Destroy a tls_eap_t.
88: */
89: void (*destroy)(tls_eap_t *this);
90: };
91:
92: /**
93: * Create a tls_eap instance.
94: *
95: * @param type EAP type, EAP-TLS or EAP-TTLS
96: * @param tls TLS implementation
97: * @param frag_size maximum size of a TLS fragment we send
98: * @param max_msg_count maximum number of processed messages
99: * @param include_length if TRUE include length in non-fragmented packets
100: */
101: tls_eap_t *tls_eap_create(eap_type_t type, tls_t *tls, size_t frag_size,
102: int max_msg_count, bool include_length);
103:
104: #endif /** TLS_EAP_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>