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

IEEE 802.1X-2010 Key Hierarchy. More...

#include "utils/includes.h"
#include "utils/common.h"
#include "crypto/md5.h"
#include "crypto/sha1.h"
#include "crypto/aes_wrap.h"
#include "crypto/crypto.h"
#include "ieee802_1x_key.h"

Functions

int ieee802_1x_cak_128bits_aes_cmac (const u8 *msk, const u8 *mac1, const u8 *mac2, u8 *cak)
 ieee802_1x_cak_128bits_aes_cmac More...
 
int ieee802_1x_ckn_128bits_aes_cmac (const u8 *msk, const u8 *mac1, const u8 *mac2, const u8 *sid, size_t sid_bytes, u8 *ckn)
 ieee802_1x_ckn_128bits_aes_cmac More...
 
int ieee802_1x_kek_128bits_aes_cmac (const u8 *cak, const u8 *ckn, size_t ckn_bytes, u8 *kek)
 ieee802_1x_kek_128bits_aes_cmac More...
 
int ieee802_1x_ick_128bits_aes_cmac (const u8 *cak, const u8 *ckn, size_t ckn_bytes, u8 *ick)
 ieee802_1x_ick_128bits_aes_cmac More...
 
int ieee802_1x_icv_128bits_aes_cmac (const u8 *ick, const u8 *msg, size_t msg_bytes, u8 *icv)
 ieee802_1x_icv_128bits_aes_cmac More...
 
int ieee802_1x_sak_128bits_aes_cmac (const u8 *cak, const u8 *ctx, size_t ctx_bytes, u8 *sak)
 ieee802_1x_sak_128bits_aes_cmac More...
 

Detailed Description

IEEE 802.1X-2010 Key Hierarchy.

SAK derivation specified in IEEE Std 802.1X-2010, Clause 6.2

Function Documentation

int ieee802_1x_cak_128bits_aes_cmac ( const u8 *  msk,
const u8 *  mac1,
const u8 *  mac2,
u8 *  cak 
)

ieee802_1x_cak_128bits_aes_cmac

IEEE Std 802.1X-2010, 6.2.2 CAK = KDF(Key, Label, mac1 | mac2, CAKlength)

int ieee802_1x_ckn_128bits_aes_cmac ( const u8 *  msk,
const u8 *  mac1,
const u8 *  mac2,
const u8 *  sid,
size_t  sid_bytes,
u8 *  ckn 
)

ieee802_1x_ckn_128bits_aes_cmac

IEEE Std 802.1X-2010, 6.2.2 CKN = KDF(Key, Label, ID | mac1 | mac2, CKNlength)

int ieee802_1x_ick_128bits_aes_cmac ( const u8 *  cak,
const u8 *  ckn,
size_t  ckn_bytes,
u8 *  ick 
)

ieee802_1x_ick_128bits_aes_cmac

IEEE Std 802.1X-2010, 9.3.3 ICK = KDF(Key, Label, Keyid, ICKLength)

int ieee802_1x_icv_128bits_aes_cmac ( const u8 *  ick,
const u8 *  msg,
size_t  msg_bytes,
u8 *  icv 
)

ieee802_1x_icv_128bits_aes_cmac

IEEE Std 802.1X-2010, 9.4.1 ICV = AES-CMAC(ICK, M, 128)

int ieee802_1x_kek_128bits_aes_cmac ( const u8 *  cak,
const u8 *  ckn,
size_t  ckn_bytes,
u8 *  kek 
)

ieee802_1x_kek_128bits_aes_cmac

IEEE Std 802.1X-2010, 9.3.3 KEK = KDF(Key, Label, Keyid, KEKLength)

int ieee802_1x_sak_128bits_aes_cmac ( const u8 *  cak,
const u8 *  ctx,
size_t  ctx_bytes,
u8 *  sak 
)

ieee802_1x_sak_128bits_aes_cmac

IEEE Std 802.1X-2010, 9.8.1 SAK = KDF(Key, Label, KS-nonce | MI-value list | KN, SAKLength)