MCUX CLNS
MCUX Crypto Library Normal Secure
mcuxCsslSecureCounter_SW_Local.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 
20 #ifndef MCUXCSSLSECURECOUNTER_SW_LOCAL_H_
21 #define MCUXCSSLSECURECOUNTER_SW_LOCAL_H_
22 
45 #define MCUX_CSSL_SC_COUNTER_NAME \
46  mcuxCsslSecureCounter
47 
48 /****************************************************************************/
49 /* Constants */
50 /****************************************************************************/
51 
57 #define MCUX_CSSL_SC_CHECK_PASSED_IMPL (0xA5A5A5A5u)
58 
64 #define MCUX_CSSL_SC_CHECK_FAILED_IMPL (~ MCUX_CSSL_SC_CHECK_PASSED_IMPL)
65 
71 #define MCUX_CSSL_SC_COUNTER_TYPE_IMPL \
72  uint32_t
73 
79 #define MCUX_CSSL_SC_VALUE_TYPE_IMPL \
80  static const uint32_t
81 
87 #define MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL \
88  uint32_t
89 
90 /****************************************************************************/
91 /* Initialization */
92 /****************************************************************************/
93 
99 #define MCUX_CSSL_SC_ALLOC_IMPL() \
100  MCUX_CSSL_SC_COUNTER_TYPE_IMPL MCUX_CSSL_SC_COUNTER_NAME
101 
109 #define MCUX_CSSL_SC_INIT_IMPL(value) \
110  MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
111  MCUX_CSSL_SC_ALLOC_IMPL() = ((MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value)) \
112  MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
113 
114 /****************************************************************************/
115 /* Check */
116 /****************************************************************************/
117 
127 #define MCUX_CSSL_SC_CHECK_IMPL(value) \
128  MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
129  (MCUX_CSSL_SC_CHECK_FAILED_IMPL ^ (MCUX_CSSL_SC_COUNTER_NAME - (((MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value)) + 1u))) \
130  MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
131 
132 /****************************************************************************/
133 /* Counter increment */
134 /****************************************************************************/
150 #define MCUX_CSSL_SC_ADD_IMPL(value) \
151  MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
152  MCUX_CSSL_SC_COUNTER_NAME += (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value) \
153  MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
154 
164 #define MCUX_CSSL_SC_ADD_ON_CALL_IMPL(value) \
165  MCUX_CSSL_SC_ADD_IMPL(value)
166 
174 #define MCUX_CSSL_SC_ADD_0X1_IMPL() \
175  MCUX_CSSL_SC_ADD_IMPL(0x1u)
176 
184 #define MCUX_CSSL_SC_ADD_0X10_IMPL() \
185  MCUX_CSSL_SC_ADD_IMPL(0x10u)
186 
194 #define MCUX_CSSL_SC_ADD_0X100_IMPL() \
195  MCUX_CSSL_SC_ADD_IMPL(0x100u)
196 
197 /****************************************************************************/
198 /* Counter decrement */
199 /****************************************************************************/
215 #define MCUX_CSSL_SC_SUB_IMPL(value) \
216  MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
217  MCUX_CSSL_SC_COUNTER_NAME -= (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value) \
218  MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
219 
227 #define MCUX_CSSL_SC_SUB_0X1_IMPL() \
228  MCUX_CSSL_SC_SUB_IMPL(0x1u)
229 
237 #define MCUX_CSSL_SC_SUB_0X10_IMPL() \
238  MCUX_CSSL_SC_SUB_IMPL(0x10u)
239 
247 #define MCUX_CSSL_SC_SUB_0X100_IMPL() \
248  MCUX_CSSL_SC_SUB_IMPL(0x100u)
249 
250 /****************************************************************************/
251 /* Direct access (optional) */
252 /****************************************************************************/
273 #define MCUX_CSSL_SC_VALUE_IMPL() \
274  MCUX_CSSL_SC_COUNTER_NAME
275 
288 #define MCUX_CSSL_SC_ASSIGN_IMPL(value) \
289  MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
290  MCUX_CSSL_SC_COUNTER_NAME = (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value) \
291  MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
292 
293 #endif /* MCUXCSSLSECURECOUNTER_SW_LOCAL_H_ */