Updated through tag hostap_2_5 from git://w1.fi/hostap.git
[mech_eap.git] / libeap / src / eap_common / eap_defs.h
index 482f9d2..708e50d 100644 (file)
@@ -1,15 +1,9 @@
 /*
  * EAP server/peer: Shared EAP definitions
- * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2014, Jouni Malinen <j@w1.fi>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Alternatively, this software may be distributed under the terms of BSD
- * license.
- *
- * See README and COPYING for more details.
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
  */
 
 #ifndef EAP_DEFS_H
@@ -37,11 +31,39 @@ struct eap_hdr {
 #endif /* _MSC_VER */
 
 enum { EAP_CODE_REQUEST = 1, EAP_CODE_RESPONSE = 2, EAP_CODE_SUCCESS = 3,
-       EAP_CODE_FAILURE = 4 };
+       EAP_CODE_FAILURE = 4, EAP_CODE_INITIATE = 5, EAP_CODE_FINISH = 6 };
 
 /* EAP Request and Response data begins with one octet Type. Success and
  * Failure do not have additional data. */
 
+/* Type field in EAP-Initiate and EAP-Finish messages */
+enum eap_erp_type {
+       EAP_ERP_TYPE_REAUTH_START = 1,
+       EAP_ERP_TYPE_REAUTH = 2,
+};
+
+/* ERP TV/TLV types */
+enum eap_erp_tlv_type {
+       EAP_ERP_TLV_KEYNAME_NAI = 1,
+       EAP_ERP_TV_RRK_LIFETIME = 2,
+       EAP_ERP_TV_RMSK_LIFETIME = 3,
+       EAP_ERP_TLV_DOMAIN_NAME = 4,
+       EAP_ERP_TLV_CRYPTOSUITES = 5,
+       EAP_ERP_TLV_AUTHORIZATION_INDICATION = 6,
+       EAP_ERP_TLV_CALLED_STATION_ID = 128,
+       EAP_ERP_TLV_CALLING_STATION_ID = 129,
+       EAP_ERP_TLV_NAS_IDENTIFIER = 130,
+       EAP_ERP_TLV_NAS_IP_ADDRESS = 131,
+       EAP_ERP_TLV_NAS_IPV6_ADDRESS = 132,
+};
+
+/* ERP Cryptosuite */
+enum eap_erp_cryptosuite {
+       EAP_ERP_CS_HMAC_SHA256_64 = 1,
+       EAP_ERP_CS_HMAC_SHA256_128 = 2,
+       EAP_ERP_CS_HMAC_SHA256_256 = 3,
+};
+
 /*
  * EAP Method Types as allocated by IANA:
  * http://www.iana.org/assignments/eap-numbers
@@ -70,9 +92,10 @@ typedef enum {
        EAP_TYPE_PSK = 47 /* RFC 4764 */,
        EAP_TYPE_SAKE = 48 /* RFC 4763 */,
        EAP_TYPE_IKEV2 = 49 /* RFC 5106 */,
-       EAP_TYPE_AKA_PRIME = 50 /* draft-arkko-eap-aka-kdf-10.txt */,
+       EAP_TYPE_AKA_PRIME = 50 /* RFC 5448 */,
        EAP_TYPE_GPSK = 51 /* RFC 5433 */,
        EAP_TYPE_PWD = 52 /* RFC 5931 */,
+       EAP_TYPE_EKE = 53 /* RFC 6124 */,
        EAP_TYPE_EXPANDED = 254 /* RFC 3748 */
 } EapType;
 
@@ -81,11 +104,20 @@ typedef enum {
 enum {
        EAP_VENDOR_IETF = 0,
        EAP_VENDOR_MICROSOFT = 0x000137 /* Microsoft */,
-       EAP_VENDOR_WFA = 0x00372A /* Wi-Fi Alliance */
+       EAP_VENDOR_WFA = 0x00372A /* Wi-Fi Alliance (moved to WBA) */,
+       EAP_VENDOR_HOSTAP = 39068 /* hostapd/wpa_supplicant project */,
+       EAP_VENDOR_WFA_NEW = 40808 /* Wi-Fi Alliance */
 };
 
+#define EAP_VENDOR_UNAUTH_TLS EAP_VENDOR_HOSTAP
+#define EAP_VENDOR_TYPE_UNAUTH_TLS 1
+
+#define EAP_VENDOR_WFA_UNAUTH_TLS 13
+
 #define EAP_MSK_LEN 64
 #define EAP_EMSK_LEN 64
+#define EAP_EMSK_NAME_LEN 8
+#define ERP_MAX_KEY_LEN 64
 
 #ifdef __cplusplus
 }