HS 2.0R2: Add common OSEN definitions

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2013-07-23 21:23:25 +03:00 committed by Jouni Malinen
parent 230e373539
commit a5d75636f9
10 changed files with 31 additions and 1 deletions

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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 "

View file

@ -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;

View file

@ -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

View file

@ -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;
} }

View file

@ -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

View file

@ -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

View file

@ -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