From c6d591092d881dff0e5e410b01e522fac74e177d Mon Sep 17 00:00:00 2001 From: Ashok Ponnaiah Date: Wed, 16 May 2018 16:25:05 +0530 Subject: [PATCH] qcacmn: Add support for new key mgmt Add support for FILS, OWE & DPP key mgmt. Change-Id: I51b899e86a0d29051af55c422e64764d762767d3 Crs-Fixed: 2243109 --- .../crypto/inc/wlan_crypto_global_def.h | 6 +++++ .../crypto/src/wlan_crypto_def_i.h | 12 ++++++++-- .../crypto/src/wlan_crypto_global_api.c | 24 +++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/umac/cmn_services/crypto/inc/wlan_crypto_global_def.h b/umac/cmn_services/crypto/inc/wlan_crypto_global_def.h index 623c533841..200d03372e 100644 --- a/umac/cmn_services/crypto/inc/wlan_crypto_global_def.h +++ b/umac/cmn_services/crypto/inc/wlan_crypto_global_def.h @@ -165,6 +165,12 @@ typedef enum wlan_crypto_key_mgmt { WLAN_CRYPTO_KEY_MGMT_OSEN = 15, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B = 16, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B_192 = 17, + WLAN_CRYPTO_KEY_MGMT_FILS_SHA256 = 18, + WLAN_CRYPTO_KEY_MGMT_FILS_SHA384 = 19, + WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA256 = 20, + WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA384 = 21, + WLAN_CRYPTO_KEY_MGMT_OWE = 22, + WLAN_CRYPTO_KEY_MGMT_DPP = 23, } wlan_crypto_key_mgmt; /** diff --git a/umac/cmn_services/crypto/src/wlan_crypto_def_i.h b/umac/cmn_services/crypto/src/wlan_crypto_def_i.h index a318a439cc..e4735deec1 100644 --- a/umac/cmn_services/crypto/src/wlan_crypto_def_i.h +++ b/umac/cmn_services/crypto/src/wlan_crypto_def_i.h @@ -247,9 +247,17 @@ static inline void wlan_crypto_put_be64(u8 *a, u64 val) WLAN_RSN_SEL(12) #define RSN_AUTH_KEY_MGMT_FT_802_1X_SUITE_B_192\ WLAN_RSN_SEL(13) +#define RSN_AUTH_KEY_MGMT_FILS_SHA256 WLAN_RSN_SEL(14) +#define RSN_AUTH_KEY_MGMT_FILS_SHA384 WLAN_RSN_SEL(15) +#define RSN_AUTH_KEY_MGMT_FT_FILS_SHA256\ + WLAN_RSN_SEL(16) +#define RSN_AUTH_KEY_MGMT_FT_FILS_SHA384\ + WLAN_RSN_SEL(17) +#define RSN_AUTH_KEY_MGMT_OWE WLAN_RSN_SEL(18) -#define RSN_AUTH_KEY_MGMT_CCKM WLAN_RSN_CCKM_AKM -#define RSN_AUTH_KEY_MGMT_OSEN (0x019a6f50) +#define RSN_AUTH_KEY_MGMT_CCKM (WLAN_RSN_CCKM_AKM) +#define RSN_AUTH_KEY_MGMT_OSEN (0x019a6f50) +#define RSN_AUTH_KEY_MGMT_DPP (WLAN_RSN_DPP_AKM) #define RSN_CIPHER_SUITE_NONE WLAN_RSN_SEL(WLAN_CSE_NONE) #define RSN_CIPHER_SUITE_WEP40 WLAN_RSN_SEL(WLAN_CSE_WEP40) diff --git a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c index 2109643de7..9b8bea8f9f 100644 --- a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c +++ b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c @@ -1838,6 +1838,18 @@ wlan_crypto_rsn_keymgmt_to_suite(uint32_t keymgmt) return RSN_AUTH_KEY_MGMT_CCKM; case WLAN_CRYPTO_KEY_MGMT_OSEN: return RSN_AUTH_KEY_MGMT_OSEN; + case WLAN_CRYPTO_KEY_MGMT_FILS_SHA256: + return RSN_AUTH_KEY_MGMT_FILS_SHA256; + case WLAN_CRYPTO_KEY_MGMT_FILS_SHA384: + return RSN_AUTH_KEY_MGMT_FILS_SHA384; + case WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA256: + return RSN_AUTH_KEY_MGMT_FT_FILS_SHA256; + case WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA384: + return RSN_AUTH_KEY_MGMT_FT_FILS_SHA384; + case WLAN_CRYPTO_KEY_MGMT_OWE: + return RSN_AUTH_KEY_MGMT_OWE; + case WLAN_CRYPTO_KEY_MGMT_DPP: + return RSN_AUTH_KEY_MGMT_DPP; } return status; @@ -1978,6 +1990,18 @@ static int32_t wlan_crypto_rsn_suite_to_keymgmt(uint8_t *sel) return WLAN_CRYPTO_KEY_MGMT_CCKM; case RSN_AUTH_KEY_MGMT_OSEN: return WLAN_CRYPTO_KEY_MGMT_OSEN; + case RSN_AUTH_KEY_MGMT_FILS_SHA256: + return WLAN_CRYPTO_KEY_MGMT_FILS_SHA256; + case RSN_AUTH_KEY_MGMT_FILS_SHA384: + return WLAN_CRYPTO_KEY_MGMT_FILS_SHA384; + case RSN_AUTH_KEY_MGMT_FT_FILS_SHA256: + return WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA256; + case RSN_AUTH_KEY_MGMT_FT_FILS_SHA384: + return WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA384; + case RSN_AUTH_KEY_MGMT_OWE: + return WLAN_CRYPTO_KEY_MGMT_OWE; + case RSN_AUTH_KEY_MGMT_DPP: + return WLAN_CRYPTO_KEY_MGMT_DPP; } return status;