libosmogsm  1.7.0
Osmocom GSM library
sha1.c File Reference
#include "common.h"
#include "sha1.h"
#include "crypto.h"

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_vector - HMAC-SHA1 over data vector (RFC 2104) : Key for HMAC operations : Length of the key in bytes : Number of elements in the data vector : Pointers to the data areas : Lengths of the data blocks : Buffer for the hash (20 bytes) Returns: 0 on success, -1 on failure More...
 
int hmac_sha1 (const u8 *key, size_t key_len, const u8 *data, size_t data_len, u8 *mac)
 hmac_sha1 - HMAC-SHA1 over data buffer (RFC 2104) : Key for HMAC operations : Length of the key in bytes : Pointers to the data area : Length of the data area : Buffer for the hash (20 bytes) Returns: 0 on success, -1 of failure More...
 
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_prf - SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) : Key for PRF : Length of the key in bytes : A unique label for each purpose of the PRF : Extra data to bind into the key : Length of the data : Buffer for the generated pseudo-random key : Number of bytes of key to generate Returns: 0 on success, -1 of failure More...
 

Function Documentation

◆ hmac_sha1()

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

hmac_sha1 - HMAC-SHA1 over data buffer (RFC 2104) : Key for HMAC operations : Length of the key in bytes : Pointers to the data area : Length of the data area : Buffer for the hash (20 bytes) Returns: 0 on success, -1 of failure

References hmac_sha1_vector().

◆ hmac_sha1_vector()

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_vector - HMAC-SHA1 over data vector (RFC 2104) : Key for HMAC operations : Length of the key in bytes : Number of elements in the data vector : Pointers to the data areas : Lengths of the data blocks : Buffer for the hash (20 bytes) Returns: 0 on success, -1 on failure

References os_memcpy, os_memset, SHA1_MAC_LEN, and sha1_vector().

Referenced by hmac_sha1(), and sha1_prf().

◆ sha1_prf()

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_prf - SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) : Key for PRF : Length of the key in bytes : A unique label for each purpose of the PRF : Extra data to bind into the key : Length of the data : Buffer for the generated pseudo-random key : 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).

References data, hmac_sha1_vector(), len, os_memcpy, os_strlen, and SHA1_MAC_LEN.