18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * EAP peer method: EAP-FAST PAC file processing
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef EAP_FAST_PAC_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_FAST_PAC_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "eap_common/eap_fast_common.h"
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct eap_fast_pac {
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct eap_fast_pac *next;
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 pac_key[EAP_FAST_PAC_KEY_LEN];
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 *pac_opaque;
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t pac_opaque_len;
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 *pac_info;
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t pac_info_len;
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 *a_id;
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t a_id_len;
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 *i_id;
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t i_id_len;
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 *a_id_info;
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t a_id_info_len;
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u16 pac_type;
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid eap_fast_free_pac(struct eap_fast_pac *pac);
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct eap_fast_pac * eap_fast_get_pac(struct eap_fast_pac *pac_root,
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				       const u8 *a_id, size_t a_id_len,
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				       u16 pac_type);
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_fast_add_pac(struct eap_fast_pac **pac_root,
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		     struct eap_fast_pac **pac_current,
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		     struct eap_fast_pac *entry);
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_fast_load_pac(struct eap_sm *sm, struct eap_fast_pac **pac_root,
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		      const char *pac_file);
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_fast_save_pac(struct eap_sm *sm, struct eap_fast_pac *pac_root,
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		      const char *pac_file);
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtsize_t eap_fast_pac_list_truncate(struct eap_fast_pac *pac_root,
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				  size_t max_len);
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_fast_load_pac_bin(struct eap_sm *sm, struct eap_fast_pac **pac_root,
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			  const char *pac_file);
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint eap_fast_save_pac_bin(struct eap_sm *sm, struct eap_fast_pac *pac_root,
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			  const char *pac_file);
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* EAP_FAST_PAC_H */
51