dwc_crypto.h File Reference


Detailed Description

This file contains declarations for the WUSB Cryptographic routines as defined in the WUSB spec.

They are only to be used internally by the DWC UWB modules.


Functions

int dwc_wusb_aes_encrypt (u8 *src, u8 *key, u8 *dst)
 Encrypts an array of bytes using the AES encryption engine.
void dwc_wusb_cmf (u8 *key, u8 *nonce, char *label, u8 *bytes, int len, u8 *result)
 The CCM-MAC-FUNCTION described in section 6.5 of the WUSB spec.
void dwc_wusb_prf (int prf_len, u8 *key, u8 *nonce, char *label, u8 *bytes, int len, u8 *result)
 The PRF function described in section 6.5 of the WUSB spec.
static void dwc_wusb_prf_64 (u8 *key, u8 *nonce, char *label, u8 *bytes, int len, u8 *result)
 The PRF-64 function described in section 6.5 of the WUSB spec.
static void dwc_wusb_prf_128 (u8 *key, u8 *nonce, char *label, u8 *bytes, int len, u8 *result)
 The PRF-128 function described in section 6.5 of the WUSB spec.
static void dwc_wusb_prf_256 (u8 *key, u8 *nonce, char *label, u8 *bytes, int len, u8 *result)
 The PRF-256 function described in section 6.5 of the WUSB spec.
void dwc_wusb_fill_ccm_nonce (uint16_t haddr, uint16_t daddr, uint8_t *tkid, uint8_t *nonce)
 Fills in CCM Nonce per the WUSB spec.
void dwc_wusb_gen_nonce (uint16_t addr, uint8_t *nonce)
 Generates a 16-byte cryptographic-grade random number for the Host/Device Nonce.
void dwc_wusb_gen_key (uint8_t *ccm_nonce, uint8_t *mk, uint8_t *hnonce, uint8_t *dnonce, uint8_t *kck, uint8_t *ptk)
 Generates the Session Key (PTK) and Key Confirmation Key (KCK) per the WUSB spec.
void dwc_wusb_gen_mic (uint8_t *ccm_nonce, uint8_t *kck, uint8_t *data, uint8_t *mic)
 Generates the Message Integrity Code over the Handshake data per the WUSB spec.


Function Documentation

int dwc_wusb_aes_encrypt ( u8 *  src,
u8 *  key,
u8 *  dst 
)

Encrypts an array of bytes using the AES encryption engine.

If dst == src, then the bytes will be encrypted in-place.

Returns:
0 on success, negative error code on error.

void dwc_wusb_cmf ( u8 *  key,
u8 *  nonce,
char *  label,
u8 *  bytes,
int  len,
u8 *  result 
)

The CCM-MAC-FUNCTION described in section 6.5 of the WUSB spec.

This function takes a data string and returns the encrypted CBC Counter-mode MIC.

Parameters:
key The 128-bit symmetric key.
nonce The CCM nonce.
label The unique 14-byte ASCII text label.
bytes The byte array to be encrypted.
len Length of the byte array.
result Byte array to receive the 8-byte encrypted MIC.

void dwc_wusb_prf ( int  prf_len,
u8 *  key,
u8 *  nonce,
char *  label,
u8 *  bytes,
int  len,
u8 *  result 
)

The PRF function described in section 6.5 of the WUSB spec.

This function concatenates MIC values returned from dwc_cmf() to create a value of the requested length.

Parameters:
prf_len Length of the PRF function in bits (64, 128, or 256).
key,nonce,label,bytes,len Same as for dwc_cmf().
result Byte array to receive the result.

static void dwc_wusb_prf_64 ( u8 *  key,
u8 *  nonce,
char *  label,
u8 *  bytes,
int  len,
u8 *  result 
) [inline, static]

The PRF-64 function described in section 6.5 of the WUSB spec.

Parameters:
key,nonce,label,bytes,len,result Same as for dwc_prf().

static void dwc_wusb_prf_128 ( u8 *  key,
u8 *  nonce,
char *  label,
u8 *  bytes,
int  len,
u8 *  result 
) [inline, static]

The PRF-128 function described in section 6.5 of the WUSB spec.

Parameters:
key,nonce,label,bytes,len,result Same as for dwc_prf().

static void dwc_wusb_prf_256 ( u8 *  key,
u8 *  nonce,
char *  label,
u8 *  bytes,
int  len,
u8 *  result 
) [inline, static]

The PRF-256 function described in section 6.5 of the WUSB spec.

Parameters:
key,nonce,label,bytes,len,result Same as for dwc_prf().

void dwc_wusb_fill_ccm_nonce ( uint16_t  haddr,
uint16_t  daddr,
uint8_t *  tkid,
uint8_t *  nonce 
)

Fills in CCM Nonce per the WUSB spec.

Parameters:
[in] haddr Host address.
[in] daddr Device address.
[in] tkid Session Key(PTK) identifier.
[out] nonce Pointer to where the CCM Nonce output is to be written.

void dwc_wusb_gen_nonce ( uint16_t  addr,
uint8_t *  nonce 
)

Generates a 16-byte cryptographic-grade random number for the Host/Device Nonce.

void dwc_wusb_gen_key ( uint8_t *  ccm_nonce,
uint8_t *  mk,
uint8_t *  hnonce,
uint8_t *  dnonce,
uint8_t *  kck,
uint8_t *  ptk 
)

Generates the Session Key (PTK) and Key Confirmation Key (KCK) per the WUSB spec.

Parameters:
[in] ccm_nonce Pointer to CCM Nonce.
[in] mk Master Key to derive the session from
[in] hnonce Pointer to Host Nonce.
[in] dnonce Pointer to Device Nonce.
[out] kck Pointer to where the KCK output is to be written.
[out] ptk Pointer to where the PTK output is to be written.

void dwc_wusb_gen_mic ( uint8_t *  ccm_nonce,
uint8_t *  kck,
uint8_t *  data,
uint8_t *  mic 
)

Generates the Message Integrity Code over the Handshake data per the WUSB spec.

Parameters:
ccm_nonce Pointer to CCM Nonce.
kck Pointer to Key Confirmation Key.
data Pointer to Handshake data to be checked.
mic Pointer to where the MIC output is to be written.


Generated on Tue May 5 02:22:50 2009 for Synopsys DWC Portability and Common Library for UWB by  doxygen 1.4.7