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. |
SHA1 hash implementation and interface functions.
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.
Definition in file sha1.h.
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).
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) |
Definition at line 109 of file sha1.c.
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).
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) |
Definition at line 34 of file sha1.c.
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.
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 |
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.
Definition at line 82 of file sha1-pbkdf2.c.
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).
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 |
This function is used to derive new, cryptographically separate keys from a given key (e.g., PMK in IEEE 802.11i).
Definition at line 131 of file sha1.c.
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).
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 |
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.
Definition at line 37 of file sha1-tprf.c.
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).
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 |
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.
Definition at line 39 of file sha1-tlsprf.c.