|
wpa_supplicant / hostapd 2.0
|
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
1.7.3