MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxCsslSecureCounter_SW_Local.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------------*/
2/* Copyright 2020-2023, 2025 NXP */
3/* */
4/* SPDX-License-Identifier: BSD-3-Clause */
5/* */
6/* Redistribution and use in source and binary forms, with or without */
7/* modification, are permitted provided that the following conditions are */
8/* met: */
9/* */
10/* 1. Redistributions of source code must retain the above copyright */
11/* notice, this list of conditions and the following disclaimer. */
12/* */
13/* 2. Redistributions in binary form must reproduce the above copyright */
14/* notice, this list of conditions and the following disclaimer in the */
15/* documentation and/or other materials provided with the distribution. */
16/* */
17/* 3. Neither the name of the copyright holder nor the names of its */
18/* contributors may be used to endorse or promote products derived from */
19/* this software without specific prior written permission. */
20/* */
21/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS */
22/* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
23/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
24/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
25/* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
26/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
27/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR */
28/* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
29/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
30/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
31/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
32/*--------------------------------------------------------------------------*/
33
39
40#ifndef MCUXCSSLSECURECOUNTER_SW_LOCAL_H_
41#define MCUXCSSLSECURECOUNTER_SW_LOCAL_H_
42
43#include <mcuxClCore_Macros.h>
44
52
53
61
67#define MCUX_CSSL_SC_COUNTER_NAME \
68 mcuxCsslSecureCounter
69
70/****************************************************************************/
71/* Constants */
72/****************************************************************************/
73
79#define MCUX_CSSL_SC_CHECK_PASSED_IMPL (0xA5A5A5A5u)
80
86#define MCUX_CSSL_SC_CHECK_FAILED_IMPL (~ MCUX_CSSL_SC_CHECK_PASSED_IMPL)
87
93#define MCUX_CSSL_SC_COUNTER_TYPE_IMPL \
94 register uint32_t
95
101#define MCUX_CSSL_SC_VALUE_TYPE_IMPL \
102 static const uint32_t
103
109#define MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL \
110 uint32_t
111
112/****************************************************************************/
113/* Initialization */
114/****************************************************************************/
115
121#define MCUX_CSSL_SC_ALLOC_IMPL() \
122 MCUX_CSSL_SC_COUNTER_TYPE_IMPL MCUX_CSSL_SC_COUNTER_NAME
123
131#define MCUX_CSSL_SC_INIT_IMPL(value) \
132 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
133 MCUX_CSSL_SC_ALLOC_IMPL() = ((MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value)) \
134 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
135
136/****************************************************************************/
137/* Check */
138/****************************************************************************/
139
149#define MCUX_CSSL_SC_CHECK_IMPL(value) \
150 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
151 (MCUX_CSSL_SC_CHECK_FAILED_IMPL ^ (MCUX_CSSL_SC_COUNTER_NAME - (((MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value)) + 1u))) \
152 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
153
154/****************************************************************************/
155/* Counter increment */
156/****************************************************************************/
162
172#define MCUX_CSSL_SC_ADD_IMPL(value) \
173 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
174 MCUXCLCORE_DONOTOPTIMIZE(MCUX_CSSL_SC_COUNTER_NAME); \
175 MCUX_CSSL_SC_COUNTER_NAME += (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value); \
176 MCUXCLCORE_DONOTOPTIMIZE(MCUX_CSSL_SC_COUNTER_NAME); \
177 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
178
188#define MCUX_CSSL_SC_ADD_ON_CALL_IMPL(value) \
189 MCUX_CSSL_SC_ADD_IMPL(value)
190
198#define MCUX_CSSL_SC_ADD_0X1_IMPL() \
199 MCUX_CSSL_SC_ADD_IMPL(0x1u)
200
208#define MCUX_CSSL_SC_ADD_0X10_IMPL() \
209 MCUX_CSSL_SC_ADD_IMPL(0x10u)
210
218#define MCUX_CSSL_SC_ADD_0X100_IMPL() \
219 MCUX_CSSL_SC_ADD_IMPL(0x100u)
220
221/****************************************************************************/
222/* Counter decrement */
223/****************************************************************************/
229
239#define MCUX_CSSL_SC_SUB_IMPL(value) \
240 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
241 MCUX_CSSL_SC_COUNTER_NAME -= (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value) \
242 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
243
251#define MCUX_CSSL_SC_SUB_0X1_IMPL() \
252 MCUX_CSSL_SC_SUB_IMPL(0x1u)
253
261#define MCUX_CSSL_SC_SUB_0X10_IMPL() \
262 MCUX_CSSL_SC_SUB_IMPL(0x10u)
263
271#define MCUX_CSSL_SC_SUB_0X100_IMPL() \
272 MCUX_CSSL_SC_SUB_IMPL(0x100u)
273
274/****************************************************************************/
275/* Direct access (optional) */
276/****************************************************************************/
285
297#define MCUX_CSSL_SC_VALUE_IMPL() \
298 MCUX_CSSL_SC_COUNTER_NAME
299
312#define MCUX_CSSL_SC_ASSIGN_IMPL(value) \
313 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
314 MCUX_CSSL_SC_COUNTER_NAME = (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value) \
315 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
316
317#endif /* MCUXCSSLSECURECOUNTER_SW_LOCAL_H_ */
Definition of macros.