123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)/*
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * EAP proxy definitions
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * Copyright (c) 2011-2013 Qualcomm Atheros, Inc.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) *
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * This software may be distributed under the terms of the BSD license.
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * See README for more details.
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) */
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef EAP_PROXY_H
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define EAP_PROXY_H
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)struct eap_proxy_sm;
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)struct eapol_callbacks;
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)struct eap_sm;
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)struct eap_peer_config;
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum eap_proxy_status {
1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)	EAP_PROXY_FAILURE = 0x00,
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)	EAP_PROXY_SUCCESS
2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)};
2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)struct eap_proxy_sm *
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)eap_proxy_init(void *eapol_ctx, struct eapol_callbacks *eapol_cb,
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)	       void *msg_ctx);
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void eap_proxy_deinit(struct eap_proxy_sm *eap_proxy);
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint eap_proxy_key_available(struct eap_proxy_sm *sm);
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)const u8 * eap_proxy_get_eapKeyData(struct eap_proxy_sm *sm, size_t *len);
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)struct wpabuf * eap_proxy_get_eapRespData(struct eap_proxy_sm *sm);
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)int eap_proxy_sm_step(struct eap_proxy_sm *sm, struct eap_sm *eap_sm);
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)enum eap_proxy_status
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccieap_proxy_packet_update(struct eap_proxy_sm *eap_proxy, u8 *eapReqData,
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)			int eapReqDataLen);
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)int eap_proxy_sm_get_status(struct eap_proxy_sm *sm, char *buf, size_t buflen,
41			    int verbose);
42
43int eap_proxy_get_imsi(struct eap_proxy_sm *eap_proxy, char *imsi_buf,
44		       size_t *imsi_len);
45
46int eap_proxy_notify_config(struct eap_proxy_sm *sm,
47			    struct eap_peer_config *config);
48
49#endif /* EAP_PROXY_H */
50