wpa_supplicant / hostapd  2.5
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Functions
eap_pax_common.c File Reference

EAP server/peer: EAP-PAX shared routines. More...

#include "includes.h"
#include "common.h"
#include "crypto/sha1.h"
#include "eap_pax_common.h"

Functions

int eap_pax_kdf (u8 mac_id, const u8 *key, size_t key_len, const char *identifier, const u8 *entropy, size_t entropy_len, size_t output_len, u8 *output)
 PAX Key Derivation Function. More...
 
int eap_pax_mac (u8 mac_id, const u8 *key, size_t key_len, const u8 *data1, size_t data1_len, const u8 *data2, size_t data2_len, const u8 *data3, size_t data3_len, u8 *mac)
 EAP-PAX MAC. More...
 
int eap_pax_initial_key_derivation (u8 mac_id, const u8 *ak, const u8 *e, u8 *mk, u8 *ck, u8 *ick, u8 *mid)
 EAP-PAX initial key derivation. More...
 

Detailed Description

EAP server/peer: EAP-PAX shared routines.

Function Documentation

int eap_pax_initial_key_derivation ( u8  mac_id,
const u8 *  ak,
const u8 *  e,
u8 *  mk,
u8 *  ck,
u8 *  ick,
u8 *  mid 
)

EAP-PAX initial key derivation.

Parameters
mac_idMAC ID (EAP_PAX_MAC_*) / currently, only HMAC_SHA1_128 is supported
akAuthentication Key
eEntropy
mkBuffer for the derived Master Key
ckBuffer for the derived Confirmation Key
ickBuffer for the derived Integrity Check Key
midBuffer for the derived Method ID
Returns
0 on success, -1 on failure
int eap_pax_kdf ( u8  mac_id,
const u8 *  key,
size_t  key_len,
const char *  identifier,
const u8 *  entropy,
size_t  entropy_len,
size_t  output_len,
u8 *  output 
)

PAX Key Derivation Function.

Parameters
mac_idMAC ID (EAP_PAX_MAC_*) / currently, only HMAC_SHA1_128 is supported
keySecret key (X)
key_lenLength of the secret key in bytes
identifierPublic identifier for the key (Y)
entropyExchanged entropy to seed the KDF (Z)
entropy_lenLength of the entropy in bytes
output_lenOutput len in bytes (W)
outputBuffer for the derived key
Returns
0 on success, -1 failed

RFC 4746, Section 2.6: PAX-KDF-W(X, Y, Z)

int eap_pax_mac ( u8  mac_id,
const u8 *  key,
size_t  key_len,
const u8 *  data1,
size_t  data1_len,
const u8 *  data2,
size_t  data2_len,
const u8 *  data3,
size_t  data3_len,
u8 *  mac 
)

EAP-PAX MAC.

Parameters
mac_idMAC ID (EAP_PAX_MAC_*) / currently, only HMAC_SHA1_128 is supported
keySecret key
key_lenLength of the secret key in bytes
data1Optional data, first block; NULL if not used
data1_lenLength of data1 in bytes
data2Optional data, second block; NULL if not used
data2_lenLength of data2 in bytes
data3Optional data, third block; NULL if not used
data3_lenLength of data3 in bytes
macBuffer for the MAC value (EAP_PAX_MAC_LEN = 16 bytes)
Returns
0 on success, -1 on failure

Wrapper function to calculate EAP-PAX MAC.