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

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

Go to the source code of this file.

Data Structures

struct  eap_sake_hdr
 
struct  eap_sake_parse_attr
 

Macros

#define EAP_SAKE_VERSION   2
 
#define EAP_SAKE_SUBTYPE_CHALLENGE   1
 
#define EAP_SAKE_SUBTYPE_CONFIRM   2
 
#define EAP_SAKE_SUBTYPE_AUTH_REJECT   3
 
#define EAP_SAKE_SUBTYPE_IDENTITY   4
 
#define EAP_SAKE_AT_RAND_S   1
 
#define EAP_SAKE_AT_RAND_P   2
 
#define EAP_SAKE_AT_MIC_S   3
 
#define EAP_SAKE_AT_MIC_P   4
 
#define EAP_SAKE_AT_SERVERID   5
 
#define EAP_SAKE_AT_PEERID   6
 
#define EAP_SAKE_AT_SPI_S   7
 
#define EAP_SAKE_AT_SPI_P   8
 
#define EAP_SAKE_AT_ANY_ID_REQ   9
 
#define EAP_SAKE_AT_PERM_ID_REQ   10
 
#define EAP_SAKE_AT_ENCR_DATA   128
 
#define EAP_SAKE_AT_IV   129
 
#define EAP_SAKE_AT_PADDING   130
 
#define EAP_SAKE_AT_NEXT_TMPID   131
 
#define EAP_SAKE_AT_MSK_LIFE   132
 
#define EAP_SAKE_RAND_LEN   16
 
#define EAP_SAKE_MIC_LEN   16
 
#define EAP_SAKE_ROOT_SECRET_LEN   16
 
#define EAP_SAKE_SMS_LEN   16
 
#define EAP_SAKE_TEK_AUTH_LEN   16
 
#define EAP_SAKE_TEK_CIPHER_LEN   16
 
#define EAP_SAKE_TEK_LEN   (EAP_SAKE_TEK_AUTH_LEN + EAP_SAKE_TEK_CIPHER_LEN)
 

Functions

int eap_sake_parse_attributes (const u8 *buf, size_t len, struct eap_sake_parse_attr *attr)
 Parse EAP-SAKE attributes. More...
 
void eap_sake_derive_keys (const u8 *root_secret_a, const u8 *root_secret_b, const u8 *rand_s, const u8 *rand_p, u8 *tek, u8 *msk, u8 *emsk)
 Derive EAP-SAKE keys. More...
 
int eap_sake_compute_mic (const u8 *tek_auth, const u8 *rand_s, const u8 *rand_p, const u8 *serverid, size_t serverid_len, const u8 *peerid, size_t peerid_len, int peer, const u8 *eap, size_t eap_len, const u8 *mic_pos, u8 *mic)
 Compute EAP-SAKE MIC for an EAP packet. More...
 
void eap_sake_add_attr (struct wpabuf *buf, u8 type, const u8 *data, size_t len)
 

Variables

struct eap_sake_hdr STRUCT_PACKED
 

Detailed Description

EAP server/peer: EAP-SAKE shared routines.

Function Documentation

int eap_sake_compute_mic ( const u8 *  tek_auth,
const u8 *  rand_s,
const u8 *  rand_p,
const u8 *  serverid,
size_t  serverid_len,
const u8 *  peerid,
size_t  peerid_len,
int  peer,
const u8 *  eap,
size_t  eap_len,
const u8 *  mic_pos,
u8 *  mic 
)

Compute EAP-SAKE MIC for an EAP packet.

Parameters
tek_auth16-byte TEK-Auth
rand_s16-byte RAND_S
rand_p16-byte RAND_P
serveridSERVERID
serverid_lenSERVERID length
peeridPEERID
peerid_lenPEERID length
peerMIC calculation for 0 = Server, 1 = Peer message
eapEAP packet
eap_lenEAP packet length
mic_posMIC position in the EAP packet (must be [eap .. eap + eap_len])
micBuffer for the computed 16-byte MIC
void eap_sake_derive_keys ( const u8 *  root_secret_a,
const u8 *  root_secret_b,
const u8 *  rand_s,
const u8 *  rand_p,
u8 *  tek,
u8 *  msk,
u8 *  emsk 
)

Derive EAP-SAKE keys.

Parameters
root_secret_a16-byte Root-Secret-A
root_secret_b16-byte Root-Secret-B
rand_s16-byte RAND_S
rand_p16-byte RAND_P
tekBuffer for Temporary EAK Keys (TEK-Auth[16] | TEK-Cipher[16])
mskBuffer for 64-byte MSK
emskBuffer for 64-byte EMSK

This function derives EAP-SAKE keys as defined in RFC 4763, section 3.2.6.

int eap_sake_parse_attributes ( const u8 *  buf,
size_t  len,
struct eap_sake_parse_attr attr 
)

Parse EAP-SAKE attributes.

Parameters
bufPacket payload (starting with the first attribute)
lenPayload length
attrStructure to be filled with found attributes
Returns
0 on success or -1 on failure