| /* |
| * |
| * Copyright (c) 2021 Project CHIP Authors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef K32W061_MBEDTLS_CONFIG_H |
| #define K32W061_MBEDTLS_CONFIG_H |
| |
| #if defined(MBEDTLS_ECP_WINDOW_SIZE) |
| #undef MBEDTLS_ECP_WINDOW_SIZE |
| #define MBEDTLS_ECP_WINDOW_SIZE 4 /**< Maximum window size used */ |
| #endif |
| |
| #if defined(MBEDTLS_ECP_FIXED_POINT_OPTIM) |
| #undef MBEDTLS_ECP_FIXED_POINT_OPTIM |
| #define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */ |
| #endif |
| |
| /** |
| * \def MBEDTLS_AES_ALT |
| * |
| * Enable hardware acceleration for the AES block cipher |
| * |
| * See MBEDTLS_AES_C for more information. |
| */ |
| #define MBEDTLS_AES_ALT |
| |
| #if defined(MBEDTLS_AES_ALT) |
| /**************************** KSDK ********************************************/ |
| #include "fsl_device_registers.h" |
| |
| /* Enable LTC use in library if there is LTC on chip. */ |
| #if defined(FSL_FEATURE_SOC_LTC_COUNT) && (FSL_FEATURE_SOC_LTC_COUNT > 0) |
| #include "fsl_ltc.h" |
| |
| #define LTC_INSTANCE LTC0 /* LTC base register.*/ |
| |
| #if FSL_FEATURE_LTC_HAS_SHA |
| #define MBEDTLS_FREESCALE_LTC_SHA1 /* Enable use of LTC SHA.*/ |
| #define MBEDTLS_FREESCALE_LTC_SHA256 /* Enable use of LTC SHA256.*/ |
| #endif |
| #if defined(FSL_FEATURE_LTC_HAS_DES) && FSL_FEATURE_LTC_HAS_DES |
| #define MBEDTLS_FREESCALE_LTC_DES /* Enable use of LTC DES.*/ |
| #endif |
| #define MBEDTLS_FREESCALE_LTC_AES /* Enable use of LTC AES.*/ |
| #if defined(FSL_FEATURE_LTC_HAS_GCM) && FSL_FEATURE_LTC_HAS_GCM |
| #define MBEDTLS_FREESCALE_LTC_AES_GCM /* Enable use of LTC AES GCM.*/ |
| #endif |
| #if defined(FSL_FEATURE_LTC_HAS_PKHA) && FSL_FEATURE_LTC_HAS_PKHA |
| #define MBEDTLS_FREESCALE_LTC_PKHA /* Enable use of LTC PKHA.*/ |
| #define FREESCALE_PKHA_INT_MAX_BYTES 256 |
| #endif |
| #endif |
| |
| /* Enable MMCAU use in library if there is MMCAU on chip. */ |
| #if defined(FSL_FEATURE_SOC_MMCAU_COUNT) && (FSL_FEATURE_SOC_MMCAU_COUNT > 0) |
| #include "fsl_mmcau.h" |
| |
| #define MBEDTLS_FREESCALE_MMCAU_MD5 /* Enable use of MMCAU MD5.*/ |
| #define MBEDTLS_FREESCALE_MMCAU_SHA1 /* Enable use of MMCAU SHA1.*/ |
| #define MBEDTLS_FREESCALE_MMCAU_SHA256 /* Enable use of MMCAU SHA256.*/ |
| #define MBEDTLS_FREESCALE_MMCAU_DES /* Enable use of MMCAU DES, when LTC is disabled.*/ |
| #define MBEDTLS_FREESCALE_MMCAU_AES /* Enable use of MMCAU AES, when LTC is disabled.*/ |
| #endif |
| |
| /* Enable CAU3 use in library if there is CAU3 on chip. */ |
| #if defined(FSL_FEATURE_SOC_CAU3_COUNT) && (FSL_FEATURE_SOC_CAU3_COUNT > 0) |
| #include "cau3_pkha.h" |
| #include "fsl_cau3.h" |
| |
| #define MBEDTLS_CAU3_COMPLETION_SIGNAL CAU3_CC_CMD_EVT |
| #define MBEDTLS_SHA256_ALT_NO_224 |
| |
| #define MBEDTLS_FREESCALE_CAU3_AES /* Enable use of CAU3 AES.*/ |
| #define MBEDTLS_FREESCALE_CAU3_SHA256 /* Enable use of CAU3 SHA256.*/ |
| #define MBEDTLS_FREESCALE_CAU3_PKHA /* Enable use of CAU3 PKHA.*/ |
| #define FREESCALE_PKHA_INT_MAX_BYTES 512 |
| #endif |
| |
| #if defined(MBEDTLS_FREESCALE_LTC_PKHA) || defined(MBEDTLS_FREESCALE_CAU3_PKHA) |
| /* |
| * This FREESCALE_PKHA_LONG_OPERANDS_ENABLE macro can be defined. |
| * In such a case both software and hardware algorithm for TFM is linked in. |
| * The decision for which algorithm is used is determined at runtime |
| * from size of inputs. If inputs and result can fit into LTC (see FREESCALE_PKHA_INT_MAX_BYTES) |
| * then we call hardware algorithm, otherwise we call software algorithm. |
| * |
| * Note that mbedTLS algorithms break modular operations unefficiently into two steps. |
| * First is normal operation, for example non-modular multiply, which can produce number |
| * with greater size than operands. Second is modular reduction. |
| * The implication of this is that if for example FREESCALE_PKHA_INT_MAX_BYTES is 256 (2048 bits), |
| * RSA-2048 still requires the FREESCALE_PKHA_LONG_OPERANDS_ENABLE macro to be defined, |
| * otherwise it fails at runtime. |
| */ |
| // #define FREESCALE_PKHA_LONG_OPERANDS_ENABLE |
| #endif |
| |
| /* Enable AES use in library if there is AES on chip. */ |
| #if defined(FSL_FEATURE_SOC_AES_COUNT) && (FSL_FEATURE_SOC_AES_COUNT > 0) |
| #include "fsl_aes.h" |
| |
| #define AES_INSTANCE AES0 /* AES base register.*/ |
| #define MBEDTLS_FREESCALE_LPC_AES /* Enable use of LPC AES.*/ |
| #define MBEDTLS_FREESCALE_LPC_AES_GCM /* Enable use of LPC AES GCM.*/ |
| |
| #endif |
| |
| /* Enable SHA use in library if there is SHA on chip. */ |
| #if defined(FSL_FEATURE_SOC_SHA_COUNT) && (FSL_FEATURE_SOC_SHA_COUNT > 0) |
| #include "fsl_sha.h" |
| |
| #define SHA_INSTANCE SHA0 /* SHA base register.*/ |
| #define MBEDTLS_FREESCALE_LPC_SHA1 /* Enable use of LPC SHA.*/ |
| #define MBEDTLS_FREESCALE_LPC_SHA256 /* Enable use of LPC SHA256.*/ |
| |
| #endif |
| |
| /* Define ALT MMCAU & LTC functions. Do not change it. */ |
| #if defined(MBEDTLS_FREESCALE_MMCAU_DES) || defined(MBEDTLS_FREESCALE_LTC_DES) |
| #define MBEDTLS_DES_SETKEY_ENC_ALT |
| #define MBEDTLS_DES_SETKEY_DEC_ALT |
| #define MBEDTLS_DES_CRYPT_ECB_ALT |
| #define MBEDTLS_DES3_CRYPT_ECB_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_DES) |
| #define MBEDTLS_DES_CRYPT_CBC_ALT |
| #define MBEDTLS_DES3_CRYPT_CBC_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_AES) || defined(MBEDTLS_FREESCALE_MMCAU_AES) || defined(MBEDTLS_FREESCALE_LPC_AES) || \ |
| defined(MBEDTLS_FREESCALE_CAU3_AES) |
| #define MBEDTLS_AES_SETKEY_ENC_ALT |
| #define MBEDTLS_AES_SETKEY_DEC_ALT |
| #define MBEDTLS_AES_ENCRYPT_ALT |
| #define MBEDTLS_AES_DECRYPT_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_AES) |
| #define MBEDTLS_AES_CRYPT_CBC_ALT |
| #define MBEDTLS_AES_CRYPT_CTR_ALT |
| #define MBEDTLS_CCM_CRYPT_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_AES_GCM) || defined(MBEDTLS_FREESCALE_LPC_AES_GCM) |
| #define MBEDTLS_GCM_CRYPT_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_PKHA) || defined(MBEDTLS_FREESCALE_CAU3_PKHA) |
| #define MBEDTLS_MPI_ADD_ABS_ALT |
| #define MBEDTLS_MPI_SUB_ABS_ALT |
| #define MBEDTLS_MPI_MUL_MPI_ALT |
| #define MBEDTLS_MPI_MOD_MPI_ALT |
| #define MBEDTLS_MPI_EXP_MOD_ALT |
| #define MBEDTLS_MPI_GCD_ALT |
| #define MBEDTLS_MPI_INV_MOD_ALT |
| #define MBEDTLS_MPI_IS_PRIME_ALT |
| #if defined(MBEDTLS_FREESCALE_LTC_PKHA) |
| #define MBEDTLS_ECP_MUL_COMB_ALT |
| #define MBEDTLS_ECP_ADD_ALT |
| #endif |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_SHA1) || defined(MBEDTLS_FREESCALE_LPC_SHA1) |
| #define MBEDTLS_SHA1_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_SHA256) || defined(MBEDTLS_FREESCALE_LPC_SHA256) |
| #define MBEDTLS_SHA256_ALT |
| /* |
| * LPC SHA module does not support SHA-224. |
| * |
| * Since mbed TLS does not provide separate APIs for SHA-224 and SHA-256 |
| * and SHA-224 is not widely used, this implementation provides HW accelerated SHA-256 only |
| * and SHA-224 is not available at all (calls will fail). |
| * |
| * To use SHA-224 on LPC, do not define MBEDTLS_SHA256_ALT and both SHA-224 and SHA-256 will use |
| * original mbed TLS software implementation. |
| */ |
| #if defined(MBEDTLS_FREESCALE_LPC_SHA256) |
| #define MBEDTLS_SHA256_ALT_NO_224 |
| #endif |
| #endif |
| #if defined(MBEDTLS_FREESCALE_MMCAU_MD5) |
| #define MBEDTLS_MD5_PROCESS_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_MMCAU_SHA1) |
| #define MBEDTLS_SHA1_PROCESS_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_MMCAU_SHA256) |
| #define MBEDTLS_SHA256_PROCESS_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_CAU3_SHA256) |
| #define MBEDTLS_SHA256_PROCESS_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_CAU3_AES) |
| #define MBEDTLS_AES_ALT_NO_192 |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LTC_AES) |
| #if !defined(FSL_FEATURE_LTC_HAS_AES192) || !FSL_FEATURE_LTC_HAS_AES192 |
| #define MBEDTLS_AES_ALT_NO_192 |
| #endif |
| #if !defined(FSL_FEATURE_LTC_HAS_AES256) || !FSL_FEATURE_LTC_HAS_AES256 |
| #define MBEDTLS_AES_ALT_NO_256 |
| #endif |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LPC_AES) |
| #define MBEDTLS_AES_CRYPT_CBC_ALT |
| #define MBEDTLS_AES_CRYPT_CFB_ALT |
| #define MBEDTLS_AES_CRYPT_CTR_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LPC_SHA1) |
| #define MBEDTLS_SHA1_PROCESS_ALT |
| #endif |
| #if defined(MBEDTLS_FREESCALE_LPC_SHA256) |
| #define MBEDTLS_SHA256_PROCESS_ALT |
| #endif |
| |
| #if USE_RTOS && defined(FSL_RTOS_FREE_RTOS) |
| #include "FreeRTOS.h" |
| |
| #define MBEDTLS_PLATFORM_MEMORY |
| |
| #endif /* USE_RTOS*/ |
| /**************************** KSDK end ****************************************/ |
| #endif /* MBEDTLS_AES_ALT || MBEDTLS_SHA256_ALT */ |
| |
| #endif // K32W061_MBEDTLS_CONFIG_H |