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-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 MCUXCLKEY_CONSTANTS_H_
20#define MCUXCLKEY_CONSTANTS_H_
21
22#include <mcuxCsslAnalysis.h>
23#include <mcuxClConfig.h> // Exported features flags header
24
25/**********************************************
26 * CONSTANTS
27 **********************************************/
39#define MCUXCLKEY_STATUS_OK ((mcuxClKey_Status_t) 0x07772E03u)
40#define MCUXCLKEY_STATUS_ERROR ((mcuxClKey_Status_t) 0x07775330u)
41#define MCUXCLKEY_STATUS_FAILURE ((mcuxClKey_Status_t) 0x07775334u)
42#define MCUXCLKEY_STATUS_INVALID_INPUT ((mcuxClKey_Status_t) 0x07775338u)
43#define MCUXCLKEY_STATUS_FAULT_ATTACK ((mcuxClKey_Status_t) 0x0777F0F0u)
44#define MCUXCLKEY_STATUS_CRC_NOT_OK ((mcuxClKey_Status_t) 0x077753FCu)
45#define MCUXCLKEY_STATUS_NOT_SUPPORTED ((mcuxClKey_Status_t) 0x07775370u)
53#define MCUXCLKEY_LOADSTATUS_NOTLOADED 0x0000u
54#define MCUXCLKEY_LOADSTATUS_MEMORY 0x0001u
55#define MCUXCLKEY_LOADSTATUS_COPRO 0x0002u
56#define MCUXCLKEY_LOADSTATUS_KEEPLOADED 0x8000u
60/* Define algorithm IDs */
67#define MCUXCLKEY_ALGO_ID_DES 0x030Du
68#define MCUXCLKEY_ALGO_ID_AES 0x0F01u
69#define MCUXCLKEY_ALGO_ID_RSA 0x0E02u
70#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP 0x0D03u
71#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GF2M 0x0C04u
72#define MCUXCLKEY_ALGO_ID_ECC_MONTDH 0x0B05u
73#define MCUXCLKEY_ALGO_ID_ECC_EDDSA 0x0A06u
74#define MCUXCLKEY_ALGO_ID_HMAC 0x0907u
75#define MCUXCLKEY_ALGO_ID_SM4 0x0808u
76#define MCUXCLKEY_ALGO_ID_SM2 0x0809u
77#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP_EPHEMERAL_CUSTOM 0x0709u
78#define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP_STATIC_CUSTOM 0x060Au
79#define MCUXCLKEY_ALGO_ID_KYBER 0x050Bu
80#define MCUXCLKEY_ALGO_ID_DILITHIUM 0x040Cu
81#define MCUXCLKEY_ALGO_ID_ALGO_MASK 0x0FFFu
82
83#define MCUXCLKEY_ALGO_ID_SYMMETRIC_KEY 0x0000u
84#define MCUXCLKEY_ALGO_ID_PUBLIC_KEY 0x8000u
85#define MCUXCLKEY_ALGO_ID_PRIVATE_KEY 0x4000u
86#define MCUXCLKEY_ALGO_ID_PRIVATE_KEY_CRT 0x6000u
87#define MCUXCLKEY_ALGO_ID_KEY_PAIR 0xC000u
88#define MCUXCLKEY_ALGO_ID_PRIVATE_KEY_CRT_DFA 0xE000u
89
90#define MCUXCLKEY_ALGO_ID_USAGE_MASK 0xF000u
93/* Define key sizes */
100#define MCUXCLKEY_SIZE_NOTUSED 0u
101#define MCUXCLKEY_SIZE_64 8u
102#define MCUXCLKEY_SIZE_128 16u
103#define MCUXCLKEY_SIZE_160 20u
104#define MCUXCLKEY_SIZE_192 24u
105#define MCUXCLKEY_SIZE_224 28u
106#define MCUXCLKEY_SIZE_256 32u
107#define MCUXCLKEY_SIZE_320 40u
108#define MCUXCLKEY_SIZE_384 48u
109#define MCUXCLKEY_SIZE_512 64u
110#define MCUXCLKEY_SIZE_521 66u
111#define MCUXCLKEY_SIZE_1024 1024u
112#define MCUXCLKEY_SIZE_2048 2048u
113#define MCUXCLKEY_SIZE_3072 3072u
114#define MCUXCLKEY_SIZE_4096 4096u
115#define MCUXCLKEY_SIZE_6144 6144u
116#define MCUXCLKEY_SIZE_8192 8192u
117
118// TODO CLNS-6135: replace these divides by a macro that ensures rounding up
119#define MCUXCLKEY_SIZE_64_IN_WORDS (MCUXCLKEY_SIZE_64 / sizeof(uint32_t))
120#define MCUXCLKEY_SIZE_128_IN_WORDS (MCUXCLKEY_SIZE_128 / sizeof(uint32_t))
121#define MCUXCLKEY_SIZE_160_IN_WORDS (MCUXCLKEY_SIZE_160 / sizeof(uint32_t))
122#define MCUXCLKEY_SIZE_192_IN_WORDS (MCUXCLKEY_SIZE_192 / sizeof(uint32_t))
123#define MCUXCLKEY_SIZE_224_IN_WORDS (MCUXCLKEY_SIZE_224 / sizeof(uint32_t))
124#define MCUXCLKEY_SIZE_256_IN_WORDS (MCUXCLKEY_SIZE_256 / sizeof(uint32_t))
125#define MCUXCLKEY_SIZE_320_IN_WORDS (MCUXCLKEY_SIZE_320 / sizeof(uint32_t))
126#define MCUXCLKEY_SIZE_384_IN_WORDS (MCUXCLKEY_SIZE_384 / sizeof(uint32_t))
127#define MCUXCLKEY_SIZE_512_IN_WORDS (MCUXCLKEY_SIZE_512 / sizeof(uint32_t))
128#define MCUXCLKEY_SIZE_521_IN_WORDS ((MCUXCLKEY_SIZE_521 + sizeof(uint32_t) - 1u) / sizeof(uint32_t))
129#define MCUXCLKEY_SIZE_1024_IN_WORDS (MCUXCLKEY_SIZE_1024 / (sizeof(uint32_t) * 8u))
130#define MCUXCLKEY_SIZE_2048_IN_WORDS (MCUXCLKEY_SIZE_2048 / (sizeof(uint32_t) * 8u))
131#define MCUXCLKEY_SIZE_3072_IN_WORDS (MCUXCLKEY_SIZE_3072 / (sizeof(uint32_t) * 8u))
132#define MCUXCLKEY_SIZE_4096_IN_WORDS (MCUXCLKEY_SIZE_4096 / (sizeof(uint32_t) * 8u))
133#define MCUXCLKEY_SIZE_6144_IN_WORDS (MCUXCLKEY_SIZE_6144 / (sizeof(uint32_t) * 8u))
134#define MCUXCLKEY_SIZE_8192_IN_WORDS (MCUXCLKEY_SIZE_8192 / (sizeof(uint32_t) * 8u))
137#ifdef MCUXCL_FEATURE_KEY_DERIVATION_NIST_SP800_108
138
140#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_SHIFT (0u)
141#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_MASK ((uint32_t)0x3u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_SHIFT)
142
143#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_8 ((uint32_t)0u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_SHIFT)
144#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_16 ((uint32_t)1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_SHIFT)
145#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_24 ((uint32_t)2u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_SHIFT)
146#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_32 ((uint32_t)3u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_SIZE_SHIFT)
147
149MCUX_CSSL_ANALYSIS_START_PATTERN_DESCRIPTIVE_IDENTIFIER()
150#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_SHIFT (2u)
151#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_MASK ((uint32_t)0x3u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_SHIFT)
152
153#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_32 ((uint32_t)0u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_SHIFT)
154#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_24 ((uint32_t)1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_SHIFT)
155#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_16 ((uint32_t)2u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_SHIFT)
156#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_8 ((uint32_t)3u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_REQUESTED_KEYLENGTH_ENCODING_SIZE_SHIFT)
157MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_AMBIGUOUS_IDENTIFIER()
158
159
160#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_ENDIANESS_SHIFT (4u)
161#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_ENDIANESS_MASK ((uint32_t)0x1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_ENDIANESS_SHIFT)
162
163#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_ENDIANESS_BIG_ENDIAN ((uint32_t)0u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_ENDIANESS_SHIFT)
164#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_ENDIANESS_LITTLE_ENDIAN ((uint32_t)1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_ENDIANESS_SHIFT)
165
167#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_SEPARATOR_SHIFT (5u)
168#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_SEPARATOR_MASK ((uint32_t)0x1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_SEPARATOR_SHIFT)
169
170#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_SEPARATOR_ENABLED ((uint32_t)0u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_SEPARATOR_SHIFT)
171#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_SEPARATOR_DISABLED ((uint32_t)1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_SEPARATOR_SHIFT)
172
174#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_INCLUSION_SHIFT (6u)
175#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_INCLUSION_MASK ((uint32_t)1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_INCLUSION_SHIFT)
176
177#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_EXCLUDE_COUNTER ((uint32_t)0u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_INCLUSION_SHIFT)
178#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_INCLUDE_COUNTER ((uint32_t)1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_COUNTER_INCLUSION_SHIFT)
179
181#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_SHIFT (7u)
182#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_MASK ((uint32_t)3u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_SHIFT)
183
184#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_COUNTER ((uint32_t)0u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_SHIFT)
185#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_FEEDBACK ((uint32_t)1u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_SHIFT)
186#define MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_DOUBLE_PIPELINE ((uint32_t)2u << MCUXCLKEY_DERIVATION_OPTIONS_NIST_SP800_108_MODE_SHIFT)
187
188
189#endif /* MCUXCL_FEATURE_KEY_DERIVATION_NIST_SP800_108 */
190
191
196#define MCUXCLKEY_WA_SIZE_MAX 0U
197
202#define MCUXCLKEY_INVALID_KEYSLOT 0xFFu
203
204#endif /* MCUXCLKEY_CONSTANTS_H_ */