eap_tlv_common.h 2.6 KB

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