1845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project/* 2845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * EAP peer method: EAP-TLV (draft-josefsson-pppext-eap-tls-eap-07.txt) 3845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi> 4845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * 5845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * This program is free software; you can redistribute it and/or modify 6845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * it under the terms of the GNU General Public License version 2 as 7845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * published by the Free Software Foundation. 8845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * 9845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * Alternatively, this software may be distributed under the terms of BSD 10845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * license. 11845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * 12845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * See README and COPYING for more details. 13845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project */ 14845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 15845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#ifndef EAP_TLV_H 16845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_H 17845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 18845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project/* EAP-TLV TLVs (draft-josefsson-ppext-eap-tls-eap-07.txt) */ 19845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_RESULT_TLV 3 /* Acknowledged Result */ 20845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_NAK_TLV 4 21845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_CRYPTO_BINDING_TLV 5 22845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_CONNECTION_BINDING_TLV 6 23845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_VENDOR_SPECIFIC_TLV 7 24845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_URI_TLV 8 25845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_EAP_PAYLOAD_TLV 9 26845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_INTERMEDIATE_RESULT_TLV 10 27845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_PAC_TLV 11 /* draft-cam-winget-eap-fast-01.txt */ 28845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_CRYPTO_BINDING_TLV_ 12 /* draft-cam-winget-eap-fast-01.txt */ 29845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 30845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_RESULT_SUCCESS 1 31845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_RESULT_FAILURE 2 32845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 33845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_TYPE_MANDATORY 0x8000 34845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 35845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#ifdef _MSC_VER 36845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#pragma pack(push, 1) 37845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#endif /* _MSC_VER */ 38845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 39845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct eap_tlv_hdr { 40845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 tlv_type; 41845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 length; 42845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project} STRUCT_PACKED; 43845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 44845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct eap_tlv_nak_tlv { 45845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 tlv_type; 46845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 length; 47845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u32 vendor_id; 48845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 nak_type; 49845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project} STRUCT_PACKED; 50845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 51845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct eap_tlv_result_tlv { 52845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 tlv_type; 53845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 length; 54845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 status; 55845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project} STRUCT_PACKED; 56845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 57845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct eap_tlv_intermediate_result_tlv { 58845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 tlv_type; 59845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 length; 60845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 status; 61845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project} STRUCT_PACKED; 62845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 63845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct eap_tlv_crypto_binding__tlv { 64845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 tlv_type; 65845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 length; 66845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u8 reserved; 67845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u8 version; 68845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u8 received_version; 69845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u8 subtype; 70845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u8 nonce[32]; 71845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u8 compound_mac[20]; 72845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project} STRUCT_PACKED; 73845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 74845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct eap_tlv_pac_ack_tlv { 75845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 tlv_type; 76845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 length; 77845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 pac_type; 78845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 pac_len; 79845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project u16 result; 80845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project} STRUCT_PACKED; 81845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 82845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#ifdef _MSC_VER 83845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#pragma pack(pop) 84845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#endif /* _MSC_VER */ 85845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 86845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_CRYPTO_BINDING_SUBTYPE_REQUEST 0 87845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define EAP_TLV_CRYPTO_BINDING_SUBTYPE_RESPONSE 1 88845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 89845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 90845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectu8 * eap_tlv_build_nak(int id, u16 nak_type, size_t *resp_len); 91845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectu8 * eap_tlv_build_result(int id, u16 status, size_t *resp_len); 92845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectint eap_tlv_process(struct eap_sm *sm, struct eap_method_ret *ret, 93845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project const struct eap_hdr *hdr, u8 **resp, size_t *resp_len, 94845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project int force_failure); 95845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project 96845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#endif /* EAP_TLV_H */ 97