]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/wpa_supplicant/eap_tlv.h
This commit was generated by cvs2svn to compensate for changes in r152058,
[FreeBSD/FreeBSD.git] / contrib / wpa_supplicant / eap_tlv.h
1 #ifndef EAP_TLV_H
2 #define EAP_TLV_H
3
4 /* EAP-TLV TLVs (draft-josefsson-ppext-eap-tls-eap-07.txt) */
5 #define EAP_TLV_RESULT_TLV 3 /* Acknowledged Result */
6 #define EAP_TLV_NAK_TLV 4
7 #define EAP_TLV_CRYPTO_BINDING_TLV 5
8 #define EAP_TLV_CONNECTION_BINDING_TLV 6
9 #define EAP_TLV_VENDOR_SPECIFIC_TLV 7
10 #define EAP_TLV_URI_TLV 8
11 #define EAP_TLV_EAP_PAYLOAD_TLV 9
12 #define EAP_TLV_INTERMEDIATE_RESULT_TLV 10
13 #define EAP_TLV_PAC_TLV 11 /* draft-cam-winget-eap-fast-01.txt */
14 #define EAP_TLV_CRYPTO_BINDING_TLV_ 12 /* draft-cam-winget-eap-fast-01.txt */
15
16 #define EAP_TLV_RESULT_SUCCESS 1
17 #define EAP_TLV_RESULT_FAILURE 2
18
19 #define EAP_TLV_TYPE_MANDATORY 0x8000
20
21 struct eap_tlv_hdr {
22         u16 tlv_type;
23         u16 length;
24 };
25
26 struct eap_tlv_nak_tlv {
27         u16 tlv_type;
28         u16 length;
29         u32 vendor_id;
30         u16 nak_type;
31 } __attribute__((packed));
32
33 struct eap_tlv_result_tlv {
34         u16 tlv_type;
35         u16 length;
36         u16 status;
37 } __attribute__((packed));
38
39 struct eap_tlv_intermediate_result_tlv {
40         u16 tlv_type;
41         u16 length;
42         u16 status;
43 } __attribute__((packed));
44
45 struct eap_tlv_crypto_binding__tlv {
46         u16 tlv_type;
47         u16 length;
48         u8 reserved;
49         u8 version;
50         u8 received_version;
51         u8 subtype;
52         u8 nonce[32];
53         u8 compound_mac[20];
54 } __attribute__((packed));
55
56 struct eap_tlv_pac_ack_tlv {
57         u16 tlv_type;
58         u16 length;
59         u16 pac_type;
60         u16 pac_len;
61         u16 result;
62 } __attribute__((packed));
63
64 #define EAP_TLV_CRYPTO_BINDING_SUBTYPE_REQUEST 0
65 #define EAP_TLV_CRYPTO_BINDING_SUBTYPE_RESPONSE 1
66
67
68 u8 * eap_tlv_build_nak(int id, int nak_type, size_t *resp_len);
69 u8 * eap_tlv_build_result(int id, int status, size_t *resp_len);
70 int eap_tlv_process(struct eap_sm *sm, struct eap_method_ret *ret,
71                     struct eap_hdr *hdr, u8 **resp, size_t *resp_len);
72
73 #endif /* EAP_TLV_H */