32 #define TRACE_LEVEL CRYPTO_TRACE_LEVEL
35 #include <ip_platform.h>
36 #include <mcuxClEls.h>
37 #include <mcuxClSession.h>
38 #include <mcuxClRandom.h>
39 #include <mcuxClRandomModes.h>
40 #include <mcuxClRsa.h>
41 #include <mcuxClEcc.h>
48 #define MAX_CPUWA_SIZE MCUXCLCORE_MAX(MCUXCLRANDOMMODES_NCINIT_WACPU_SIZE, \
49 MCUXCLCORE_MAX(MCUXCLRANDOMMODES_INIT_WACPU_SIZE, \
50 MCUXCLCORE_MAX(MCUXCLRSA_VERIFY_NOVERIFY_WACPU_SIZE, \
51 MCUXCLCORE_MAX(MCUXCLRSA_SIGN_PLAIN_NOENCODE_4096_WACPU_SIZE, \
52 MCUXCLCORE_MAX(MCUXCLRSA_SIGN_CRT_NOENCODE_4096_WACPU_SIZE, \
53 MCUXCLCORE_MAX(MCUXCLECC_POINTMULT_WACPU_SIZE, \
54 MCUXCLCORE_MAX(MCUXCLECC_SIGN_WACPU_SIZE, \
55 MCUXCLCORE_MAX(MCUXCLECC_VERIFY_WACPU_SIZE, \
56 MCUXCLCORE_MAX(MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE25519_WACPU_SIZE, \
57 MCUXCLCORE_MAX(MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE448_WACPU_SIZE, \
58 MCUXCLCORE_MAX(MCUXCLECC_EDDSA_GENERATEKEYPAIR_ED25519_WACPU_SIZE, \
59 MCUXCLCORE_MAX(MCUXCLECC_EDDSA_GENERATESIGNATURE_ED25519_WACPU_SIZE, \
60 MCUXCLECC_EDDSA_VERIFYSIGNATURE_ED25519_WACPU_SIZE))))))))))))
63 #define MAX_PKCWA_SIZE MCUXCLCORE_MAX(MCUXCLRSA_VERIFY_4096_WAPKC_SIZE, \
64 MCUXCLCORE_MAX(MCUXCLRSA_SIGN_PLAIN_4096_WAPKC_SIZE, \
65 MCUXCLCORE_MAX(MCUXCLRSA_SIGN_CRT_4096_WAPKC_SIZE, \
66 MCUXCLCORE_MAX(MCUXCLECC_POINTMULT_WAPKC_SIZE_640, \
67 MCUXCLCORE_MAX(MCUXCLECC_SIGN_WAPKC_SIZE_640, \
68 MCUXCLCORE_MAX(MCUXCLECC_VERIFY_WAPKC_SIZE_640, \
69 MCUXCLCORE_MAX(MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE25519_WAPKC_SIZE, \
70 MCUXCLCORE_MAX(MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE448_WAPKC_SIZE, \
71 MCUXCLCORE_MAX(MCUXCLECC_EDDSA_GENERATEKEYPAIR_ED25519_WAPKC_SIZE, \
72 MCUXCLCORE_MAX(MCUXCLECC_EDDSA_GENERATESIGNATURE_ED25519_WAPKC_SIZE, \
73 MCUXCLECC_EDDSA_VERIFYSIGNATURE_ED25519_WAPKC_SIZE))))))))))
107 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(status,
token, mcuxClEls_Enable_Async());
110 if(
token != MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClEls_Enable_Async) ||
111 status != MCUXCLELS_STATUS_OK_WAIT)
117 MCUX_CSSL_FP_FUNCTION_CALL_END();
124 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(status,
token, mcuxClEls_WaitForOperation(
125 MCUXCLELS_ERROR_FLAGS_CLEAR));
128 if(
token != MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClEls_WaitForOperation) ||
129 status != MCUXCLELS_STATUS_OK)
135 MCUX_CSSL_FP_FUNCTION_CALL_END();
142 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(status,
token, mcuxClEls_Reset_Async(
143 MCUXCLELS_RESET_DO_NOT_CANCEL));
146 if(
token != MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClEls_Reset_Async) ||
147 status != MCUXCLELS_STATUS_OK_WAIT)
153 MCUX_CSSL_FP_FUNCTION_CALL_END();
160 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(status,
token, mcuxClEls_WaitForOperation(
161 MCUXCLELS_ERROR_FLAGS_CLEAR));
164 if(
token != MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClEls_WaitForOperation) ||
165 status != MCUXCLELS_STATUS_OK)
171 MCUX_CSSL_FP_FUNCTION_CALL_END();
178 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(status,
token, mcuxClSession_init(
183 if(
token != MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClSession_init) ||
184 status != MCUXCLSESSION_STATUS_OK)
190 MCUX_CSSL_FP_FUNCTION_CALL_END();
197 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(status,
token, mcuxClRandom_init(
198 &
elsSession, NULL, mcuxClRandomModes_Mode_ELS_Drbg));
201 if(
token != MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClRandom_init) ||
202 status != MCUXCLRANDOM_STATUS_OK)
208 MCUX_CSSL_FP_FUNCTION_CALL_END();
215 MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(status,
token, mcuxClRandom_ncInit(&
elsSession));
218 if(
token != MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClRandom_ncInit) ||
219 status != MCUXCLRANDOM_STATUS_OK)
225 MCUX_CSSL_FP_FUNCTION_CALL_END();
228 #if (MCXN947_CRYPTO_TRNG_SUPPORT == ENABLED)