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.