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

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

Go to the source code of this file.

Data Structures

struct  eap_pax_hdr
 

Macros

#define EAP_PAX_FLAGS_MF   0x01
 
#define EAP_PAX_FLAGS_CE   0x02
 
#define EAP_PAX_FLAGS_AI   0x04
 
#define EAP_PAX_MAC_HMAC_SHA1_128   0x01
 
#define EAP_PAX_HMAC_SHA256_128   0x02
 
#define EAP_PAX_DH_GROUP_NONE   0x00
 
#define EAP_PAX_DH_GROUP_2048_MODP   0x01
 
#define EAP_PAX_DH_GROUP_3072_MODP   0x02
 
#define EAP_PAX_DH_GROUP_NIST_ECC_P_256   0x03
 
#define EAP_PAX_PUBLIC_KEY_NONE   0x00
 
#define EAP_PAX_PUBLIC_KEY_RSAES_OAEP   0x01
 
#define EAP_PAX_PUBLIC_KEY_RSA_PKCS1_V1_5   0x02
 
#define EAP_PAX_PUBLIC_KEY_EL_GAMAL_NIST_ECC   0x03
 
#define EAP_PAX_ADE_VENDOR_SPECIFIC   0x01
 
#define EAP_PAX_ADE_CLIENT_CHANNEL_BINDING   0x02
 
#define EAP_PAX_ADE_SERVER_CHANNEL_BINDING   0x03
 
#define EAP_PAX_RAND_LEN   32
 
#define EAP_PAX_MAC_LEN   16
 
#define EAP_PAX_ICV_LEN   16
 
#define EAP_PAX_AK_LEN   16
 
#define EAP_PAX_MK_LEN   16
 
#define EAP_PAX_CK_LEN   16
 
#define EAP_PAX_ICK_LEN   16
 
#define EAP_PAX_MID_LEN   16
 

Enumerations

enum  {
  EAP_PAX_OP_STD_1 = 0x01, EAP_PAX_OP_STD_2 = 0x02, EAP_PAX_OP_STD_3 = 0x03, EAP_PAX_OP_SEC_1 = 0x11,
  EAP_PAX_OP_SEC_2 = 0x12, EAP_PAX_OP_SEC_3 = 0x13, EAP_PAX_OP_SEC_4 = 0x14, EAP_PAX_OP_SEC_5 = 0x15,
  EAP_PAX_OP_ACK = 0x21
}
 

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...
 

Variables

struct eap_pax_hdr STRUCT_PACKED
 

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.