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.

1.6.1