Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TYBLE16_simple_data_logger TYBLE16_MP3_Air
CryptoCell HASH APIs
Data Structures | |
struct | CRYS_HASHUserContext_t |
Modules | |
CryptoCell Hash definitions | |
CryptoCell HASH specific errors | |
Typedefs | |
typedef uint32_t | CRYS_HASH_Result_t [CRYS_HASH_RESULT_SIZE_IN_WORDS] |
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 | |
CIMPORT_C 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. | |
CIMPORT_C 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. | |
CIMPORT_C CRYSError_t | CRYS_HASH_Finish (CRYS_HASHUserContext_t *ContextID_ptr, CRYS_HASH_Result_t HashResultBuff) |
This function finalizes the hashing process of data block. | |
CIMPORT_C 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. | |
CIMPORT_C 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. |
Detailed Description
This product supports the following HASH algorithms (or modes, according to product):
- CRYS_HASH_MD5 (producing 16 byte output).
- CRYS_HASH_SHA1 (producing 20 byte output).
- CRYS_HASH_SHA224 (producing 28 byte output).
- CRYS_HASH_SHA256 (producing 32 byte output).
- CRYS_HASH_SHA384 (producing 48 byte output).
- CRYS_HASH_SHA512 (producing 64 byte output).
HASH calculation can be performed in either of the following two modes of operation:
- Integrated operation - Processes all data in a single function call. This flow is applicable when all data is available prior to the cryptographic operation.
- Block operation - Processes a subset of the data buffers, and is called multiple times in a sequence. This flow is applicable when the next data buffer becomes available only during/after processing of the current data buffer.
The following is a typical HASH Block operation flow:
- 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.
- 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.
- 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[CRYS_HASH_RESULT_SIZE_IN_WORDS] |
HASH result buffer.
Definition at line 162 of file crys_hash.h.
typedef struct CRYS_HASHUserContext_t CRYS_HASHUserContext_t |
The user's context prototype - the argument type that is passed by the user to the HASH APIs. The context saves the state of the operation and must be saved by the user till the end of the APIs flow.
Enumeration Type Documentation
HASH operation mode
- Enumerator:
Definition at line 145 of file crys_hash.h.
Function Documentation
CIMPORT_C 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] OperationMode One of the supported HASH modes, as defined in CRYS_HASH_OperationMode_t. [in] DataIn_ptr Pointer 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] DataSize The size of the data to be hashed in bytes. [out] HashResultBuff Pointer to a word-aligned 64 byte buffer. The actual size of the HASH result depends on CRYS_HASH_OperationMode_t.
CIMPORT_C 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_ptr Pointer to the HASH context buffer allocated by the user that is used for the HASH machine operation. [in] HashResultBuff Pointer to the word-aligned 64 byte buffer. The actual size of the HASH result depends on CRYS_HASH_OperationMode_t.
CIMPORT_C 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:
- Checks the validity of all of the inputs of the function.
- Clears the user's context.
- 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_ptr Pointer to the HASH context buffer allocated by the user that is used for the HASH machine operation.
CIMPORT_C 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_ptr Pointer to the HASH context buffer allocated by the user that is used for the HASH machine operation. [in] OperationMode One of the supported HASH modes, as defined in CRYS_HASH_OperationMode_t.
CIMPORT_C 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_ptr Pointer to the HASH context buffer allocated by the user, which is used for the HASH machine operation. [in] DataIn_ptr Pointer to the input data to be HASHed. it is a one contiguous memory block. [in] DataInSize Byte 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.
Generated on Tue Jul 12 2022 13:55:21 by
