/** * @file a71ch_ex.h * @author NXP Semiconductors * @version 1.0 * @par License * * Copyright 2016 NXP * SPDX-License-Identifier: Apache-2.0 * * @par Description * This file implements the host API examples for the A71CH secure module. * * @par History * 1.0 2016-08-01 : Initial version * *****************************************************************************/ #ifndef _A71CH_EX_ #define _A71CH_EX_ #include "sm_types.h" #include "a71ch_api.h" #include "sm_const.h" #ifdef __cplusplus extern "C" { #endif /// @cond #define REDUCED_PACKETSIZE_FALSE (0x00) #define REDUCED_PACKETSIZE_TRUE (0x01) // When A71CH_ALLOW_DISABLE_DEBUG_MODE is defined, the example code // will permanently disable the DEBUG_MODE in case exDebugPermanentlyDisableDebugMode() is invoked. // // #define A71CH_ALLOW_DISABLE_DEBUG_MODE /// @endcond #define PLAIN_PSK 0x00 //!< Select RFC4279 example mode #define ECDH_PSK 0x01 //!< Select RFC5489 example mode #define DURATION_TEST (0x01) //!< Bit pattern to request a duration test (valid on some example functions) #define MEASURE_EXEC_TIME (0x02) //!< Bit pattern to trigger the measurement of execution time (valid on some example functions) #define EXTENDED_TEST (0x04) //!< Bit pattern to trigger an extended test (valid on some example functions) /// @cond A71CH Example Utility functions U8 axExAuthenticate(U8 *keyEnc, U8 *keyMac, U8 *keyDek); U8 axExCreateAndSetInitialHostScpKeys(U8 *keyEnc, U8 *keyMac, U8 *keyDek); /// @endcond /** \name Example functions illustrating usage of A71CH functionality @{ */ U8 exAes(void); U8 exAesRfc3394(U8 initMode); U8 exAesRfc3394Precooked(U8 initMode); U8 exSymHkdf(U8 initMode); U8 exSymHmacSha256(U8 initMode); U8 exConfig(void); U8 exEccNohc(void); U8 exGPStorage(U8 tstMode); U8 exMisc(void); U8 exPsk(void); U8 exScp(void); U8 exSst(void); U8 exSstKp(void); U8 exSstKeyPair(U8 initMode); U8 exPskTls1_2(U8 initMode, U8 pskMode); /** @}*/ /** \name Walkthrough example (illustrating typical product use) @{ */ U8 exWalkthrough(void); /** @}*/ /** \name Example functions illustrating specific Debug Mode functions (only available in case the Applet is in Debug Mode) @{ */ U8 exDebugMode(U8 testMode); U8 exDbgReflect(int nLower, int nUpper); U8 exDbgInternalMemory(U8 initMode); U8 exPermanentlyDisableDebugMode(void); /** @}*/ /** \name Example function illustrating system boot in combination with SCP03 session key handover @{ */ U8 exBoot(U8 bootMode); /** @}*/ #ifdef __cplusplus } #endif #endif //_A71CH_EX_