#include "includes.h"
#include "common.h"
#include "crypto/md5.h"
#include "crypto/sha1.h"
#include "crypto/sha256.h"
#include "crypto/aes_wrap.h"
#include "crypto/crypto.h"
#include "ieee802_11_defs.h"
#include "defs.h"
#include "wpa_common.h"
Go to the source code of this file.
Functions | |
static int | rsn_key_mgmt_to_bitfield (const u8 *s) |
void | rsn_pmkid (const u8 *pmk, size_t pmk_len, const u8 *aa, const u8 *spa, u8 *pmkid, int use_sha256) |
static int | rsn_selector_to_bitfield (const u8 *s) |
const char * | wpa_cipher_txt (int cipher) |
int | wpa_compare_rsn_ie (int ft_initial_assoc, const u8 *ie1, size_t ie1len, const u8 *ie2, size_t ie2len) |
int | wpa_eapol_key_mic (const u8 *key, int ver, const u8 *buf, size_t len, u8 *mic) |
const char * | wpa_key_mgmt_txt (int key_mgmt, int proto) |
int | wpa_parse_wpa_ie_rsn (const u8 *rsn_ie, size_t rsn_ie_len, struct wpa_ie_data *data) |
void | 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, u8 *ptk, size_t ptk_len, int use_sha256) |
static int rsn_key_mgmt_to_bitfield | ( | const u8 * | s | ) | [static] |
Definition at line 213 of file wpa_common.c.
void rsn_pmkid | ( | const u8 * | pmk, |
size_t | pmk_len, | ||
const u8 * | aa, | ||
const u8 * | spa, | ||
u8 * | pmkid, | ||
int | use_sha256 | ||
) |
rsn_pmkid - Calculate PMK identifier : Pairwise master key : Length of pmk in bytes : Authenticator address : Supplicant address : Buffer for PMKID : Whether to use SHA256-based KDF
IEEE Std 802.11i-2004 - 8.5.1.2 Pairwise key hierarchy PMKID = HMAC-SHA1-128(PMK, "PMK Name" || AA || SPA)
Definition at line 585 of file wpa_common.c.
static int rsn_selector_to_bitfield | ( | const u8 * | s | ) | [static] |
Definition at line 193 of file wpa_common.c.
const char* wpa_cipher_txt | ( | int | cipher | ) |
wpa_cipher_txt - Convert cipher suite to a text string : Cipher suite (WPA_CIPHER_* enum) Returns: Pointer to a text string of the cipher suite name
Definition at line 612 of file wpa_common.c.
int wpa_compare_rsn_ie | ( | int | ft_initial_assoc, |
const u8 * | ie1, | ||
size_t | ie1len, | ||
const u8 * | ie2, | ||
size_t | ie2len | ||
) |
Definition at line 674 of file wpa_common.c.
int wpa_eapol_key_mic | ( | const u8 * | key, |
int | ver, | ||
const u8 * | buf, | ||
size_t | len, | ||
u8 * | mic | ||
) |
wpa_eapol_key_mic - Calculate EAPOL-Key MIC : EAPOL-Key Key Confirmation Key (KCK) : Key descriptor version (WPA_KEY_INFO_TYPE_*) : Pointer to the beginning of the EAPOL header (version field) : Length of the EAPOL frame (from EAPOL header to the end of the frame) : Pointer to the buffer to which the EAPOL-Key MIC is written Returns: 0 on success, -1 on failure
Calculate EAPOL-Key MIC for an EAPOL-Key packet. The EAPOL-Key MIC field has to be cleared (all zeroes) when calling this function.
Note: 'IEEE Std 802.11i-2004 - 8.5.2 EAPOL-Key frames' has an error in the description of the Key MIC calculation. It includes packet data from the beginning of the EAPOL-Key header, not EAPOL header. This incorrect change happened during final editing of the standard and the correct behavior is defined in the last draft (IEEE 802.11i/D10).
Definition at line 46 of file wpa_common.c.
const char* wpa_key_mgmt_txt | ( | int | key_mgmt, |
int | proto | ||
) |
wpa_key_mgmt_txt - Convert key management suite to a text string : Key management suite (WPA_KEY_MGMT_* enum) : WPA/WPA2 version (WPA_PROTO_*) Returns: Pointer to a text string of the key management suite name
Definition at line 639 of file wpa_common.c.
int wpa_parse_wpa_ie_rsn | ( | const u8 * | rsn_ie, |
size_t | rsn_ie_len, | ||
struct wpa_ie_data * | data | ||
) |
wpa_parse_wpa_ie_rsn - Parse RSN IE : Buffer containing RSN IE : RSN IE buffer length (including IE number and length octets) : Pointer to structure that will be filled in with parsed data Returns: 0 on success, <0 on failure
Definition at line 243 of file wpa_common.c.
void 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, | ||
u8 * | ptk, | ||
size_t | ptk_len, | ||
int | use_sha256 | ||
) |
wpa_pmk_to_ptk - Calculate PTK from PMK, addresses, and nonces : Pairwise master key : Length of PMK : Label to use in derivation : AA or SA : SA or AA : ANonce or SNonce : SNonce or ANonce : Buffer for pairwise transient key : Length of PTK : Whether to use SHA256-based KDF
IEEE Std 802.11i-2004 - 8.5.1.2 Pairwise key hierarchy PTK = PRF-X(PMK, "Pairwise key expansion", Min(AA, SA) || Max(AA, SA) || Min(ANonce, SNonce) || Max(ANonce, SNonce))
STK = PRF-X(SMK, "Peer key expansion", Min(MAC_I, MAC_P) || Max(MAC_I, MAC_P) || Min(INonce, PNonce) || Max(INonce, PNonce))
Definition at line 93 of file wpa_common.c.