MCUX CLNS
MCUX Crypto Library Normal Secure
mcuxCsslFlowProtection.h
Go to the documentation of this file.
1 /*--------------------------------------------------------------------------*/
2 /* Copyright 2020-2023 NXP */
3 /* */
4 /* NXP Confidential. This software is owned or controlled by NXP and may */
5 /* only be used strictly in accordance with the applicable license terms. */
6 /* By expressly accepting such terms or by downloading, installing, */
7 /* activating and/or otherwise using the software, you are agreeing that */
8 /* you have read, and that you agree to comply with and are bound by, such */
9 /* license terms. If you do not agree to be bound by the applicable license */
10 /* terms, then you may not retain, install, activate or otherwise use the */
11 /* software. */
12 /*--------------------------------------------------------------------------*/
13 
19 #ifndef MCUX_CSSL_FLOW_PROTECTION_H_
20 #define MCUX_CSSL_FLOW_PROTECTION_H_
21 
22 /* Include the actual implementation of the flow protection mechanism. */
24 
58 #ifdef __COVERITY__
59 #pragma coverity compliance block deviate MISRA_C_2012_Rule_3_1 "Comments outline example sequences. For more readability, additional inner comments might be added."
60 #endif
61 
81 #define MCUX_CSSL_FP_PROTECTED_TYPE(resultType) \
82  MCUX_CSSL_FP_PROTECTED_TYPE_IMPL(resultType)
83 
96 #define MCUX_CSSL_FP_COUNTER_STMT(statement) \
97  MCUX_CSSL_FP_COUNTER_STMT_IMPL(statement)
98 
99 
125 #define MCUX_CSSL_FP_FUNCTION_DECL(...) \
126  MCUX_CSSL_FP_FUNCTION_DECL_IMPL(__VA_ARGS__)
127 
159 #define MCUX_CSSL_FP_FUNCTION_DEF(...) \
160  MCUX_CSSL_FP_FUNCTION_DEF_IMPL(__VA_ARGS__)
161 
195 #define MCUX_CSSL_FP_FUNCTION_POINTER(type, definition) \
196  MCUX_CSSL_FP_FUNCTION_POINTER_IMPL(type, definition)
197 
244 #define MCUX_CSSL_FP_FUNCTION_ENTRY(...) \
245  MCUX_CSSL_FP_FUNCTION_ENTRY_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
246 
286 #define MCUX_CSSL_FP_FUNCTION_EXIT(...) \
287  MCUX_CSSL_FP_FUNCTION_EXIT_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
288 
325 #define MCUX_CSSL_FP_FUNCTION_EXIT_WITH_CHECK(...) \
326  MCUX_CSSL_FP_FUNCTION_EXIT_WITH_CHECK_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
327 
365 #define MCUX_CSSL_FP_FUNCTION_EXIT_VOID(...) \
366  MCUX_CSSL_FP_FUNCTION_EXIT_VOID_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
367 
375 #define MCUX_CSSL_FP_RESULT(return) \
376  MCUX_CSSL_FP_RESULT_IMPL(return)
377 
388 #define MCUX_CSSL_FP_PROTECTION_TOKEN(return) \
389  MCUX_CSSL_FP_PROTECTION_TOKEN_IMPL(return)
390 
427 #define MCUX_CSSL_FP_FUNCTION_CALL(...) \
428  MCUX_CSSL_FP_FUNCTION_CALL_IMPL(__VA_ARGS__)
429 
462 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID(...) \
463  MCUX_CSSL_FP_FUNCTION_CALL_VOID_IMPL(__VA_ARGS__)
464 
500 #define MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED(...) \
501  MCUX_CSSL_FP_FUNCTION_CALL_PROTECTED_IMPL(__VA_ARGS__)
502 
536 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED(...) \
537  MCUX_CSSL_FP_FUNCTION_CALL_VOID_PROTECTED_IMPL(__VA_ARGS__)
538 
576 #define MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(...) \
577  MCUX_CSSL_FP_FUNCTION_CALL_BEGIN_IMPL(__VA_ARGS__)
578 
611 #define MCUX_CSSL_FP_FUNCTION_CALL_END(...) \
612  MCUX_CSSL_FP_FUNCTION_CALL_END_IMPL(__VA_ARGS__)
613 
647 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID_BEGIN(...) \
648  MCUX_CSSL_FP_FUNCTION_CALL_VOID_BEGIN_IMPL(__VA_ARGS__)
649 
678 #define MCUX_CSSL_FP_FUNCTION_CALL_VOID_END(...) \
679  MCUX_CSSL_FP_FUNCTION_CALL_VOID_END_IMPL(__VA_ARGS__)
680 
730 #define MCUX_CSSL_FP_FUNCTION_CALLED(...) \
731  MCUX_CSSL_FP_FUNCTION_CALLED_IMPL(__VA_ARGS__)
732 
733 
765 #define MCUX_CSSL_FP_FUNCTION_ENTERED(id) \
766  MCUX_CSSL_FP_FUNCTION_ENTERED_IMPL(id)
767 
768 
805 #define MCUX_CSSL_FP_LOOP_DECL(id) \
806  MCUX_CSSL_FP_LOOP_DECL_IMPL(id)
807 
833 #define MCUX_CSSL_FP_LOOP_ITERATION(...) \
834  MCUX_CSSL_FP_LOOP_ITERATION_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
835 
868 #define MCUX_CSSL_FP_LOOP_ITERATIONS(id, count) \
869  MCUX_CSSL_FP_LOOP_ITERATIONS_IMPL(id, count)
870 
871 
872 
914 #define MCUX_CSSL_FP_BRANCH_DECL(id) \
915  MCUX_CSSL_FP_BRANCH_DECL_IMPL(id)
916 
953 #define MCUX_CSSL_FP_BRANCH_POSITIVE(...) \
954  MCUX_CSSL_FP_BRANCH_POSITIVE_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
955 
992 #define MCUX_CSSL_FP_BRANCH_NEGATIVE(...) \
993  MCUX_CSSL_FP_BRANCH_NEGATIVE_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
994 
1035 #define MCUX_CSSL_FP_BRANCH_TAKEN_POSITIVE(...) \
1036  MCUX_CSSL_FP_BRANCH_TAKEN_POSITIVE_IMPL(__VA_ARGS__)
1037 
1080 #define MCUX_CSSL_FP_BRANCH_TAKEN_NEGATIVE(...) \
1081  MCUX_CSSL_FP_BRANCH_TAKEN_NEGATIVE_IMPL(__VA_ARGS__)
1082 
1083 
1084 
1137 #define MCUX_CSSL_FP_SWITCH_DECL(id) \
1138  MCUX_CSSL_FP_SWITCH_DECL_IMPL(id)
1139 
1186 #define MCUX_CSSL_FP_SWITCH_CASE(...) \
1187  MCUX_CSSL_FP_SWITCH_CASE_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
1188 
1234 #define MCUX_CSSL_FP_SWITCH_DEFAULT(...) \
1235  MCUX_CSSL_FP_SWITCH_DEFAULT_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
1236 
1288 #define MCUX_CSSL_FP_SWITCH_TAKEN(...) \
1289  MCUX_CSSL_FP_SWITCH_TAKEN_IMPL(__VA_ARGS__)
1290 
1340 #define MCUX_CSSL_FP_SWITCH_TAKEN_DEFAULT(...) \
1341  MCUX_CSSL_FP_SWITCH_TAKEN_DEFAULT_IMPL(__VA_ARGS__)
1342 
1343 
1344 
1377 #define MCUX_CSSL_FP_EXPECT(...) \
1378  MCUX_CSSL_FP_EXPECT_IMPL(__VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
1379 
1400 #define MCUX_CSSL_FP_CONDITIONAL(condition, ...) \
1401  MCUX_CSSL_FP_CONDITIONAL_IMPL((condition), __VA_ARGS__, MCUX_CSSL_FP_VOID_EXPECTATION_IMPL())
1402 
1403 #ifdef __COVERITY__
1404 #pragma coverity compliance end_block MISRA_C_2012_Rule_3_1
1405 #endif
1406 
1432 #define MCUX_CSSL_FP_ASSERT(...) \
1433  MCUX_CSSL_FP_ASSERT_IMPL(__VA_ARGS__)
1434 
1435 #endif /* MCUX_CSSL_FLOW_PROTECTION_H_ */
1436 
Selection of the implementation for the flow protection mechanism.