nRF5 SDK v13.0.0
Data Structures | Macros | Typedefs | Enumerations | Functions

This file contains all of the enums and definitions that are used for the CRYS HASH APIs, as well as the APIs themselves. More...

Data Structures

struct  CRYS_HASHUserContext_t
 

Macros

#define CRYS_HASH_RESULT_SIZE_IN_WORDS   16
 
#define CRYS_HASH_MD5_DIGEST_SIZE_IN_BYTES   16
 
#define CRYS_HASH_MD5_DIGEST_SIZE_IN_WORDS   4
 
#define CRYS_HASH_SHA1_DIGEST_SIZE_IN_BYTES   20
 
#define CRYS_HASH_SHA1_DIGEST_SIZE_IN_WORDS   5
 
#define CRYS_HASH_SHA224_DIGEST_SIZE_IN_WORDS   7
 
#define CRYS_HASH_SHA256_DIGEST_SIZE_IN_WORDS   8
 
#define CRYS_HASH_SHA384_DIGEST_SIZE_IN_WORDS   12
 
#define CRYS_HASH_SHA512_DIGEST_SIZE_IN_WORDS   16
 
#define CRYS_HASH_SHA224_DIGEST_SIZE_IN_BYTES   28
 
#define CRYS_HASH_SHA256_DIGEST_SIZE_IN_BYTES   32
 
#define CRYS_HASH_SHA384_DIGEST_SIZE_IN_BYTES   48
 
#define CRYS_HASH_SHA512_DIGEST_SIZE_IN_BYTES   64
 
#define CRYS_HASH_BLOCK_SIZE_IN_WORDS   16
 
#define CRYS_HASH_BLOCK_SIZE_IN_BYTES   64
 
#define CRYS_HASH_SHA512_BLOCK_SIZE_IN_WORDS   32
 
#define CRYS_HASH_SHA512_BLOCK_SIZE_IN_BYTES   128
 
#define CRYS_HASH_UPDATE_DATA_MAX_SIZE_IN_BYTES   (1 << 29)
 

Typedefs

typedef uint32_t CRYS_HASH_Result_t [16]
 
typedef struct
CRYS_HASHUserContext_t 
CRYS_HASHUserContext_t
 

Enumerations

enum  CRYS_HASH_OperationMode_t {
  CRYS_HASH_SHA1_mode = 0,
  CRYS_HASH_SHA224_mode = 1,
  CRYS_HASH_SHA256_mode = 2,
  CRYS_HASH_SHA384_mode = 3,
  CRYS_HASH_SHA512_mode = 4,
  CRYS_HASH_MD5_mode = 5,
  CRYS_HASH_NumOfModes,
  CRYS_HASH_OperationModeLast = 0x7FFFFFFF
}
 

Functions

CRYSError_t CRYS_HASH_Init (CRYS_HASHUserContext_t *ContextID_ptr, CRYS_HASH_OperationMode_t OperationMode)
 This function initializes the HASH machine and the HASH Context. More...
 
CRYSError_t CRYS_HASH_Update (CRYS_HASHUserContext_t *ContextID_ptr, uint8_t *DataIn_ptr, size_t DataInSize)
 This function processes a block of data to be HASHed. More...
 
CRYSError_t CRYS_HASH_Finish (CRYS_HASHUserContext_t *ContextID_ptr, CRYS_HASH_Result_t HashResultBuff)
 This function finalizes the hashing process of data block. More...
 
CRYSError_t CRYS_HASH_Free (CRYS_HASHUserContext_t *ContextID_ptr)
 This function is a utility function that frees the context if the operation has failed. More...
 
CRYSError_t CRYS_HASH (CRYS_HASH_OperationMode_t OperationMode, uint8_t *DataIn_ptr, size_t DataSize, CRYS_HASH_Result_t HashResultBuff)
 This function processes a single buffer of data. More...
 

Detailed Description

This file contains all of the enums and definitions that are used for the CRYS HASH APIs, as well as the APIs themselves.

This product supports the following HASH algorithms (or modes, according to product):

HASH calculation can be performed in either of the following two modes of operation:

The following is a typical HASH Block operation flow:

  1. CRYS_HASH_Init - this function initializes the HASH machine on the CRYS level by setting the context pointer that is used on the entire HASH operation.
  2. CRYS_HASH_Update - this function runs a HASH operation on a block of data allocated by the user. This function may be called as many times as required.
  3. CRYS_HASH_Finish - this function ends the HASH operation. It returns the digest result and clears the context.

Typedef Documentation

typedef uint32_t CRYS_HASH_Result_t[16]

Defines the HASH result buffer.

The user's context prototype - the argument type that is passed by the user to the APIs called.

Enumeration Type Documentation

HASH operation mode

