blob: 48046e07b241594f4675d80c61d350b4c534ae0b [file] [log] [blame]
John Durkop6e33dbe2020-09-17 21:15:13 -07001/**
2 * \file mbedtls/config_psa.h
3 * \brief PSA crypto configuration options (set of defines)
4 *
John Durkop34818822020-10-12 21:36:22 -07005 * This set of compile-time options takes settings defined in
6 * include/mbedtls/config.h and include/psa/crypto_config.h and uses
7 * those definitions to define symbols used in the library code.
8 *
9 * Users and integrators should not edit this file, please edit
10 * include/mbedtls/config.h for MBETLS_XXX settings or
11 * include/psa/crypto_config.h for PSA_WANT_XXX settings.
John Durkop6e33dbe2020-09-17 21:15:13 -070012 */
13/*
14 * Copyright The Mbed TLS Contributors
15 * SPDX-License-Identifier: Apache-2.0
16 *
17 * Licensed under the Apache License, Version 2.0 (the "License"); you may
18 * not use this file except in compliance with the License.
19 * You may obtain a copy of the License at
20 *
21 * http://www.apache.org/licenses/LICENSE-2.0
22 *
23 * Unless required by applicable law or agreed to in writing, software
24 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
25 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26 * See the License for the specific language governing permissions and
27 * limitations under the License.
28 */
29
30#ifndef MBEDTLS_CONFIG_PSA_H
31#define MBEDTLS_CONFIG_PSA_H
32
John Durkop714e3a12020-09-29 22:07:04 -070033#if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
John Durkop6e33dbe2020-09-17 21:15:13 -070034#include "psa/crypto_config.h"
John Durkop76228ac2020-09-29 22:33:49 -070035#endif /* defined(MBEDTLS_PSA_CRYPTO_CONFIG) */
John Durkop6e33dbe2020-09-17 21:15:13 -070036
37#ifdef __cplusplus
38extern "C" {
39#endif
40
John Durkop2dfaf9c2020-09-24 04:30:10 -070041#if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
John Durkopd8959392020-09-20 23:09:17 -070042
John Durkop2dfaf9c2020-09-24 04:30:10 -070043#if defined(PSA_WANT_ALG_ECDSA)
44#if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA)
John Durkop34818822020-10-12 21:36:22 -070045#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
John Durkopd8959392020-09-20 23:09:17 -070046#define MBEDTLS_ECDSA_C
John Durkop34818822020-10-12 21:36:22 -070047#endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDSA */
48#endif /* PSA_WANT_ALG_ECDSA */
John Durkopd8959392020-09-20 23:09:17 -070049
John Durkop0ea39e02020-10-13 19:58:20 -070050#if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)
51#if !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA)
52#define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
John Durkopd8959392020-09-20 23:09:17 -070053#define MBEDTLS_ECDSA_DETERMINISTIC
John Durkop36a82e52020-10-26 09:39:05 -070054#define MBEDTLS_ECDSA_C
John Durkop6dff93f2020-10-23 01:22:58 -070055#define MBEDTLS_HMAC_DRBG_C
56#define MBEDTLS_MD_C
John Durkopd0321952020-10-29 21:37:36 -070057#endif /* !MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA */
John Durkop34818822020-10-12 21:36:22 -070058#endif /* PSA_WANT_ALG_DETERMINISTIC_ECDSA */
John Durkop2dfaf9c2020-09-24 04:30:10 -070059
John Durkopd0321952020-10-29 21:37:36 -070060#if defined(PSA_WANT_ALG_ECDH)
61#if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH)
62#define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
63#define MBEDTLS_ECDH_C
64#define MBEDTLS_ECP_C
65#define MBEDTLS_BIGNUM_C
John Durkopf4c4cb02020-10-28 20:09:55 -070066#endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDH */
67#endif /* PSA_WANT_ALG_ECDH */
68
John Durkop9814fa22020-11-04 12:28:15 -080069#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
70#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
71#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
John Durkop0e005192020-10-31 22:06:54 -070072#define MBEDTLS_ECP_C
73#define MBEDTLS_BIGNUM_C
John Durkop9814fa22020-11-04 12:28:15 -080074#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY */
75#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
76
77#if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR)
78#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR)
79#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
John Durkop0e005192020-10-31 22:06:54 -070080#define MBEDTLS_ECP_C
81#define MBEDTLS_BIGNUM_C
John Durkop9814fa22020-11-04 12:28:15 -080082#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR */
83#endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR */
John Durkopd0321952020-10-29 21:37:36 -070084
85#if defined(PSA_WANT_ALG_HMAC)
86#if !defined(MBEDTLS_PSA_ACCEL_ALG_HMAC)
87#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
88#define MBEDTLS_MD_C
John Durkopf4c4cb02020-10-28 20:09:55 -070089#endif /* !MBEDTLS_PSA_ACCEL_ALG_HMAC */
90#endif /* PSA_WANT_ALG_HMAC */
John Durkopd0321952020-10-29 21:37:36 -070091
92#if defined(PSA_WANT_ALG_HKDF)
93#if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF)
94#define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
95#define MBEDTLS_HKDF_C
96#define MBEDTLS_MD_C
John Durkopf4c4cb02020-10-28 20:09:55 -070097#endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF */
98#endif /* PSA_WANT_ALG_HKDF */
John Durkopd0321952020-10-29 21:37:36 -070099
John Durkop9814fa22020-11-04 12:28:15 -0800100#if defined(PSA_WANT_ALG_RSA_OAEP)
John Durkop0e005192020-10-31 22:06:54 -0700101#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP)
102#define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
John Durkopd0321952020-10-29 21:37:36 -0700103#define MBEDTLS_RSA_C
104#define MBEDTLS_BIGNUM_C
105#define MBEDTLS_OID_C
John Durkop9814fa22020-11-04 12:28:15 -0800106#define MBEDTLS_PKCS1_V21
John Durkop0e005192020-10-31 22:06:54 -0700107#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP */
John Durkop9814fa22020-11-04 12:28:15 -0800108#endif /* PSA_WANT_ALG_RSA_OAEP */
109
110#if defined(PSA_WANT_ALG_RSA_PSS)
John Durkop0e005192020-10-31 22:06:54 -0700111#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
112#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
113#define MBEDTLS_RSA_C
114#define MBEDTLS_BIGNUM_C
115#define MBEDTLS_OID_C
John Durkop9814fa22020-11-04 12:28:15 -0800116#define MBEDTLS_PKCS1_V21
John Durkop0e005192020-10-31 22:06:54 -0700117#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PSS */
John Durkop9814fa22020-11-04 12:28:15 -0800118#endif /* PSA_WANT_ALG_RSA_PSS */
John Durkop0e005192020-10-31 22:06:54 -0700119
John Durkop9814fa22020-11-04 12:28:15 -0800120#if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT)
John Durkop0e005192020-10-31 22:06:54 -0700121#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT)
122#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
123#define MBEDTLS_RSA_C
124#define MBEDTLS_BIGNUM_C
125#define MBEDTLS_OID_C
126#define MBEDTLS_PKCS1_V15
127#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT */
John Durkop9814fa22020-11-04 12:28:15 -0800128#endif /* PSA_WANT_ALG_RSA_PKCS1V15_CRYPT */
129
130#if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
John Durkop0e005192020-10-31 22:06:54 -0700131#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN)
132#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
133#define MBEDTLS_RSA_C
134#define MBEDTLS_BIGNUM_C
135#define MBEDTLS_OID_C
136#define MBEDTLS_PKCS1_V15
137#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN */
John Durkop9814fa22020-11-04 12:28:15 -0800138#endif /* PSA_WANT_ALG_RSA_PKCS1V15_SIGN */
John Durkop0e005192020-10-31 22:06:54 -0700139
John Durkop9814fa22020-11-04 12:28:15 -0800140#if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR)
John Durkop0e005192020-10-31 22:06:54 -0700141#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR)
142#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
143#define MBEDTLS_RSA_C
144#define MBEDTLS_BIGNUM_C
145#define MBEDTLS_OID_C
146#define MBEDTLS_GENPRIME
147#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR */
John Durkop9814fa22020-11-04 12:28:15 -0800148#endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR */
149
150#if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
John Durkop0e005192020-10-31 22:06:54 -0700151#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
152#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
153#define MBEDTLS_RSA_C
154#define MBEDTLS_BIGNUM_C
155#define MBEDTLS_OID_C
156#define MBEDTLS_GENPRIME
157#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY */
John Durkop9814fa22020-11-04 12:28:15 -0800158#endif /* PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY */
John Durkopd0321952020-10-29 21:37:36 -0700159
John Durkop714e3a12020-09-29 22:07:04 -0700160#else /* MBEDTLS_PSA_CRYPTO_CONFIG */
161
162/*
163 * Ensure PSA_WANT_* defines are setup properly if MBEDTLS_PSA_CRYPTO_CONFIG
164 * is not defined
165 */
John Durkop34818822020-10-12 21:36:22 -0700166#if defined(MBEDTLS_ECDSA_C)
John Durkopd0321952020-10-29 21:37:36 -0700167#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
John Durkop714e3a12020-09-29 22:07:04 -0700168
John Durkopf87e3ae2020-10-26 15:25:23 -0700169// Only add in DETERMINISTIC support if ECDSA is also enabled
John Durkop34818822020-10-12 21:36:22 -0700170#if defined(MBEDTLS_ECDSA_DETERMINISTIC)
John Durkopd0321952020-10-29 21:37:36 -0700171#define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
John Durkop714e3a12020-09-29 22:07:04 -0700172#endif /* MBEDTLS_ECDSA_DETERMINISTIC */
173
John Durkopf87e3ae2020-10-26 15:25:23 -0700174#endif /* MBEDTLS_ECDSA_C */
175
John Durkopd0321952020-10-29 21:37:36 -0700176#if defined(MBEDTLS_ECDH_C)
177#define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
178#endif /* MBEDTLS_ECDH_C */
179
John Durkopf4c4cb02020-10-28 20:09:55 -0700180#if defined(MBEDTLS_ECP_C)
John Durkop9814fa22020-11-04 12:28:15 -0800181#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
182#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
John Durkopf4c4cb02020-10-28 20:09:55 -0700183#endif /* MBEDTLS_ECP_C */
184
John Durkopd0321952020-10-29 21:37:36 -0700185#if defined(MBEDTLS_MD_C)
186#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
187#endif /* MBEDTLS_MD_C */
188
189#if defined(MBEDTLS_HKDF_C)
190#define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
191#endif /* MBEDTLS_HKDF_C */
192
John Durkopf4c4cb02020-10-28 20:09:55 -0700193#if defined(MBEDTLS_RSA_C)
John Durkop0e005192020-10-31 22:06:54 -0700194#if defined(MBEDTLS_PKCS1_V15)
195#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
196#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
197#endif /* MBEDTLSS_PKCS1_V15 */
198#if defined(MBEDTLS_PKCS1_V21)
199#define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
200#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
201#endif /* MBEDTLS_PKCS1_V21 */
202#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
203#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
John Durkopd0321952020-10-29 21:37:36 -0700204#endif /* MBEDTLS_RSA_C */
205
John Durkop2dfaf9c2020-09-24 04:30:10 -0700206#endif /* MBEDTLS_PSA_CRYPTO_CONFIG */
John Durkopd8959392020-09-20 23:09:17 -0700207
John Durkop9814fa22020-11-04 12:28:15 -0800208#include "mbedtls/check_config_psa.h"
209
John Durkop6e33dbe2020-09-17 21:15:13 -0700210#ifdef __cplusplus
211}
212#endif
213
214#endif /* MBEDTLS_CONFIG_PSA_H */