sha1.h File Reference

SHA1 hash implementation and interface functions. More...

Go to the source code of this file.

Defines

#define SHA1_MAC_LEN   20

Functions

int hmac_sha1_vector (const u8 *key, size_t key_len, size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac)
 HMAC-SHA1 over data vector (RFC 2104).
int hmac_sha1 (const u8 *key, size_t key_len, const u8 *data, size_t data_len, u8 *mac)
 HMAC-SHA1 over data buffer (RFC 2104).
int sha1_prf (const u8 *key, size_t key_len, const char *label, const u8 *data, size_t data_len, u8 *buf, size_t buf_len)
 SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1).
int sha1_t_prf (const u8 *key, size_t key_len, const char *label, const u8 *seed, size_t seed_len, u8 *buf, size_t buf_len)
 EAP-FAST Pseudo-Random Function (T-PRF).
int __must_check tls_prf (const u8 *secret, size_t secret_len, const char *label, const u8 *seed, size_t seed_len, u8 *out, size_t outlen)
 Pseudo-Random Function for TLS (TLS-PRF, RFC 2246).
int pbkdf2_sha1 (const char *passphrase, const char *ssid, size_t ssid_len, int iterations, u8 *buf, size_t buflen)
 SHA1-based key derivation function (PBKDF2) for IEEE 802.11i.

Detailed Description

SHA1 hash implementation and interface functions.

Copyright
Copyright (c) 2003-2009, Jouni Malinen <j@w1.fi>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

Alternatively, this software may be distributed under the terms of BSD license.

See README and COPYING for more details.


Function Documentation

int hmac_sha1 ( const u8 *  key,
size_t  key_len,
const u8 *  data,
size_t  data_len,
u8 *  mac 
)

HMAC-SHA1 over data buffer (RFC 2104).

Parameters:
key Key for HMAC operations
key_len Length of the key in bytes
data Pointers to the data area
data_len Length of the data area
mac Buffer for the hash (20 bytes)
Returns:
0 on success, -1 of failure
int hmac_sha1_vector ( const u8 *  key,
size_t  key_len,
size_t  num_elem,
const u8 *  addr[],
const size_t *  len,
u8 *  mac 
)

HMAC-SHA1 over data vector (RFC 2104).

Parameters:
key Key for HMAC operations
key_len Length of the key in bytes
num_elem Number of elements in the data vector
addr Pointers to the data areas
len Lengths of the data blocks
mac Buffer for the hash (20 bytes)
Returns:
0 on success, -1 on failure
int pbkdf2_sha1 ( const char *  passphrase,
const char *  ssid,
size_t  ssid_len,
int  iterations,
u8 *  buf,
size_t  buflen 
)

SHA1-based key derivation function (PBKDF2) for IEEE 802.11i.

Parameters:
passphrase ASCII passphrase
ssid SSID
ssid_len SSID length in bytes
iterations Number of iterations to run
buf Buffer for the generated key
buflen Length of the buffer in bytes
Returns:
0 on success, -1 of failure

This function is used to derive PSK for WPA-PSK. For this protocol, iterations is set to 4096 and buflen to 32. This function is described in IEEE Std 802.11-2004, Clause H.4. The main construction is from PKCS#5 v2.0.

int sha1_prf ( const u8 *  key,
size_t  key_len,
const char *  label,
const u8 *  data,
size_t  data_len,
u8 *  buf,
size_t  buf_len 
)

SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1).

Parameters:
key Key for PRF
key_len Length of the key in bytes
label A unique label for each purpose of the PRF
data Extra data to bind into the key
data_len Length of the data
buf Buffer for the generated pseudo-random key
buf_len Number of bytes of key to generate
Returns:
0 on success, -1 of failure

This function is used to derive new, cryptographically separate keys from a given key (e.g., PMK in IEEE 802.11i).

int sha1_t_prf ( const u8 *  key,
size_t  key_len,
const char *  label,
const u8 *  seed,
size_t  seed_len,
u8 *  buf,
size_t  buf_len 
)

EAP-FAST Pseudo-Random Function (T-PRF).

Parameters:
key Key for PRF
key_len Length of the key in bytes
label A unique label for each purpose of the PRF
seed Seed value to bind into the key
seed_len Length of the seed
buf Buffer for the generated pseudo-random key
buf_len Number of bytes of key to generate
Returns:
0 on success, -1 of failure

This function is used to derive new, cryptographically separate keys from a given key for EAP-FAST. T-PRF is defined in RFC 4851, Section 5.5.

int __must_check tls_prf ( const u8 *  secret,
size_t  secret_len,
const char *  label,
const u8 *  seed,
size_t  seed_len,
u8 *  out,
size_t  outlen 
)

Pseudo-Random Function for TLS (TLS-PRF, RFC 2246).

Parameters:
secret Key for PRF
secret_len Length of the key in bytes
label A unique label for each purpose of the PRF
seed Seed value to bind into the key
seed_len Length of the seed
out Buffer for the generated pseudo-random key
outlen Number of bytes of key to generate
Returns:
0 on success, -1 on failure.

This function is used to derive new, cryptographically separate keys from a given key in TLS. This PRF is defined in RFC 2246, Chapter 5.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated on Sat Nov 28 23:07:50 2009 for wpa_supplicant/hostapd by  doxygen 1.6.1