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