diff options
author | Jouni Malinen <j@w1.fi> | 2016-06-18 11:19:42 (GMT) |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2016-06-18 12:53:22 (GMT) |
commit | f5ba6923d05e394e434883f90522fd76d7ea9b63 (patch) | |
tree | bf59afc1e6d3c32861e06666c35313e2a79572cd | |
parent | a59c5e9235f1f5c9b786fde80b0355e1ef74a61a (diff) | |
download | hostap-f5ba6923d05e394e434883f90522fd76d7ea9b63.zip hostap-f5ba6923d05e394e434883f90522fd76d7ea9b63.tar.gz hostap-f5ba6923d05e394e434883f90522fd76d7ea9b63.tar.bz2 |
mesh: Coding style cleanup for AEK derivation
Clean up the mesh_rsn_derive_aek() function by using proper macros and
pointer to the location within the context block.
Signed-off-by: Jouni Malinen <j@w1.fi>
-rw-r--r-- | wpa_supplicant/mesh_rsn.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/wpa_supplicant/mesh_rsn.c b/wpa_supplicant/mesh_rsn.c index 57e5b15..c82c539 100644 --- a/wpa_supplicant/mesh_rsn.c +++ b/wpa_supplicant/mesh_rsn.c @@ -363,18 +363,27 @@ mesh_rsn_derive_aek(struct mesh_rsn *rsn, struct sta_info *sta) { u8 *myaddr = rsn->wpa_s->own_addr; u8 *peer = sta->addr; - u8 *addr1 = peer, *addr2 = myaddr; - u8 context[AES_BLOCK_SIZE]; + u8 *addr1, *addr2; + u8 context[RSN_SELECTOR_LEN + 2 * ETH_ALEN], *ptr = context; + /* + * AEK = KDF-Hash-256(PMK, "AEK Derivation", Selected AKM Suite || + * min(localMAC, peerMAC) || max(localMAC, peerMAC)) + */ /* Selected AKM Suite: SAE */ - RSN_SELECTOR_PUT(context, RSN_AUTH_KEY_MGMT_SAE); + RSN_SELECTOR_PUT(ptr, RSN_AUTH_KEY_MGMT_SAE); + ptr += RSN_SELECTOR_LEN; if (os_memcmp(myaddr, peer, ETH_ALEN) < 0) { addr1 = myaddr; addr2 = peer; + } else { + addr1 = peer; + addr2 = myaddr; } - os_memcpy(context + 4, addr1, ETH_ALEN); - os_memcpy(context + 10, addr2, ETH_ALEN); + os_memcpy(ptr, addr1, ETH_ALEN); + ptr += ETH_ALEN; + os_memcpy(ptr, addr2, ETH_ALEN); sha256_prf(sta->sae->pmk, sizeof(sta->sae->pmk), "AEK Derivation", context, sizeof(context), sta->aek, sizeof(sta->aek)); |