MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxClKey_Constants.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------------*/
2/* Copyright 2021-2025 NXP */
3/* */
4/* NXP Confidential and Proprietary. This software is owned or controlled */
5/* by NXP and may only be used strictly in accordance with the applicable */
6/* license terms. By expressly accepting such terms or by downloading, */
7/* installing, activating and/or otherwise using the software, you are */
8/* agreeing that you have read, and that you agree to comply with and are */
9/* bound by, such license terms. If you do not agree to be bound by the */
10/* applicable license terms, then you may not retain, install, activate or */
11/* otherwise use the software. */
12/*--------------------------------------------------------------------------*/
13
18
19#ifndef MCUXCLKEY_CONSTANTS_H_
20#define MCUXCLKEY_CONSTANTS_H_
21#include <ip_platform.h>
22
23#include <mcuxCsslAnalysis.h>
24#include <mcuxClConfig.h> // Exported features flags header
25
26/**********************************************
27 * CONSTANTS
28 **********************************************/
40#define MCUXCLKEY_STATUS_OK ((mcuxClKey_Status_t) 0x07772E03u)
41#define MCUXCLKEY_STATUS_ERROR ((mcuxClKey_Status_t) 0x07775330u)
42#define MCUXCLKEY_STATUS_FAILURE ((mcuxClKey_Status_t) 0x07775334u)
43#define MCUXCLKEY_STATUS_INVALID_INPUT ((mcuxClKey_Status_t) 0x07775338u)
44#define MCUXCLKEY_STATUS_KEYSLOT_ERROR ((mcuxClKey_Status_t) 0x0777533Cu)
45#define MCUXCLKEY_STATUS_FAULT_ATTACK ((mcuxClKey_Status_t) 0x0777F0F0u)
46#define MCUXCLKEY_STATUS_CRC_NOT_OK ((mcuxClKey_Status_t) 0x077753FCu)
47#define MCUXCLKEY_STATUS_ITERATIONS_EXCEEDED ((mcuxClKey_Status_t) 0x07775378u)
48#define MCUXCLKEY_STATUS_VALIDATION_PASSED ((mcuxClKey_Status_t) 0x07772E07u)
49#define MCUXCLKEY_STATUS_VALIDATION_FAILED ((mcuxClKey_Status_t) 0x07778930u)
51
57#define MCUXCLKEY_LOADSTATUS_NOTLOADED (0x0000U)
58#define MCUXCLKEY_LOADSTATUS_NOTLOADED_SLOTDEFINED (0x0001U)
59
60#define MCUXCLKEY_LOADSTATUS_LOCATION_MASK (0x000EU)
61#define MCUXCLKEY_LOADSTATUS_LOCATION_NONE (0x0000U)
62#define MCUXCLKEY_LOADSTATUS_LOCATION_COPRO (0x0002U)
63
64#define MCUXCLKEY_LOADSTATUS_OPTIONS_MASK (0xFFF0U)
65#define MCUXCLKEY_LOADSTATUS_OPTIONS_KEEPLOADED (0x0010U)
66#define MCUXCLKEY_LOADSTATUS_OPTIONS_WRITEONLY (0x0020U)
68
69
70/* Define algorithm IDs */
77#define MCUXCLKEY_ALGO_ID_DES (0x0030D000u)
78#define MCUXCLKEY_ALGO_ID_AES (0x00F01000u)
79#define MCUXCLKEY_ALGO_ID_RSA (0x00E02000u)
80#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP (0x00D03000u)
81#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GF2M (0x00C04000u)
82#define MCUXCLKEY_ALGO_ID_ECC_MONTDH (0x00B05000u)
83#define MCUXCLKEY_ALGO_ID_ECC_EDDSA (0x00A06000u)
84#define MCUXCLKEY_ALGO_ID_HMAC (0x00907000u)
85#define MCUXCLKEY_ALGO_ID_SM4 (0x00808000u)
86#define MCUXCLKEY_ALGO_ID_SM2 (0x00809000u)
87#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP_EPHEMERAL_CUSTOM (0x00709000u)
88#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP_STATIC_CUSTOM (0x0060A000u)
89#define MCUXCLKEY_ALGO_ID_KYBER (0x0050B000u)
90#define MCUXCLKEY_ALGO_ID_MLDSA (0x0040C000u)
91#define MCUXCLKEY_ALGO_ID_GMAC (0x00601000u)
92#define MCUXCLKEY_ALGO_ID_FFDH (0x0020E000u)
93#define MCUXCLKEY_ALGO_ID_ALGO_MASK (0x00FFF000u)
94
95#define MCUXCLKEY_ALGO_ID_SYMMETRIC_KEY (0x00000000u)
96#define MCUXCLKEY_ALGO_ID_PUBLIC_KEY (0x88000000u)
97#define MCUXCLKEY_ALGO_ID_PRIVATE_KEY (0x44000000u)
98#define MCUXCLKEY_ALGO_ID_PRIVATE_KEY_CRT (0x66000000u)
99#define MCUXCLKEY_ALGO_ID_KEY_PAIR (0xCC000000u)
100#define MCUXCLKEY_ALGO_ID_PRIVATE_KEY_CRT_DFA (0xEE000000u)
101
102#define MCUXCLKEY_ALGO_ID_USAGE_MASK (0xFF000000u)
104
105/* Define key sizes */
112#define MCUXCLKEY_SIZE_NOTUSED 0u
113#define MCUXCLKEY_SIZE_64 8u
114#define MCUXCLKEY_SIZE_128 16u
115#define MCUXCLKEY_SIZE_160 20u
116#define MCUXCLKEY_SIZE_192 24u
117#define MCUXCLKEY_SIZE_224 28u
118#define MCUXCLKEY_SIZE_256 32u
119#define MCUXCLKEY_SIZE_320 40u
120#define MCUXCLKEY_SIZE_384 48u
121#define MCUXCLKEY_SIZE_512 64u
122#define MCUXCLKEY_SIZE_521 66u
123#define MCUXCLKEY_SIZE_1024 1024u
124#define MCUXCLKEY_SIZE_2048 2048u
125#define MCUXCLKEY_SIZE_3072 3072u
126#define MCUXCLKEY_SIZE_4096 4096u
127#define MCUXCLKEY_SIZE_6144 6144u
128#define MCUXCLKEY_SIZE_8192 8192u
129
130// TODO CLNS-6135: replace these divides by a macro that ensures rounding up
131#define MCUXCLKEY_SIZE_64_IN_WORDS (MCUXCLKEY_SIZE_64 / sizeof(uint32_t))
132#define MCUXCLKEY_SIZE_128_IN_WORDS (MCUXCLKEY_SIZE_128 / sizeof(uint32_t))
133#define MCUXCLKEY_SIZE_160_IN_WORDS (MCUXCLKEY_SIZE_160 / sizeof(uint32_t))
134#define MCUXCLKEY_SIZE_192_IN_WORDS (MCUXCLKEY_SIZE_192 / sizeof(uint32_t))
135#define MCUXCLKEY_SIZE_224_IN_WORDS (MCUXCLKEY_SIZE_224 / sizeof(uint32_t))
136#define MCUXCLKEY_SIZE_256_IN_WORDS (MCUXCLKEY_SIZE_256 / sizeof(uint32_t))
137#define MCUXCLKEY_SIZE_320_IN_WORDS (MCUXCLKEY_SIZE_320 / sizeof(uint32_t))
138#define MCUXCLKEY_SIZE_384_IN_WORDS (MCUXCLKEY_SIZE_384 / sizeof(uint32_t))
139#define MCUXCLKEY_SIZE_512_IN_WORDS (MCUXCLKEY_SIZE_512 / sizeof(uint32_t))
140#define MCUXCLKEY_SIZE_521_IN_WORDS ((MCUXCLKEY_SIZE_521 + sizeof(uint32_t) - 1u) / sizeof(uint32_t))
141#define MCUXCLKEY_SIZE_1024_IN_WORDS (MCUXCLKEY_SIZE_1024 / (sizeof(uint32_t) * 8u))
142#define MCUXCLKEY_SIZE_2048_IN_WORDS (MCUXCLKEY_SIZE_2048 / (sizeof(uint32_t) * 8u))
143#define MCUXCLKEY_SIZE_3072_IN_WORDS (MCUXCLKEY_SIZE_3072 / (sizeof(uint32_t) * 8u))
144#define MCUXCLKEY_SIZE_4096_IN_WORDS (MCUXCLKEY_SIZE_4096 / (sizeof(uint32_t) * 8u))
145#define MCUXCLKEY_SIZE_6144_IN_WORDS (MCUXCLKEY_SIZE_6144 / (sizeof(uint32_t) * 8u))
146#define MCUXCLKEY_SIZE_8192_IN_WORDS (MCUXCLKEY_SIZE_8192 / (sizeof(uint32_t) * 8u))
148
149#define MCUXCLKEY_WA_SIZE_MAX 0U
150
151
158
159#define MCUXCLKEY_LOADOPTION_MASK (0xffffffffU)
161#define MCUXCLKEY_LOADOPTION_SLOT_MASK (0xffU)
162#define MCUXCLKEY_LOADOPTION_SLOT_INVALID (MCUXCLKEY_LOADOPTION_SLOT_MASK)
163
164
165#define MCUXCLKEY_LOADOPTION_SLOT_COPRO_MASK (0xc0U)
166#define MCUXCLKEY_LOADOPTION_SLOT_COPRO_SHIFT (6U)
167#define MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI ((uint32_t)0x01U << MCUXCLKEY_LOADOPTION_SLOT_COPRO_SHIFT)
168
169#define MCUXCLKEY_LOADOPTION_SLOT_SLOT_MASK (0x3fU)
170#define MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT (0U)
171
172#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_0 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)0U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
173#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_1 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)1U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
174#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_2 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)2U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
175#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_3 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)3U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
176#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_4 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)4U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
177#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_5 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)5U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
178#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_6 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)6U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
179#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_7 (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)7U << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
180
181#define MCUXCLKEY_LOADOPTION_SLOT_SGI_KEY_UNWRAP (MCUXCLKEY_LOADOPTION_SLOT_COPRO_SGI | ((uint32_t)SGI_UNWRAP_KEY_REGISTER_BANK << MCUXCLKEY_LOADOPTION_SLOT_SLOT_SHIFT))
182
183
185#define MCUXCLKEY_LOADOPTION_ALREADYLOADED_MASK (0x100U)
186#define MCUXCLKEY_LOADOPTION_ALREADYLOADED_SHIFT (8U)
187#define MCUXCLKEY_LOADOPTION_ALREADYLOADED ((uint32_t)0x1U << MCUXCLKEY_LOADOPTION_ALREADYLOADED_SHIFT)
188
190#define MCUXCLKEY_LOADOPTION_RFU_MASK (0xfffffe00U)
191// planned RFU: option for runtime WO keys
192
193
195
197
198#endif /* MCUXCLKEY_CONSTANTS_H_ */