path: root/src/common/wpa_common.h
diff options
authorJouni Malinen <jouni@qca.qualcomm.com>2017-01-13 19:06:21 (GMT)
committerJouni Malinen <j@w1.fi>2017-01-13 19:07:40 (GMT)
commitfcd3d6ce32b61b2139a983f45d19a04fa7150056 (patch)
tree26f0f380c9a0c6d9ef88a935fda11732e01d0927 /src/common/wpa_common.h
parentef495c78dd918a7c7fe60a2d919918cecb889bcb (diff)
FILS: Fix PMK and PMKID derivation from ERP
This adds helper functions for deriving PMK and PMKID from ERP exchange in FILS shared key authentication as defined in IEEE Std 802.11ai-2016, (PMKSA key derivation with FILS authentication). These functions is used to fix PMK and PMKID derivation which were previously using the rMSK directly as PMK instead of following the FILS protocol to derive PMK with HMAC from nonces and rMSK. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Diffstat (limited to 'src/common/wpa_common.h')
1 files changed, 5 insertions, 0 deletions
diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
index 4e952c1..3288a02 100644
--- a/src/common/wpa_common.h
+++ b/src/common/wpa_common.h
@@ -330,6 +330,11 @@ int wpa_pmk_to_ptk(const u8 *pmk, size_t pmk_len, const char *label,
const u8 *addr1, const u8 *addr2,
const u8 *nonce1, const u8 *nonce2,
struct wpa_ptk *ptk, int akmp, int cipher);
+int fils_rmsk_to_pmk(int akmp, const u8 *rmsk, size_t rmsk_len,
+ const u8 *snonce, const u8 *anonce, const u8 *dh_ss,
+ size_t dh_ss_len, u8 *pmk, size_t *pmk_len);
+int fils_pmkid_erp(int akmp, const u8 *reauth, size_t reauth_len,
+ u8 *pmkid);
int fils_pmk_to_ptk(const u8 *pmk, size_t pmk_len, const u8 *spa, const u8 *aa,
const u8 *snonce, const u8 *anonce, struct wpa_ptk *ptk,
u8 *ick, size_t *ick_len, int akmp, int cipher);