HS 2.0R2: Add common OSEN definitions
Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
230e373539
commit
a5d75636f9
10 changed files with 31 additions and 1 deletions
|
@ -201,6 +201,10 @@ L_CFLAGS += -DCONFIG_PEERKEY
|
||||||
OBJS += src/ap/peerkey_auth.c
|
OBJS += src/ap/peerkey_auth.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef CONFIG_HS20
|
||||||
|
NEED_AES_OMAC1=y
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211W
|
ifdef CONFIG_IEEE80211W
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211W
|
L_CFLAGS += -DCONFIG_IEEE80211W
|
||||||
NEED_SHA256=y
|
NEED_SHA256=y
|
||||||
|
|
|
@ -185,6 +185,10 @@ CFLAGS += -DCONFIG_PEERKEY
|
||||||
OBJS += ../src/ap/peerkey_auth.o
|
OBJS += ../src/ap/peerkey_auth.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef CONFIG_HS20
|
||||||
|
NEED_AES_OMAC1=y
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211W
|
ifdef CONFIG_IEEE80211W
|
||||||
CFLAGS += -DCONFIG_IEEE80211W
|
CFLAGS += -DCONFIG_IEEE80211W
|
||||||
NEED_SHA256=y
|
NEED_SHA256=y
|
||||||
|
|
|
@ -48,12 +48,14 @@ typedef enum { FALSE = 0, TRUE = 1 } Boolean;
|
||||||
#define WPA_KEY_MGMT_WAPI_PSK BIT(12)
|
#define WPA_KEY_MGMT_WAPI_PSK BIT(12)
|
||||||
#define WPA_KEY_MGMT_WAPI_CERT BIT(13)
|
#define WPA_KEY_MGMT_WAPI_CERT BIT(13)
|
||||||
#define WPA_KEY_MGMT_CCKM BIT(14)
|
#define WPA_KEY_MGMT_CCKM BIT(14)
|
||||||
|
#define WPA_KEY_MGMT_OSEN BIT(15)
|
||||||
|
|
||||||
static inline int wpa_key_mgmt_wpa_ieee8021x(int akm)
|
static inline int wpa_key_mgmt_wpa_ieee8021x(int akm)
|
||||||
{
|
{
|
||||||
return !!(akm & (WPA_KEY_MGMT_IEEE8021X |
|
return !!(akm & (WPA_KEY_MGMT_IEEE8021X |
|
||||||
WPA_KEY_MGMT_FT_IEEE8021X |
|
WPA_KEY_MGMT_FT_IEEE8021X |
|
||||||
WPA_KEY_MGMT_CCKM |
|
WPA_KEY_MGMT_CCKM |
|
||||||
|
WPA_KEY_MGMT_OSEN |
|
||||||
WPA_KEY_MGMT_IEEE8021X_SHA256));
|
WPA_KEY_MGMT_IEEE8021X_SHA256));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +84,8 @@ static inline int wpa_key_mgmt_sae(int akm)
|
||||||
static inline int wpa_key_mgmt_sha256(int akm)
|
static inline int wpa_key_mgmt_sha256(int akm)
|
||||||
{
|
{
|
||||||
return !!(akm & (WPA_KEY_MGMT_PSK_SHA256 |
|
return !!(akm & (WPA_KEY_MGMT_PSK_SHA256 |
|
||||||
WPA_KEY_MGMT_IEEE8021X_SHA256));
|
WPA_KEY_MGMT_IEEE8021X_SHA256 |
|
||||||
|
WPA_KEY_MGMT_OSEN));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int wpa_key_mgmt_wpa(int akm)
|
static inline int wpa_key_mgmt_wpa(int akm)
|
||||||
|
@ -106,6 +109,7 @@ static inline int wpa_key_mgmt_cckm(int akm)
|
||||||
#define WPA_PROTO_WPA BIT(0)
|
#define WPA_PROTO_WPA BIT(0)
|
||||||
#define WPA_PROTO_RSN BIT(1)
|
#define WPA_PROTO_RSN BIT(1)
|
||||||
#define WPA_PROTO_WAPI BIT(2)
|
#define WPA_PROTO_WAPI BIT(2)
|
||||||
|
#define WPA_PROTO_OSEN BIT(3)
|
||||||
|
|
||||||
#define WPA_AUTH_ALG_OPEN BIT(0)
|
#define WPA_AUTH_ALG_OPEN BIT(0)
|
||||||
#define WPA_AUTH_ALG_SHARED BIT(1)
|
#define WPA_AUTH_ALG_SHARED BIT(1)
|
||||||
|
|
|
@ -108,6 +108,11 @@ static int ieee802_11_parse_vendor_specific(const u8 *pos, size_t elen,
|
||||||
elems->hs20 = pos;
|
elems->hs20 = pos;
|
||||||
elems->hs20_len = elen;
|
elems->hs20_len = elen;
|
||||||
break;
|
break;
|
||||||
|
case HS20_OSEN_OUI_TYPE:
|
||||||
|
/* Hotspot 2.0 OSEN */
|
||||||
|
elems->osen = pos;
|
||||||
|
elems->osen_len = elen;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
wpa_printf(MSG_MSGDUMP, "Unknown WFA "
|
wpa_printf(MSG_MSGDUMP, "Unknown WFA "
|
||||||
"information element ignored "
|
"information element ignored "
|
||||||
|
|
|
@ -41,6 +41,7 @@ struct ieee802_11_elems {
|
||||||
const u8 *ext_capab;
|
const u8 *ext_capab;
|
||||||
const u8 *bss_max_idle_period;
|
const u8 *bss_max_idle_period;
|
||||||
const u8 *ssid_list;
|
const u8 *ssid_list;
|
||||||
|
const u8 *osen;
|
||||||
|
|
||||||
u8 ssid_len;
|
u8 ssid_len;
|
||||||
u8 supp_rates_len;
|
u8 supp_rates_len;
|
||||||
|
@ -69,6 +70,7 @@ struct ieee802_11_elems {
|
||||||
u8 hs20_len;
|
u8 hs20_len;
|
||||||
u8 ext_capab_len;
|
u8 ext_capab_len;
|
||||||
u8 ssid_list_len;
|
u8 ssid_list_len;
|
||||||
|
u8 osen_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum { ParseOK = 0, ParseUnknown = 1, ParseFailed = -1 } ParseRes;
|
typedef enum { ParseOK = 0, ParseUnknown = 1, ParseFailed = -1 } ParseRes;
|
||||||
|
|
|
@ -786,6 +786,7 @@ struct ieee80211_vht_operation {
|
||||||
#define WFD_IE_VENDOR_TYPE 0x506f9a0a
|
#define WFD_IE_VENDOR_TYPE 0x506f9a0a
|
||||||
#define WFD_OUI_TYPE 10
|
#define WFD_OUI_TYPE 10
|
||||||
#define HS20_IE_VENDOR_TYPE 0x506f9a10
|
#define HS20_IE_VENDOR_TYPE 0x506f9a10
|
||||||
|
#define OSEN_IE_VENDOR_TYPE 0x506f9a12
|
||||||
|
|
||||||
#define WMM_OUI_TYPE 2
|
#define WMM_OUI_TYPE 2
|
||||||
#define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0
|
#define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0
|
||||||
|
@ -901,6 +902,7 @@ enum {
|
||||||
|
|
||||||
#define HS20_INDICATION_OUI_TYPE 16
|
#define HS20_INDICATION_OUI_TYPE 16
|
||||||
#define HS20_ANQP_OUI_TYPE 17
|
#define HS20_ANQP_OUI_TYPE 17
|
||||||
|
#define HS20_OSEN_OUI_TYPE 18
|
||||||
#define HS20_STYPE_QUERY_LIST 1
|
#define HS20_STYPE_QUERY_LIST 1
|
||||||
#define HS20_STYPE_CAPABILITY_LIST 2
|
#define HS20_STYPE_CAPABILITY_LIST 2
|
||||||
#define HS20_STYPE_OPERATOR_FRIENDLY_NAME 3
|
#define HS20_STYPE_OPERATOR_FRIENDLY_NAME 3
|
||||||
|
|
|
@ -56,6 +56,11 @@ int wpa_eapol_key_mic(const u8 *key, int ver, const u8 *buf, size_t len,
|
||||||
case WPA_KEY_INFO_TYPE_AES_128_CMAC:
|
case WPA_KEY_INFO_TYPE_AES_128_CMAC:
|
||||||
return omac1_aes_128(key, buf, len, mic);
|
return omac1_aes_128(key, buf, len, mic);
|
||||||
#endif /* CONFIG_IEEE80211R || CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211R || CONFIG_IEEE80211W */
|
||||||
|
#ifdef CONFIG_HS20
|
||||||
|
case WPA_KEY_INFO_TYPE_AKM_DEFINED:
|
||||||
|
/* FIX: This should be based on negotiated AKM */
|
||||||
|
return omac1_aes_128(key, buf, len, mic);
|
||||||
|
#endif /* CONFIG_HS20 */
|
||||||
default:
|
default:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,6 +67,7 @@ WPA_CIPHER_GTK_NOT_USED)
|
||||||
#define RSN_AUTH_KEY_MGMT_FT_802_1X_SUITE_B_384 \
|
#define RSN_AUTH_KEY_MGMT_FT_802_1X_SUITE_B_384 \
|
||||||
RSN_SELECTOR(0x00, 0x0f, 0xac, 13)
|
RSN_SELECTOR(0x00, 0x0f, 0xac, 13)
|
||||||
#define RSN_AUTH_KEY_MGMT_CCKM RSN_SELECTOR(0x00, 0x40, 0x96, 0x00)
|
#define RSN_AUTH_KEY_MGMT_CCKM RSN_SELECTOR(0x00, 0x40, 0x96, 0x00)
|
||||||
|
#define RSN_AUTH_KEY_MGMT_OSEN RSN_SELECTOR(0x50, 0x6f, 0x9a, 0x01)
|
||||||
|
|
||||||
#define RSN_CIPHER_SUITE_NONE RSN_SELECTOR(0x00, 0x0f, 0xac, 0)
|
#define RSN_CIPHER_SUITE_NONE RSN_SELECTOR(0x00, 0x0f, 0xac, 0)
|
||||||
#define RSN_CIPHER_SUITE_WEP40 RSN_SELECTOR(0x00, 0x0f, 0xac, 1)
|
#define RSN_CIPHER_SUITE_WEP40 RSN_SELECTOR(0x00, 0x0f, 0xac, 1)
|
||||||
|
@ -157,6 +158,7 @@ RSN_SELECTOR(0x00, 0x0f, 0xac, 13)
|
||||||
|
|
||||||
/* IEEE 802.11, 8.5.2 EAPOL-Key frames */
|
/* IEEE 802.11, 8.5.2 EAPOL-Key frames */
|
||||||
#define WPA_KEY_INFO_TYPE_MASK ((u16) (BIT(0) | BIT(1) | BIT(2)))
|
#define WPA_KEY_INFO_TYPE_MASK ((u16) (BIT(0) | BIT(1) | BIT(2)))
|
||||||
|
#define WPA_KEY_INFO_TYPE_AKM_DEFINED 0
|
||||||
#define WPA_KEY_INFO_TYPE_HMAC_MD5_RC4 BIT(0)
|
#define WPA_KEY_INFO_TYPE_HMAC_MD5_RC4 BIT(0)
|
||||||
#define WPA_KEY_INFO_TYPE_HMAC_SHA1_AES BIT(1)
|
#define WPA_KEY_INFO_TYPE_HMAC_SHA1_AES BIT(1)
|
||||||
#define WPA_KEY_INFO_TYPE_AES_128_CMAC 3
|
#define WPA_KEY_INFO_TYPE_AES_128_CMAC 3
|
||||||
|
|
|
@ -280,6 +280,7 @@ ifdef CONFIG_HS20
|
||||||
OBJS += hs20_supplicant.c
|
OBJS += hs20_supplicant.c
|
||||||
L_CFLAGS += -DCONFIG_HS20
|
L_CFLAGS += -DCONFIG_HS20
|
||||||
CONFIG_INTERWORKING=y
|
CONFIG_INTERWORKING=y
|
||||||
|
NEED_AES_OMAC1=y
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_INTERWORKING
|
ifdef CONFIG_INTERWORKING
|
||||||
|
|
|
@ -286,6 +286,7 @@ ifdef CONFIG_HS20
|
||||||
OBJS += hs20_supplicant.o
|
OBJS += hs20_supplicant.o
|
||||||
CFLAGS += -DCONFIG_HS20
|
CFLAGS += -DCONFIG_HS20
|
||||||
CONFIG_INTERWORKING=y
|
CONFIG_INTERWORKING=y
|
||||||
|
NEED_AES_OMAC1=y
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_INTERWORKING
|
ifdef CONFIG_INTERWORKING
|
||||||
|
|
Loading…
Reference in a new issue