Enumerator
CRYS_HASH_SHA1_mode 

SHA1

CRYS_HASH_SHA224_mode 

SHA224

CRYS_HASH_SHA256_mode 

SHA256

CRYS_HASH_SHA384_mode 

SHA384

CRYS_HASH_SHA512_mode 

SHA512

CRYS_HASH_MD5_mode 

MD5

Function Documentation

CRYSError_t CRYS_HASH ( CRYS_HASH_OperationMode_t  OperationMode,
uint8_t *  DataIn_ptr,
size_t  DataSize,
CRYS_HASH_Result_t  HashResultBuff 
)

This function processes a single buffer of data.

The function allocates an internal HASH Context, and initializes it with the cryptographic attributes that are needed for the HASH block operation (initialize H's value for the HASH algorithm). Then it processes the data block, calculating the HASH. Finally, it returns the data buffer's message digest.

Returns
CRYS_OK on success.
A non-zero value from crys_hash_error.h on failure.
Parameters
[in]OperationModeOne of the supported HASH modes, as defined in CRYS_HASH_OperationMode_t.
[in]DataIn_ptrPointer to the input data to be HASHed. The size of the scatter/gather list representing the data buffer is limited to 128 entries, and the size of each entry is limited to 64KB (fragments larger than 64KB are broken into fragments <= 64KB).
[in]DataSizeThe size of the data to be hashed in bytes.
[out]HashResultBuffPointer to a word-aligned 64 byte buffer. The actual size of the HASH result depends on CRYS_HASH_OperationMode_t.
CRYSError_t CRYS_HASH_Finish ( CRYS_HASHUserContext_t ContextID_ptr,
CRYS_HASH_Result_t  HashResultBuff 
)

This function finalizes the hashing process of data block.

It receives a handle to the HASH Context, which was previously initialized by CRYS_HASH_Init or by CRYS_HASH_Update. It "adds" a header to the data block according to the relevant HASH standard, and computes the final message digest.

Returns
CRYS_OK on success.
A non-zero value from crys_hash_error.h on failure.
Parameters
[in]ContextID_ptrPointer to the HASH context buffer allocated by the user that is used for the HASH machine operation.
[in]HashResultBuffPointer to the word-aligned 64 byte buffer. The actual size of the HASH result depends on CRYS_HASH_OperationMode_t.
CRYSError_t CRYS_HASH_Free ( CRYS_HASHUserContext_t ContextID_ptr)

This function is a utility function that frees the context if the operation has failed.

The function executes the following major steps:

  1. Checks the validity of all of the inputs of the function.
  2. Clears the user's context.
  3. Exits the handler with the OK code.
Returns
CRYS_OK on success.
A non-zero value from crys_hash_error.h on failure.
Parameters
[in]ContextID_ptrPointer to the HASH context buffer allocated by the user that is used for the HASH machine operation.
CRYSError_t CRYS_HASH_Init ( CRYS_HASHUserContext_t ContextID_ptr,
CRYS_HASH_OperationMode_t  OperationMode 
)

This function initializes the HASH machine and the HASH Context.

It receives as input a pointer to store the context handle to the HASH Context, and initializes the HASH Context with the cryptographic attributes that are needed for the HASH block operation (initializes H's value for the HASH algorithm).

Returns
CRYS_OK on success.
A non-zero value from crys_hash_error.h on failure.
Parameters
[in]ContextID_ptrPointer to the HASH context buffer allocated by the user that is used for the HASH machine operation.
[in]OperationModeOne of the supported HASH modes, as defined in CRYS_HASH_OperationMode_t.
CRYSError_t CRYS_HASH_Update ( CRYS_HASHUserContext_t ContextID_ptr,
uint8_t *  DataIn_ptr,
size_t  DataInSize 
)

This function processes a block of data to be HASHed.

It updates a HASH Context that was previously initialized by CRYS_HASH_Init or updated by a previous call to CRYS_HASH_Update.

Returns
CRYS_OK on success.
A non-zero value from crys_hash_error.h on failure.
Parameters
[in]ContextID_ptrPointer to the HASH context buffer allocated by the user, which is used for the HASH machine operation.
[in]DataIn_ptrPointer to the input data to be HASHed. The size of the scatter/gather list representing the data buffer is limited to 128 entries, and the size of each entry is limited to 64KB (fragments larger than 64KB are broken into fragments <= 64KB).
[in]DataInSizeByte size of the input data. Must be > 0. If not a multiple of the HASH block size (64 for MD5, SHA-1 and SHA-224/256, 128 for SHA-384/512), no further calls to CRYS_HASH_Update are allowed in this context, and only CRYS_HASH_Finish can be called to complete the computation.

Documentation feedback | Developer Zone | Subscribe | Updated