Wireshark 4.5.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, uint8_t *aad, size_t *aad_len)
 
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[DOT11DECRYPT_MAC_LEN], 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_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[DOT11DECRYPT_MAC_LEN],
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