MCUX CLNS
MCUX Crypto Library Normal Secure
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 <mcuxClConfig.h> // Exported features flags header
23 
24 /**********************************************
25  * CONSTANTS
26  **********************************************/
38 #define MCUXCLKEY_STATUS_OK ((mcuxClKey_Status_t) 0xE2E2E2E2u )
39 #define MCUXCLKEY_STATUS_ERROR ((mcuxClKey_Status_t) 0xE2E22E2Eu )
40 #define MCUXCLKEY_STATUS_FAILURE ((mcuxClKey_Status_t) 0xE2E2E22Eu )
41 #define MCUXCLKEY_STATUS_INVALID_INPUT ((mcuxClKey_Status_t) 0xE2E22EE2u )
42 #define MCUXCLKEY_STATUS_FAULT_ATTACK ((mcuxClKey_Status_t) 0xE2E2F0F0u )
43 #define MCUXCLKEY_STATUS_CRC_NOT_OK ((mcuxClKey_Status_t) 0x003E0002u)
44 #define MCUXCLKEY_STATUS_NOT_SUPPORTED ((mcuxClKey_Status_t) 0xE2E20000u)
45 
52 #define MCUXCLKEY_LOADSTATUS_NOTLOADED 0x0000u
53 #define MCUXCLKEY_LOADSTATUS_MEMORY 0x0001u
54 #define MCUXCLKEY_LOADSTATUS_COPRO 0x0002u
55 #define MCUXCLKEY_LOADSTATUS_KEEPLOADED 0x8000u
56 
59 /* Define algorithm IDs */
60 
66 #define MCUXCLKEY_ALGO_ID_AES 0x0F01u
67 #define MCUXCLKEY_ALGO_ID_RSA 0x0E02u
68 #define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP 0x0D03u
69 #define MCUXCLKEY_ALGO_ID_ECC_SHWS_GF2M 0x0C04u
70 #define MCUXCLKEY_ALGO_ID_ECC_MONTDH 0x0B05u
71 #define MCUXCLKEY_ALGO_ID_ECC_EDDSA 0x0A06u
72 #define MCUXCLKEY_ALGO_ID_HMAC 0x0907u
73 #define MCUXCLKEY_ALGO_ID_SM4 0x0808u
74 #define MCUXCLKEY_ALGO_ID_SM2 0x0809u
75 #define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP_EPHEMERAL_CUSTOM 0x0709u
76 #define MCUXCLKEY_ALGO_ID_ECC_SHWS_GFP_STATIC_CUSTOM 0x060Au
77 #define MCUXCLKEY_ALGO_ID_ALGO_MASK 0x0FFFu
78 
79 #define MCUXCLKEY_ALGO_ID_SYMMETRIC_KEY 0x0000u
80 #define MCUXCLKEY_ALGO_ID_PUBLIC_KEY 0x8000u
81 #define MCUXCLKEY_ALGO_ID_PRIVATE_KEY 0x4000u
82 #define MCUXCLKEY_ALGO_ID_PRIVATE_KEY_CRT 0x6000u
83 #define MCUXCLKEY_ALGO_ID_KEY_PAIR 0xC000u
84 #define MCUXCLKEY_ALGO_ID_PRIVATE_KEY_CRT_DFA 0xE000u
85 
86 #define MCUXCLKEY_ALGO_ID_USAGE_MASK 0xF000u
87 
89 /* Define key sizes */
90 
96 #define MCUXCLKEY_SIZE_NOTUSED 0u
97 #define MCUXCLKEY_SIZE_128 16u
98 #define MCUXCLKEY_SIZE_160 20u
99 #define MCUXCLKEY_SIZE_192 24u
100 #define MCUXCLKEY_SIZE_224 28u
101 #define MCUXCLKEY_SIZE_256 32u
102 #define MCUXCLKEY_SIZE_320 40u
103 #define MCUXCLKEY_SIZE_384 48u
104 #define MCUXCLKEY_SIZE_512 64u
105 #define MCUXCLKEY_SIZE_521 66u
106 #define MCUXCLKEY_SIZE_1024 1024u
107 #define MCUXCLKEY_SIZE_2048 2048u
108 #define MCUXCLKEY_SIZE_3072 3072u
109 #define MCUXCLKEY_SIZE_4096 4096u
110 #define MCUXCLKEY_SIZE_6144 6144u
111 #define MCUXCLKEY_SIZE_8192 8192u
112 
113 // TODO CLNS-6135: replace these divides by a macro that ensures rounding up
114 #define MCUXCLKEY_SIZE_128_IN_WORDS (MCUXCLKEY_SIZE_128 / sizeof(uint32_t))
115 #define MCUXCLKEY_SIZE_160_IN_WORDS (MCUXCLKEY_SIZE_160 / sizeof(uint32_t))
116 #define MCUXCLKEY_SIZE_192_IN_WORDS (MCUXCLKEY_SIZE_192 / sizeof(uint32_t))
117 #define MCUXCLKEY_SIZE_224_IN_WORDS (MCUXCLKEY_SIZE_224 / sizeof(uint32_t))
118 #define MCUXCLKEY_SIZE_256_IN_WORDS (MCUXCLKEY_SIZE_256 / sizeof(uint32_t))
119 #define MCUXCLKEY_SIZE_320_IN_WORDS (MCUXCLKEY_SIZE_320 / sizeof(uint32_t))
120 #define MCUXCLKEY_SIZE_384_IN_WORDS (MCUXCLKEY_SIZE_384 / sizeof(uint32_t))
121 #define MCUXCLKEY_SIZE_512_IN_WORDS (MCUXCLKEY_SIZE_512 / sizeof(uint32_t))
122 #define MCUXCLKEY_SIZE_521_IN_WORDS ((MCUXCLKEY_SIZE_521 + sizeof(uint32_t) - 1u) / sizeof(uint32_t))
123 #define MCUXCLKEY_SIZE_1024_IN_WORDS (MCUXCLKEY_SIZE_1024 / (sizeof(uint32_t) * 8u))
124 #define MCUXCLKEY_SIZE_2048_IN_WORDS (MCUXCLKEY_SIZE_2048 / (sizeof(uint32_t) * 8u))
125 #define MCUXCLKEY_SIZE_3072_IN_WORDS (MCUXCLKEY_SIZE_3072 / (sizeof(uint32_t) * 8u))
126 #define MCUXCLKEY_SIZE_4096_IN_WORDS (MCUXCLKEY_SIZE_4096 / (sizeof(uint32_t) * 8u))
127 #define MCUXCLKEY_SIZE_6144_IN_WORDS (MCUXCLKEY_SIZE_6144 / (sizeof(uint32_t) * 8u))
128 #define MCUXCLKEY_SIZE_8192_IN_WORDS (MCUXCLKEY_SIZE_8192 / (sizeof(uint32_t) * 8u))
129 
136 #define MCUXCLKEY_WA_SIZE_MAX 0U
137 
142 #define MCUXCLKEY_INVALID_KEYSLOT 0xFFu
143 
144 #endif /* MCUXCLKEY_CONSTANTS_H_ */