139beb93cSSam Leffler /*
239beb93cSSam Leffler  * EAP peer method: EAP-FAST PAC file processing
339beb93cSSam Leffler  * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
439beb93cSSam Leffler  *
5*f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6*f05cddf9SRui Paulo  * See README for more details.
739beb93cSSam Leffler  */
839beb93cSSam Leffler 
939beb93cSSam Leffler #ifndef EAP_FAST_PAC_H
1039beb93cSSam Leffler #define EAP_FAST_PAC_H
1139beb93cSSam Leffler 
1239beb93cSSam Leffler #include "eap_common/eap_fast_common.h"
1339beb93cSSam Leffler 
1439beb93cSSam Leffler struct eap_fast_pac {
1539beb93cSSam Leffler 	struct eap_fast_pac *next;
1639beb93cSSam Leffler 
1739beb93cSSam Leffler 	u8 pac_key[EAP_FAST_PAC_KEY_LEN];
1839beb93cSSam Leffler 	u8 *pac_opaque;
1939beb93cSSam Leffler 	size_t pac_opaque_len;
2039beb93cSSam Leffler 	u8 *pac_info;
2139beb93cSSam Leffler 	size_t pac_info_len;
2239beb93cSSam Leffler 	u8 *a_id;
2339beb93cSSam Leffler 	size_t a_id_len;
2439beb93cSSam Leffler 	u8 *i_id;
2539beb93cSSam Leffler 	size_t i_id_len;
2639beb93cSSam Leffler 	u8 *a_id_info;
2739beb93cSSam Leffler 	size_t a_id_info_len;
2839beb93cSSam Leffler 	u16 pac_type;
2939beb93cSSam Leffler };
3039beb93cSSam Leffler 
3139beb93cSSam Leffler 
3239beb93cSSam Leffler void eap_fast_free_pac(struct eap_fast_pac *pac);
3339beb93cSSam Leffler struct eap_fast_pac * eap_fast_get_pac(struct eap_fast_pac *pac_root,
3439beb93cSSam Leffler 				       const u8 *a_id, size_t a_id_len,
3539beb93cSSam Leffler 				       u16 pac_type);
3639beb93cSSam Leffler int eap_fast_add_pac(struct eap_fast_pac **pac_root,
3739beb93cSSam Leffler 		     struct eap_fast_pac **pac_current,
3839beb93cSSam Leffler 		     struct eap_fast_pac *entry);
3939beb93cSSam Leffler int eap_fast_load_pac(struct eap_sm *sm, struct eap_fast_pac **pac_root,
4039beb93cSSam Leffler 		      const char *pac_file);
4139beb93cSSam Leffler int eap_fast_save_pac(struct eap_sm *sm, struct eap_fast_pac *pac_root,
4239beb93cSSam Leffler 		      const char *pac_file);
4339beb93cSSam Leffler size_t eap_fast_pac_list_truncate(struct eap_fast_pac *pac_root,
4439beb93cSSam Leffler 				  size_t max_len);
4539beb93cSSam Leffler int eap_fast_load_pac_bin(struct eap_sm *sm, struct eap_fast_pac **pac_root,
4639beb93cSSam Leffler 			  const char *pac_file);
4739beb93cSSam Leffler int eap_fast_save_pac_bin(struct eap_sm *sm, struct eap_fast_pac *pac_root,
4839beb93cSSam Leffler 			  const char *pac_file);
4939beb93cSSam Leffler 
5039beb93cSSam Leffler #endif /* EAP_FAST_PAC_H */
51