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