wpa_supplicant / hostapd 2.0

eap_tls_common.h

Go to the documentation of this file.
00001 
00010 #ifndef EAP_TLS_COMMON_H
00011 #define EAP_TLS_COMMON_H
00012 
00017 struct eap_ssl_data {
00022         struct tls_connection *conn;
00023 
00028         struct wpabuf *tls_out;
00029 
00034         size_t tls_out_pos;
00035 
00040         size_t tls_out_limit;
00041 
00046         struct wpabuf *tls_in;
00047 
00052         int phase2;
00053 
00058         struct eap_sm *eap;
00059 
00060         enum { MSG, FRAG_ACK, WAIT_FRAG_ACK } state;
00061         struct wpabuf tmpbuf;
00062 };
00063 
00064 
00065 /* EAP TLS Flags */
00066 #define EAP_TLS_FLAGS_LENGTH_INCLUDED 0x80
00067 #define EAP_TLS_FLAGS_MORE_FRAGMENTS 0x40
00068 #define EAP_TLS_FLAGS_START 0x20
00069 #define EAP_TLS_VERSION_MASK 0x07
00070 
00071  /* could be up to 128 bytes, but only the first 64 bytes are used */
00072 #define EAP_TLS_KEY_LEN 64
00073 
00074 
00075 int eap_server_tls_ssl_init(struct eap_sm *sm, struct eap_ssl_data *data,
00076                             int verify_peer);
00077 void eap_server_tls_ssl_deinit(struct eap_sm *sm, struct eap_ssl_data *data);
00078 u8 * eap_server_tls_derive_key(struct eap_sm *sm, struct eap_ssl_data *data,
00079                                char *label, size_t len);
00080 struct wpabuf * eap_server_tls_build_msg(struct eap_ssl_data *data,
00081                                          int eap_type, int version, u8 id);
00082 struct wpabuf * eap_server_tls_build_ack(u8 id, int eap_type, int version);
00083 int eap_server_tls_phase1(struct eap_sm *sm, struct eap_ssl_data *data);
00084 struct wpabuf * eap_server_tls_encrypt(struct eap_sm *sm,
00085                                        struct eap_ssl_data *data,
00086                                        const struct wpabuf *plain);
00087 int eap_server_tls_process(struct eap_sm *sm, struct eap_ssl_data *data,
00088                            struct wpabuf *respData, void *priv, int eap_type,
00089                            int (*proc_version)(struct eap_sm *sm, void *priv,
00090                                                int peer_version),
00091                            void (*proc_msg)(struct eap_sm *sm, void *priv,
00092                                             const struct wpabuf *respData));
00093 
00094 #endif /* EAP_TLS_COMMON_H */
00095 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines