1 /***************************************************************************//**
2 * \file cy_cryptolite_config.h
3 * \version 2.50
4 *
5 * \brief
6 *  This file provides default configuration parameters
7 *  for the Cryptolite PDL driver.
8 *
9 ********************************************************************************
10 * Copyright 2022 Cypress Semiconductor Corporation
11 * SPDX-License-Identifier: Apache-2.0
12 *
13 * Licensed under the Apache License, Version 2.0 (the "License");
14 * you may not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
16 *
17 *    http://www.apache.org/licenses/LICENSE-2.0
18 *
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS" BASIS,
21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
24 *******************************************************************************/
25 
26 
27 #if !defined(CY_CRYPTOLITE_CONFIG_H)
28 #define CY_CRYPTOLITE_CONFIG_H
29 
30 #if defined(CY_CRYPTOLITE_USER_CONFIG_FILE)
31 
32 #include CY_CRYPTOLITE_USER_CONFIG_FILE
33 
34 #else
35 /* Default configuration:
36  *
37  * - SHA256
38  * - HMAC
39  * - RSA encrypt/decrypt
40  * - RSA PKCS#1.l5 verification
41  * - ECP multiplication
42  * - ECDSA verification
43  */
44 /*SHA and HMAC*/
45 #define CY_CRYPTOLITE_CFG_SHA_C
46 #define CY_CRYPTOLITE_CFG_HMAC_C
47 #define CY_CRYPTOLITE_CFG_SHA2_256_ENABLED
48 #define CY_CRYPTOLITE_CFG_HKDF_C
49 
50 #define CY_CRYPTOLITE_CFG_TRNG_C
51 #define CY_CRYPTOLITE_CFG_AES_C
52 #define CY_CRYPTOLITE_CFG_CMAC_C
53 #define CY_CRYPTOLITE_CFG_CBC_MAC_C
54 
55 /* AES Cipher modes */
56 #define CY_CRYPTOLITE_CFG_CIPHER_MODE_CBC
57 #define CY_CRYPTOLITE_CFG_CIPHER_MODE_CFB
58 #define CY_CRYPTOLITE_CFG_CIPHER_MODE_CTR
59 #define CY_CRYPTOLITE_CFG_CIPHER_MODE_CCM
60 
61 /* RSA functionality */
62 #define CY_CRYPTOLITE_CFG_RSA_C
63 /* RSA PKCS 1.5 verification */
64 #define CY_CRYPTOLITE_CFG_RSA_VERIFY_ENABLED
65 /* RSA Max Key size */
66 #define CY_CRYPTOLITE_CFG_RSA_MAX_KEY_4096
67 /* RSA verify SHA mode */
68 #define CY_CRYPTOLITE_CFG_RSA_VERIFY_SHA1
69 #define CY_CRYPTOLITE_CFG_RSA_VERIFY_SHA256
70 #define CY_CRYPTOLITE_CFG_RSA_VERIFY_SHA512
71 
72 /* Only NIST-P curves are currently supported */
73 #define CY_CRYPTOLITE_CFG_ECP_C
74 
75 #define CY_CRYPTOLITE_CFG_ECP_DP_SECP192R1_ENABLED
76 #define CY_CRYPTOLITE_CFG_ECP_DP_SECP224R1_ENABLED
77 #define CY_CRYPTOLITE_CFG_ECP_DP_SECP256R1_ENABLED
78 #define CY_CRYPTOLITE_CFG_ECP_DP_SECP384R1_ENABLED
79 //#define CY_CRYPTOLITE_CFG_ECP_DP_SECP521R1_ENABLED
80 
81 /* ECDSA functionality */
82 #define CY_CRYPTOLITE_CFG_ECDSA_C
83 /* ECDSA Sign */
84 #define CY_CRYPTOLITE_CFG_ECDSA_SIGN_C
85 /* ECDSA verification */
86 #define CY_CRYPTOLITE_CFG_ECDSA_VERIFY_C
87 
88 #endif
89 
90 #include "cy_device_headers.h"
91 
92 /* Check hardware configuration */
93 #if !defined(CY_IP_MXCRYPTOLITE)
94 #error "CY_IP_MXCRYPTOLITE configuration not available"
95 #endif /* !defined(CY_IP_MXCRYPTOLITE) */
96 
97 /* Check SHA configuration */
98 #if defined(CY_CRYPTOLITE_CFG_SHA2_256_ENABLED) \
99      && !defined(CY_CRYPTOLITE_CFG_SHA_C)
100 #error "CY_CRYPTOLITE_CFG_SHA_C is not defined to use SHA digests"
101 #endif
102 
103 #if defined(CY_CRYPTOLITE_CFG_SHA_C) && (!defined(CY_CRYPTOLITE_CFG_SHA2_256_ENABLED))
104 #error "CY_CRYPTOLITE_CFG_SHA_C is defined but no SHA mode is selected"
105 #endif
106 
107 /* Check HMAC configuration */
108 #if defined(CY_CRYPTOLITE_CFG_HMAC_C) && !defined(CY_CRYPTOLITE_CFG_SHA_C)
109 #error "CY_CRYPTOLITE_CFG_SHA_C is not defined to use HMAC calculation"
110 #endif /* defined(CY_CRYPTOLITE_CFG_HMAC_C) && !defined(CY_CRYPTOLITE_CFG_SHA_C) */
111 
112 /* Check HKDF configuration */
113 #if defined(CY_CRYPTOLITE_CFG_HKDF_C) && !defined(CY_CRYPTOLITE_CFG_HMAC_C)
114 #error "CY_CRYPTOLITE_CFG_HMAC_C is not defined to use HMAC calculation"
115 #endif /* defined(CY_CRYPTOLITE_CFG_HKDF_C) && !defined(CY_CRYPTOLITE_CFG_HMAC_C) */
116 
117 /* Check RSA verify configuration */
118 #if defined(CY_CRYPTOLITE_CFG_RSA_VERIFY_ENABLED) && !defined(CY_CRYPTOLITE_CFG_RSA_C)
119 #error "CY_CRYPTOLITE_CFG_RSA_C is not defined to use RSA verification functionality"
120 #endif
121 
122 #if defined(CY_CRYPTOLITE_CFG_RSA_VERIFY_ENABLED) && !defined(CY_CRYPTOLITE_CFG_SHA_C)
123 #error "CY_CRYPTOLITE_CFG_SHA_C is not defined to use RSA verification functionality"
124 #endif
125 
126 /* Check ECDSA configuration */
127 #if (defined(CY_CRYPTOLITE_CFG_ECDSA_VERIFY_C) && !defined(CY_CRYPTOLITE_CFG_ECDSA_C))
128 #error "CY_CRYPTOLITE_CFG_ECDSA_C is not defined to use ECDSA functionalities"
129 #endif
130 
131 #if (defined(CY_CRYPTOLITE_CFG_ECDSA_SIGN_C) && !defined(CY_CRYPTOLITE_CFG_ECDSA_C))
132 #error "CY_CRYPTOLITE_CFG_ECDSA_C is not defined to use ECDSA functionalities"
133 #endif
134 
135 /* Check AES CCM configuration */
136 #if (defined(CY_CRYPTOLITE_CFG_CIPHER_MODE_CCM) && (!defined(CY_CRYPTOLITE_CFG_CIPHER_MODE_CTR) || !defined(CY_CRYPTOLITE_CFG_CIPHER_MODE_CBC)))
137 #error "CY_CRYPTOLITE_CFG_CIPHER_MODE_CTR / CY_CRYPTOLITE_CFG_CIPHER_MODE_CBC  is not defined to use AES CCM  functionalities"
138 #endif
139 
140 /* Check AES CMAC configuration */
141 #if (defined(CY_CRYPTOLITE_CFG_CMAC_C) && (!defined(CY_CRYPTOLITE_CFG_AES_C) || !defined(CY_CRYPTOLITE_CFG_CIPHER_MODE_CBC)))
142 #error "CY_CRYPTOLITE_CFG_AES_C / CY_CRYPTOLITE_CFG_CIPHER_MODE_CBC  is not defined to use AES CMAC  functionalities"
143 #endif
144 
145 /* Check AES CBC-MAC configuration */
146 #if (defined(CY_CRYPTOLITE_CFG_CBC_MAC_C) && (!defined(CY_CRYPTOLITE_CFG_CIPHER_MODE_CBC)))
147 #error "CY_CRYPTOLITE_CFG_CIPHER_MODE_CBC  is not defined to use CBC-MAC  functionalities"
148 #endif
149 
150 #if defined(CY_CRYPTOLITE_CFG_ECDSA_C) && !defined(CY_CRYPTOLITE_CFG_ECP_C)
151 #define CY_CRYPTOLITE_CFG_ECP_C
152 #endif /* defined(CY_CRYPTOLITE_CFG_ECDSA_C) && !defined(CY_CRYPTOLITE_CFG_ECP_C) */
153 
154 /* Check ECP configuration */
155 #if !(defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP192R1_ENABLED) || \
156      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP224R1_ENABLED) || \
157      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP256R1_ENABLED) || \
158      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP384R1_ENABLED) || \
159      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP521R1_ENABLED)) \
160      && defined(CY_CRYPTOLITE_CFG_ECP_C)
161 #error "CY_CRYPTOLITE_CFG_ECP_C is defined but no curve is selected"
162 #endif
163 
164 #if (defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP192R1_ENABLED) || \
165      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP224R1_ENABLED) || \
166      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP256R1_ENABLED) || \
167      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP384R1_ENABLED) || \
168      defined(CY_CRYPTOLITE_CFG_ECP_DP_SECP521R1_ENABLED)) \
169      && !defined(CY_CRYPTOLITE_CFG_ECP_C)
170 #error "CY_CRYPTOLITE_CFG_ECP_C is not defined to use ECP functionality"
171 #endif
172 
173 #endif /* #if !defined(CY_CRYPTOLITE_CONFIG_H) */
174 
175 /* [] END OF FILE */
176