MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxCsslMemory_Compare Function Definitions

mcuxCsslMemory_Compare Function Definitions More...

Functions

mcuxCsslMemory_Status_t mcuxCsslMemory_Compare (mcuxCsslParamIntegrity_Checksum_t chk, void const *pLhs, void const *pRhs, uint32_t length)
 Compares the two memory regions lhs and rhs.

Detailed Description

mcuxCsslMemory_Compare Function Definitions

Function Documentation

◆ mcuxCsslMemory_Compare()

mcuxCsslMemory_Status_t mcuxCsslMemory_Compare ( mcuxCsslParamIntegrity_Checksum_t chk,
void const * pLhs,
void const * pRhs,
uint32_t length )

Compares the two memory regions lhs and rhs.

The implementation is secure in the following aspects:

  • Constant execution time: The execution sequence of the code is always identical for equal length parameters, i.e. no branches are performed based on the data in pLhs or pRhs.
  • Parameter integrity protection: An incorrect parameter checksum makes the function return immediately.
  • Code flow protection: The function call is protected. Additionally, the result depends on all steps of the calculation.
Parameters
chkThe parameter checksum, generated with #MCUX_CSSL_PI_PROTECT.
pLhsThe left-hand side data to compare. Must not be NULL.
pRhsThe right-hand side data to compare. Must not be NULL.
lengthThe number of bytes to compare.
Returns
A status code encapsulated in a flow-protection type.
Return values
MCUXCSSLMEMORY_STATUS_ZERO_LENGTHIf length is zero.
MCUXCSSLMEMORY_STATUS_EQUALIf the contents of lhs and rhs are equal.
MCUXCSSLMEMORY_STATUS_NOT_EQUALIf the contents of lhs and rhs are not equal.
MCUXCSSLMEMORY_STATUS_INVALID_PARAMETERIf one of the parameters was invalid (i.e. lhs or rhs was NULL).
MCUXCSSLMEMORY_STATUS_FAULTIf a fault was detected.
Examples
mcuxCsslMemory_Compare_example.c.