18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * EAP common peer/server definitions
3fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt * Copyright (c) 2004-2014, 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_COMMON_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_COMMON_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "wpabuf.h"
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
14fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidtstruct erp_tlvs {
15fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	const u8 *keyname;
16fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	const u8 *domain;
17fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
18fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u8 keyname_len;
19fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt	u8 domain_len;
20fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt};
21fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt
2261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidtint eap_hdr_len_valid(const struct wpabuf *msg, size_t min_payload);
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtconst u8 * eap_hdr_validate(int vendor, EapType eap_type,
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			    const struct wpabuf *msg, size_t *plen);
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * eap_msg_alloc(int vendor, EapType type, size_t payload_len,
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			      u8 code, u8 identifier);
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid eap_update_len(struct wpabuf *msg);
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtu8 eap_get_id(const struct wpabuf *msg);
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry ShmidtEapType eap_get_type(const struct wpabuf *msg);
30fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidtint erp_parse_tlvs(const u8 *pos, const u8 *end, struct erp_tlvs *tlvs,
31fb45fd5cfed8bdccd0859c7fc05449fc187e2d06Dmitry Shmidt		   int stop_at_keyname);
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* EAP_COMMON_H */
34