Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
Functions
dot11decrypt_util.h File Reference
#include "dot11decrypt_int.h"

Go to the source code of this file.

Functions

void dot11decrypt_construct_aad (PDOT11DECRYPT_MAC_FRAME wh, const uint8_t *A1, const uint8_t *A2, const uint8_t *A3, uint8_t *aad, size_t *aad_len)
 Constructs the AAD (Additional Authentication Data) for a 802.11 MAC frame.
 
bool dot11decrypt_prf (const uint8_t *key, size_t key_len, const char *label, const uint8_t *context, size_t context_len, int hash_algo, uint8_t *output, size_t output_len)
 
bool dot11decrypt_kdf (const uint8_t *key, size_t key_len, const char *label, const uint8_t *context, size_t context_len, int hash_algo, uint8_t *output, size_t output_len)
 
bool dot11decrypt_derive_pmk_r0 (const uint8_t *xxkey, size_t xxkey_len, const uint8_t *ssid, size_t ssid_len, const uint8_t mdid[2], const uint8_t *r0kh_id, size_t r0kh_id_len, const uint8_t s0kh_id[6], int hash_algo, uint8_t *pmk_r0, size_t *pmk_r0_len, uint8_t pmk_r0_name[16])
 
bool dot11decrypt_derive_pmk_r1 (const uint8_t *pmk_r0, size_t pmk_r0_len, const uint8_t *pmk_r0_name, const uint8_t *r1kh_id, const uint8_t *s1kh_id, int hash_algo, uint8_t *pmk_r1, size_t *pmk_r1_len, uint8_t *pmk_r1_name)
 
bool dot11decrypt_derive_ft_ptk (const uint8_t *pmk_r1, size_t pmk_r1_len, const uint8_t *pmk_r1_name, const uint8_t *snonce, const uint8_t *anonce, const uint8_t *bssid, const uint8_t *sta_addr, int hash_algo, uint8_t *ptk, const size_t ptk_len, uint8_t *ptk_name)
 

Detailed Description

Copyright (c) 2002-2005 Sam Leffler, Errno Consulting Copyright (c) 2006 CACE Technologies, Davis (California) All rights reserved.

SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)

Function Documentation

◆ dot11decrypt_construct_aad()

void dot11decrypt_construct_aad ( PDOT11DECRYPT_MAC_FRAME  wh,
const uint8_t *  A1,
const uint8_t *  A2,
const uint8_t *  A3,
uint8_t *  aad,
size_t *  aad_len 
)

Constructs the AAD (Additional Authentication Data) for a 802.11 MAC frame.

Parameters
whPointer to the DOT11DECRYPT_MAC_FRAME structure containing the MAC header.
A1Pointer to the first address field of the MAC frame.
A2Pointer to the second address field of the MAC frame.
A3Pointer to the third address field of the MAC frame.
aadBuffer to store the constructed AAD.
aad_lenPointer to store the length of the constructed AAD.

◆ dot11decrypt_derive_pmk_r0()

bool dot11decrypt_derive_pmk_r0 ( const uint8_t *  xxkey,
size_t  xxkey_len,
const uint8_t *  ssid,
size_t  ssid_len,
const uint8_t  mdid[2],
const uint8_t *  r0kh_id,
size_t  r0kh_id_len,
const uint8_t  s0kh_id[6],
int  hash_algo,
uint8_t *  pmk_r0,
size_t *  pmk_r0_len,
uint8_t  pmk_r0_name[16] 
)

Derive PMK-R0 and PMKR0Name. See IEEE 802.11-2016 12.7.1.7.3 PMK-R0

Parameters
xxkeyPSK / MPMK or certain part of MSK.
xxkey_lenLength of xxkey in bytes.
ssidSSID
ssid_lenLength of SSID in bytes.
mdidMDID (Mobility Domain Identifier).
r0kh_idPMK-R0 key holder identifier in the Authenticator.
r0kh_id_lenLength of r0kh_id in bytes.
s0kh_idPMK-R0 key holder in the Supplicant (STA mac address)
hash_algoHash algorithm to use for the KDF. See gcrypt available hash algorithms: https://gnupg.org/documentation/manuals/gcrypt/Available-hash-algorithms.html
[out]pmk_r0Pairwise master key, first level
pmk_r0_lenLength of pmk_r0 in bytes.
[out]pmk_r0_namePairwise master key (PMK) R0 name.

◆ dot11decrypt_derive_pmk_r1()

bool dot11decrypt_derive_pmk_r1 ( const uint8_t *  pmk_r0,
size_t  pmk_r0_len,
const uint8_t *  pmk_r0_name,
const uint8_t *  r1kh_id,
const uint8_t *  s1kh_id,
int  hash_algo,
uint8_t *  pmk_r1,
size_t *  pmk_r1_len,
uint8_t *  pmk_r1_name 
)

Derive PMK-R1 and PMKR1Name. See IEEE 802.11-2016 12.7.1.7.4 PMK-R1

◆ dot11decrypt_kdf()

bool dot11decrypt_kdf ( const uint8_t *  key,
size_t  key_len,
const char *  label,
const uint8_t *  context,
size_t  context_len,
int  hash_algo,
uint8_t *  output,
size_t  output_len 
)

12.7.1.7.2 Key derivation function (KDF)

Parameters
keyDerivation input key.
key_lenLength of the key in bytes.
labelA string identifying the purpose of the keys derived using this KDF.
contextProvides context to identify the derived key.
context_lenLength of context in bytes.
hash_algoHash algorithm to use for the KDF. See gcrypt available hash algorithms: https://gnupg.org/documentation/manuals/gcrypt/Available-hash-algorithms.html
[out]outputDerived key.
output_lenLength of derived key in bytes.
Returns
false on error