Home | History | Annotate | Download | only in eap_common
      1 /*
      2  * EAP-TLV definitions (draft-josefsson-pppext-eap-tls-eap-10.txt)
      3  * Copyright (c) 2004-2008, Jouni Malinen <j (at) w1.fi>
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License version 2 as
      7  * published by the Free Software Foundation.
      8  *
      9  * Alternatively, this software may be distributed under the terms of BSD
     10  * license.
     11  *
     12  * See README and COPYING for more details.
     13  */
     14 
     15 #ifndef EAP_TLV_COMMON_H
     16 #define EAP_TLV_COMMON_H
     17 
     18 /* EAP-TLV TLVs (draft-josefsson-ppext-eap-tls-eap-10.txt) */
     19 #define EAP_TLV_RESULT_TLV 3 /* Acknowledged Result */
     20 #define EAP_TLV_NAK_TLV 4
     21 #define EAP_TLV_ERROR_CODE_TLV 5
     22 #define EAP_TLV_CONNECTION_BINDING_TLV 6
     23 #define EAP_TLV_VENDOR_SPECIFIC_TLV 7
     24 #define EAP_TLV_URI_TLV 8
     25 #define EAP_TLV_EAP_PAYLOAD_TLV 9
     26 #define EAP_TLV_INTERMEDIATE_RESULT_TLV 10
     27 #define EAP_TLV_PAC_TLV 11 /* RFC 5422, Section 4.2 */
     28 #define EAP_TLV_CRYPTO_BINDING_TLV 12
     29 #define EAP_TLV_CALLING_STATION_ID_TLV 13
     30 #define EAP_TLV_CALLED_STATION_ID_TLV 14
     31 #define EAP_TLV_NAS_PORT_TYPE_TLV 15
     32 #define EAP_TLV_SERVER_IDENTIFIER_TLV 16
     33 #define EAP_TLV_IDENTITY_TYPE_TLV 17
     34 #define EAP_TLV_SERVER_TRUSTED_ROOT_TLV 18
     35 #define EAP_TLV_REQUEST_ACTION_TLV 19
     36 #define EAP_TLV_PKCS7_TLV 20
     37 
     38 #define EAP_TLV_RESULT_SUCCESS 1
     39 #define EAP_TLV_RESULT_FAILURE 2
     40 
     41 #define EAP_TLV_TYPE_MANDATORY 0x8000
     42 #define EAP_TLV_TYPE_MASK 0x3fff
     43 
     44 #ifdef _MSC_VER
     45 #pragma pack(push, 1)
     46 #endif /* _MSC_VER */
     47 
     48 struct eap_tlv_hdr {
     49 	be16 tlv_type;
     50 	be16 length;
     51 } STRUCT_PACKED;
     52 
     53 struct eap_tlv_nak_tlv {
     54 	be16 tlv_type;
     55 	be16 length;
     56 	be32 vendor_id;
     57 	be16 nak_type;
     58 } STRUCT_PACKED;
     59 
     60 struct eap_tlv_result_tlv {
     61 	be16 tlv_type;
     62 	be16 length;
     63 	be16 status;
     64 } STRUCT_PACKED;
     65 
     66 /* RFC 4851, Section 4.2.7 - Intermediate-Result TLV */
     67 struct eap_tlv_intermediate_result_tlv {
     68 	be16 tlv_type;
     69 	be16 length;
     70 	be16 status;
     71 	/* Followed by optional TLVs */
     72 } STRUCT_PACKED;
     73 
     74 /* RFC 4851, Section 4.2.8 - Crypto-Binding TLV */
     75 struct eap_tlv_crypto_binding_tlv {
     76 	be16 tlv_type;
     77 	be16 length;
     78 	u8 reserved;
     79 	u8 version;
     80 	u8 received_version;
     81 	u8 subtype;
     82 	u8 nonce[32];
     83 	u8 compound_mac[20];
     84 } STRUCT_PACKED;
     85 
     86 struct eap_tlv_pac_ack_tlv {
     87 	be16 tlv_type;
     88 	be16 length;
     89 	be16 pac_type;
     90 	be16 pac_len;
     91 	be16 result;
     92 } STRUCT_PACKED;
     93 
     94 /* RFC 4851, Section 4.2.9 - Request-Action TLV */
     95 struct eap_tlv_request_action_tlv {
     96 	be16 tlv_type;
     97 	be16 length;
     98 	be16 action;
     99 } STRUCT_PACKED;
    100 
    101 /* RFC 5422, Section 4.2.6 - PAC-Type TLV */
    102 struct eap_tlv_pac_type_tlv {
    103 	be16 tlv_type; /* PAC_TYPE_PAC_TYPE */
    104 	be16 length;
    105 	be16 pac_type;
    106 } STRUCT_PACKED;
    107 
    108 #ifdef _MSC_VER
    109 #pragma pack(pop)
    110 #endif /* _MSC_VER */
    111 
    112 #define EAP_TLV_CRYPTO_BINDING_SUBTYPE_REQUEST 0
    113 #define EAP_TLV_CRYPTO_BINDING_SUBTYPE_RESPONSE 1
    114 
    115 #define EAP_TLV_ACTION_PROCESS_TLV 1
    116 #define EAP_TLV_ACTION_NEGOTIATE_EAP 2
    117 
    118 #endif /* EAP_TLV_COMMON_H */
    119