MCUX CLNS MCUX Crypto Library Normal Secure |

common_get_info.c

Example of version and configuration load functions.

/*--------------------------------------------------------------------------*/
/* Copyright 2020 NXP */
/* */
/* NXP Confidential. This software is owned or controlled by NXP and may */
/* only be used strictly in accordance with the applicable license terms. */
/* By expressly accepting such terms or by downloading, installing, */
/* activating and/or otherwise using the software, you are agreeing that */
/* you have read, and that you agree to comply with and are bound by, such */
/* license terms. If you do not agree to be bound by the applicable license */
/* terms, then you may not retain, install, activate or otherwise use the */
/* software. */
/*--------------------------------------------------------------------------*/
#include <mcuxCl_clns.h> // Test the CLNS component-independent functionality
#include <mcuxClCss.h> // Interface to the entire mcuxClCss component
#include <mcuxCsslFlowProtection.h> // Code flow protection
#include <stdbool.h> // bool type for the example's return code
bool common_get_info(void)
{
MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(result, token, mcuxClCss_Enable_Async()); // Enable the CSSv2.
// mcuxClCss_Enable_Async is a flow-protected function: Check the protection token and the return value
if((MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClCss_Enable_Async) != token) || (MCUXCLCSS_STATUS_OK_WAIT != result))
return false;
MCUX_CSSL_FP_FUNCTION_CALL_END();
MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(result, token, mcuxClCss_WaitForOperation(MCUXCLCSS_ERROR_FLAGS_CLEAR)); // Wait for the mcuxClCss_Enable_Async operation to complete.
// mcuxClCss_WaitForOperation is a flow-protected function: Check the protection token and the return value
if((MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClCss_WaitForOperation) != token) || (MCUXCLCSS_STATUS_OK != result))
return false;
MCUX_CSSL_FP_FUNCTION_CALL_END();
// Read the CSS hardware version.
mcuxClCss_HwVersion_t hw_version;
MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(result, token, mcuxClCss_GetHwVersion(&hw_version));
// mcuxClCss_GetHwVersion is a flow-protected function: Check the protection token and the return value
if((MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClCss_GetHwVersion) != token) || (MCUXCLCSS_STATUS_OK != result))
return false;
MCUX_CSSL_FP_FUNCTION_CALL_END();
// Access and store hw_version struct elements
uint32_t revision = hw_version.bits.revision; // Extended revision version
uint32_t minor = hw_version.bits.minor; // Minor version
uint32_t major = hw_version.bits.major; // Major version
uint32_t level = hw_version.bits.level; // Release level version
// Read the CSS hardware configuration bitmap.
mcuxClCss_HwConfig_t config;
MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(result, token, mcuxClCss_GetHwConfig(&config));
// mcuxClCss_GetHwConfig is a flow-protected function: Check the protection token and the return value
if((MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClCss_GetHwConfig) != token) || (MCUXCLCSS_STATUS_OK != result))
return false;
MCUX_CSSL_FP_FUNCTION_CALL_END();
// Access and store config struct elements
uint32_t ciphersup = config.bits.ciphersup; // cipher command not supported
uint32_t authciphersup = config.bits.authciphersup; // auth_cipher command not supported
uint32_t ecsignsup = config.bits.ecsignsup; // ecsign command not supported
uint32_t ecvfysup = config.bits.ecvfysup; // ecvfy command not supported
uint32_t eckxchsup = config.bits.eckxchsup; // dhkey_xch command is supported
uint32_t keygensup = config.bits.keygensup; // keygen command not supported
uint32_t keyinsup = config.bits.keyinsup; // keyin command not supported
uint32_t keyoutsup = config.bits.keyoutsup; // keyout command not supported
uint32_t kdeletesup = config.bits.kdeletesup; // kdelete command not supported
uint32_t ckdfsup = config.bits.ckdfsup; // ckdf command not supported
uint32_t hkdfsup = config.bits.hkdfsup; // hkdf command not supported
uint32_t tlsinitsup = config.bits.tlsinitsup; // tls_init command not supported
uint32_t hashsup = config.bits.hashsup; // hash command not supported
uint32_t hmacsup = config.bits.hmacsup; // hmac command not supported
uint32_t drbgreqsub = config.bits.drbgreqsub; // drbg_req command not supported
uint32_t dtrgncfgloadsup = config.bits.dtrgncfgloadsup; // dtrng_cfg_load command is not supported
uint32_t dtrngevalsup = config.bits.dtrngevalsup; // dtrng_eval command not supported
char const* sw_version = mcuxCl_GetVersion(); // Read the CLNS version string that uniquely identifies this release of the CLNS.
// MCUXCL_VERSION_MAX_SIZE is the maximum size in bytes of the version string.
MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(result, token, mcuxClCss_Disable()); // Disable the CSSv2.
// mcuxClCss_Disable is a flow-protected function: Check the protection token and the return value
if((MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClCss_Disable) != token) || (MCUXCLCSS_STATUS_OK != result))
return false;
MCUX_CSSL_FP_FUNCTION_CALL_END();
return true;
}