SHA256 hash implementation and interface functions.
More...
Go to the source code of this file.
|
|
#define | SHA256_MAC_LEN 32 |
| |
|
| int | hmac_sha256_vector (const u8 *key, size_t key_len, size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) |
| | HMAC-SHA256 over data vector (RFC 2104) More...
|
| |
| int | hmac_sha256 (const u8 *key, size_t key_len, const u8 *data, size_t data_len, u8 *mac) |
| | HMAC-SHA256 over data buffer (RFC 2104) More...
|
| |
| void | sha256_prf (const u8 *key, size_t key_len, const char *label, const u8 *data, size_t data_len, u8 *buf, size_t buf_len) |
| | SHA256-based Pseudo-Random Function (IEEE 802.11r, 8.5.1.5.2) More...
|
| |
| void | sha256_prf_bits (const u8 *key, size_t key_len, const char *label, const u8 *data, size_t data_len, u8 *buf, size_t buf_len_bits) |
| | IEEE Std 802.11-2012, 11.6.1.7.2 Key derivation function. More...
|
| |
| void | tls_prf_sha256 (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 v1.2 (P_SHA256, RFC 5246) More...
|
| |
| int | hmac_sha256_kdf (const u8 *secret, size_t secret_len, const char *label, const u8 *seed, size_t seed_len, u8 *out, size_t outlen) |
| | HMAC-SHA256 based KDF (RFC 5295) More...
|
| |
SHA256 hash implementation and interface functions.
| int hmac_sha256 |
( |
const u8 * |
key, |
|
|
size_t |
key_len, |
|
|
const u8 * |
data, |
|
|
size_t |
data_len, |
|
|
u8 * |
mac |
|
) |
| |
HMAC-SHA256 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 (32 bytes) |
- Returns
- 0 on success, -1 on failure
| int hmac_sha256_kdf |
( |
const u8 * |
secret, |
|
|
size_t |
secret_len, |
|
|
const char * |
label, |
|
|
const u8 * |
seed, |
|
|
size_t |
seed_len, |
|
|
u8 * |
out, |
|
|
size_t |
outlen |
|
) |
| |
HMAC-SHA256 based KDF (RFC 5295)
- Parameters
-
| secret | Key for KDF |
| secret_len | Length of the key in bytes |
| label | A unique label for each purpose of the KDF |
| 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 ERP. This KDF is defined in RFC 5295, Chapter 3.1.2.
| int hmac_sha256_vector |
( |
const u8 * |
key, |
|
|
size_t |
key_len, |
|
|
size_t |
num_elem, |
|
|
const u8 * |
addr[], |
|
|
const size_t * |
len, |
|
|
u8 * |
mac |
|
) |
| |
HMAC-SHA256 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 (32 bytes) |
- Returns
- 0 on success, -1 on failure
| void sha256_prf |
( |
const u8 * |
key, |
|
|
size_t |
key_len, |
|
|
const char * |
label, |
|
|
const u8 * |
data, |
|
|
size_t |
data_len, |
|
|
u8 * |
buf, |
|
|
size_t |
buf_len |
|
) |
| |
SHA256-based Pseudo-Random Function (IEEE 802.11r, 8.5.1.5.2)
- 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 |
This function is used to derive new, cryptographically separate keys from a given key.
| void sha256_prf_bits |
( |
const u8 * |
key, |
|
|
size_t |
key_len, |
|
|
const char * |
label, |
|
|
const u8 * |
data, |
|
|
size_t |
data_len, |
|
|
u8 * |
buf, |
|
|
size_t |
buf_len_bits |
|
) |
| |
IEEE Std 802.11-2012, 11.6.1.7.2 Key derivation function.
- Parameters
-
| key | Key for KDF |
| 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 bits of key to generate |
This function is used to derive new, cryptographically separate keys from a given key. If the requested buf_len is not divisible by eight, the least significant 1-7 bits of the last octet in the output are not part of the requested output.
| void tls_prf_sha256 |
( |
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 v1.2 (P_SHA256, RFC 5246)
- 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.