linux/drivers/mxc/security/rng/include/shw_hash.h File Reference

Data Structures

struct  shw_hash_state

Defines

#define SHW_HASH_LEN   32

Typedefs

typedef struct shw_hash_state shw_hash_state_t

Functions

fsl_shw_return_t shw_hash_init (shw_hash_state_t *state, fsl_shw_hash_alg_t algorithm)
fsl_shw_return_t shw_hash_update (shw_hash_state_t *state, const uint8_t *msg, unsigned int msg_len)
fsl_shw_return_t shw_hash_final (shw_hash_state_t *state, uint8_t *hash, unsigned int hash_len)

Detailed Description

This file contains definitions for use of the (internal) SHW hash software computation. It defines the usual three steps:

The only other item of note to callers is SHW_HASH_LEN, which is the number of bytes calculated for the hash.


Define Documentation

#define SHW_HASH_LEN   32

Define which gives the number of bytes available in an hash result

Referenced by shw_hash_final(), and shw_hmac_final().


Typedef Documentation

State for a SHA-1/SHA-2 Hash

(Note to maintainers: state needs to be updated to uint64_t to handle SHA-384/SHA-512)... And bit_count to uint128_t (heh).


Function Documentation

fsl_shw_return_t shw_hash_final ( shw_hash_state_t state,
uint8_t *  result,
unsigned int  result_len 
)

Calculate the final hash value

Parameters:
state Address of hash state structure.
hash Address of location to store the hash.
hash_len Number of bytes of hash to be stored.
Returns:
FSL_RETURN_OK_S if all went well, FSL_RETURN_BAD_DATA_LENGTH_S if hash_len is too long, otherwise an error code.

Finalize the hash

Performs the finalize operation on the previous input data & returns the resulting digest. The finalize operation performs the appropriate padding up to the block size.

Parameters:
state Address of hash state structure
result Location to store the hash result
result_len Number of bytes of result to be stored.
Returns:
FSL_RETURN_OK_S if all went well, FSL_RETURN_BAD_DATA_LENGTH_S if hash_len is too long, otherwise an error code.

References shw_hash_state::bit_count, FSL_RETURN_BAD_DATA_LENGTH_S, FSL_RETURN_OK_S, shw_hash_state::partial_count_bytes, SHW_HASH_LEN, shw_hash_update(), and shw_hash_state::state.

Referenced by shw_hmac_final().

fsl_shw_return_t shw_hash_init ( shw_hash_state_t state,
fsl_shw_hash_alg_t  alg 
)

Initialize the hash state structure

Parameters:
state Address of hash state structure.
algorithm Which hash algorithm to use (must be FSL_HASH_ALG_SHA256)
Returns:
FSL_RETURN_OK_S if all went well, otherwise an error code.

Initialize the hash state structure

Parameters:
state Address of hash state structure.
alg Which hash algorithm to use (must be FSL_HASH_ALG_SHA1)
Returns:
FSL_RETURN_OK_S if all went well, otherwise an error code.

References FSL_HASH_ALG_SHA256, FSL_RETURN_BAD_ALGORITHM_S, FSL_RETURN_OK_S, and sha256_init().

Referenced by shw_hmac_init().

fsl_shw_return_t shw_hash_update ( shw_hash_state_t state,
const uint8_t *  input,
unsigned int  input_len 
)

Put data into the hash calculation

Parameters:
state Address of hash state structure.
msg Address of the message data for the hash.
msg_len Number of bytes of msg.
Returns:
FSL_RETURN_OK_S if all went well, otherwise an error code.

Add input bytes to the hash

The bytes are added to the partial_block element of the hash state, and as the partial block is filled, it is processed by sha1_process_block(). This function also updates the bit_count element of the hash state.

Parameters:
state Address of hash state structure
input Address of bytes to add to the hash
input_len Numbef of bytes at input

References shw_hash_state::bit_count, FSL_RETURN_OK_S, shw_hash_state::partial_block, shw_hash_state::partial_count_bytes, and sha256_process_block().

Referenced by shw_hash_final(), shw_hmac_final(), shw_hmac_init(), and shw_hmac_update().

footer
©  Freescale Semiconductor, Inc., 2007.  All rights reserved.
Freescale Confidential Proprietary
NDA Required
doxygen