blob: 664b9eeb9b6d6021bfd14e4554a90e4286efcc4b [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 Durkop0ea39e02020-10-13 19:58:20 -070043#if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)
44#if !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA)
45#define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
John Durkopd8959392020-09-20 23:09:17 -070046#define MBEDTLS_ECDSA_DETERMINISTIC
John Durkop36a82e52020-10-26 09:39:05 -070047#define MBEDTLS_ECDSA_C
John Durkop6dff93f2020-10-23 01:22:58 -070048#define MBEDTLS_HMAC_DRBG_C
49#define MBEDTLS_MD_C
John Durkopd0321952020-10-29 21:37:36 -070050#endif /* !MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA */
John Durkop34818822020-10-12 21:36:22 -070051#endif /* PSA_WANT_ALG_DETERMINISTIC_ECDSA */
John Durkop2dfaf9c2020-09-24 04:30:10 -070052
John Durkopd0321952020-10-29 21:37:36 -070053#if defined(PSA_WANT_ALG_ECDH)
54#if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH)
55#define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
56#define MBEDTLS_ECDH_C
57#define MBEDTLS_ECP_C
58#define MBEDTLS_BIGNUM_C
John Durkopf4c4cb02020-10-28 20:09:55 -070059#endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDH */
60#endif /* PSA_WANT_ALG_ECDH */
61
John Durkop07cc04a2020-11-16 22:08:34 -080062#if defined(PSA_WANT_ALG_ECDSA)
63#if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA)
64#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
65#define MBEDTLS_ECDSA_C
66#endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDSA */
67#endif /* PSA_WANT_ALG_ECDSA */
John Durkopd0321952020-10-29 21:37:36 -070068
69#if defined(PSA_WANT_ALG_HKDF)
70#if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF)
John Durkop6ba40d12020-11-10 08:50:04 -080071#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
John Durkopd0321952020-10-29 21:37:36 -070072#define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
John Durkopf4c4cb02020-10-28 20:09:55 -070073#endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF */
74#endif /* PSA_WANT_ALG_HKDF */
John Durkopd0321952020-10-29 21:37:36 -070075
John Durkop07cc04a2020-11-16 22:08:34 -080076#if defined(PSA_WANT_ALG_HMAC)
77#if !defined(MBEDTLS_PSA_ACCEL_ALG_HMAC)
78#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
79#endif /* !MBEDTLS_PSA_ACCEL_ALG_HMAC */
80#endif /* PSA_WANT_ALG_HMAC */
81
John Durkop9814fa22020-11-04 12:28:15 -080082#if defined(PSA_WANT_ALG_RSA_OAEP)
John Durkop0e005192020-10-31 22:06:54 -070083#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP)
84#define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
John Durkopd0321952020-10-29 21:37:36 -070085#define MBEDTLS_RSA_C
86#define MBEDTLS_BIGNUM_C
87#define MBEDTLS_OID_C
John Durkop9814fa22020-11-04 12:28:15 -080088#define MBEDTLS_PKCS1_V21
John Durkop07cc04a2020-11-16 22:08:34 -080089#define MBEDTLS_MD_C
John Durkop0e005192020-10-31 22:06:54 -070090#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP */
John Durkop9814fa22020-11-04 12:28:15 -080091#endif /* PSA_WANT_ALG_RSA_OAEP */
92
John Durkop9814fa22020-11-04 12:28:15 -080093#if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT)
John Durkop0e005192020-10-31 22:06:54 -070094#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT)
95#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
96#define MBEDTLS_RSA_C
97#define MBEDTLS_BIGNUM_C
98#define MBEDTLS_OID_C
99#define MBEDTLS_PKCS1_V15
100#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT */
John Durkop9814fa22020-11-04 12:28:15 -0800101#endif /* PSA_WANT_ALG_RSA_PKCS1V15_CRYPT */
102
103#if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
John Durkop0e005192020-10-31 22:06:54 -0700104#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN)
105#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
106#define MBEDTLS_RSA_C
107#define MBEDTLS_BIGNUM_C
108#define MBEDTLS_OID_C
109#define MBEDTLS_PKCS1_V15
John Durkop07cc04a2020-11-16 22:08:34 -0800110#define MBEDTLS_MD_C
John Durkop0e005192020-10-31 22:06:54 -0700111#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN */
John Durkop9814fa22020-11-04 12:28:15 -0800112#endif /* PSA_WANT_ALG_RSA_PKCS1V15_SIGN */
John Durkop0e005192020-10-31 22:06:54 -0700113
John Durkop07cc04a2020-11-16 22:08:34 -0800114#if defined(PSA_WANT_ALG_RSA_PSS)
115#if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
116#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
117#define MBEDTLS_RSA_C
118#define MBEDTLS_BIGNUM_C
119#define MBEDTLS_OID_C
120#define MBEDTLS_PKCS1_V21
121#define MBEDTLS_MD_C
122#endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PSS */
123#endif /* PSA_WANT_ALG_RSA_PSS */
124
125#if defined(PSA_WANT_ALG_TLS12_PRF)
126#if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF)
127#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
128#endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF */
129#endif /* PSA_WANT_ALG_TLS12_PRF */
130
131#if defined(PSA_WANT_ALG_TLS12_PSK_TO_MS)
132#if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS)
133#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
134#endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS */
135#endif /* PSA_WANT_ALG_TLS12_PSK_TO_MS */
136
137#if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR)
138#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR)
139#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
140#define MBEDTLS_ECP_C
141#define MBEDTLS_BIGNUM_C
142#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR */
143#endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR */
144
145#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
146#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
147#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
148#define MBEDTLS_ECP_C
149#define MBEDTLS_BIGNUM_C
150#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY */
151#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
152
John Durkop9814fa22020-11-04 12:28:15 -0800153#if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR)
John Durkop0e005192020-10-31 22:06:54 -0700154#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR)
155#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
156#define MBEDTLS_RSA_C
157#define MBEDTLS_BIGNUM_C
158#define MBEDTLS_OID_C
159#define MBEDTLS_GENPRIME
John Durkop07cc04a2020-11-16 22:08:34 -0800160#define MBEDTLS_PK_PARSE_C
161#define MBEDTLS_PK_WRITE_C
162#define MBEDTLS_PK_C
John Durkop0e005192020-10-31 22:06:54 -0700163#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR */
John Durkop9814fa22020-11-04 12:28:15 -0800164#endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR */
165
166#if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
John Durkop0e005192020-10-31 22:06:54 -0700167#if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
168#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
169#define MBEDTLS_RSA_C
170#define MBEDTLS_BIGNUM_C
171#define MBEDTLS_OID_C
John Durkop07cc04a2020-11-16 22:08:34 -0800172#define MBEDTLS_PK_PARSE_C
173#define MBEDTLS_PK_WRITE_C
174#define MBEDTLS_PK_C
John Durkop0e005192020-10-31 22:06:54 -0700175#endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY */
John Durkop9814fa22020-11-04 12:28:15 -0800176#endif /* PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY */
John Durkopd0321952020-10-29 21:37:36 -0700177
John Durkop714e3a12020-09-29 22:07:04 -0700178#else /* MBEDTLS_PSA_CRYPTO_CONFIG */
179
180/*
181 * Ensure PSA_WANT_* defines are setup properly if MBEDTLS_PSA_CRYPTO_CONFIG
182 * is not defined
183 */
John Durkop07cc04a2020-11-16 22:08:34 -0800184#if defined(MBEDTLS_ECDH_C)
185#define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100186#define PSA_WANT_ALG_ECDH 1
John Durkop07cc04a2020-11-16 22:08:34 -0800187#endif /* MBEDTLS_ECDH_C */
188
John Durkop34818822020-10-12 21:36:22 -0700189#if defined(MBEDTLS_ECDSA_C)
John Durkopd0321952020-10-29 21:37:36 -0700190#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100191#define PSA_WANT_ALG_ECDSA 1
John Durkop714e3a12020-09-29 22:07:04 -0700192
John Durkopf87e3ae2020-10-26 15:25:23 -0700193// Only add in DETERMINISTIC support if ECDSA is also enabled
John Durkop34818822020-10-12 21:36:22 -0700194#if defined(MBEDTLS_ECDSA_DETERMINISTIC)
John Durkopd0321952020-10-29 21:37:36 -0700195#define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100196#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1
John Durkop714e3a12020-09-29 22:07:04 -0700197#endif /* MBEDTLS_ECDSA_DETERMINISTIC */
198
John Durkopf87e3ae2020-10-26 15:25:23 -0700199#endif /* MBEDTLS_ECDSA_C */
200
John Durkopf4c4cb02020-10-28 20:09:55 -0700201#if defined(MBEDTLS_ECP_C)
John Durkop9814fa22020-11-04 12:28:15 -0800202#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100203#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1
John Durkop9814fa22020-11-04 12:28:15 -0800204#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100205#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1
John Durkopf4c4cb02020-10-28 20:09:55 -0700206#endif /* MBEDTLS_ECP_C */
207
John Durkopd0321952020-10-29 21:37:36 -0700208#if defined(MBEDTLS_HKDF_C)
John Durkop6ba40d12020-11-10 08:50:04 -0800209#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100210#define PSA_WANT_ALG_HMAC 1
John Durkopd0321952020-10-29 21:37:36 -0700211#define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100212#define PSA_WANT_ALG_HKDF 1
John Durkopd0321952020-10-29 21:37:36 -0700213#endif /* MBEDTLS_HKDF_C */
214
John Durkop07cc04a2020-11-16 22:08:34 -0800215#if defined(MBEDTLS_MD_C)
216#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100217#define PSA_WANT_ALG_HMAC 1
John Durkop07cc04a2020-11-16 22:08:34 -0800218#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100219#define PSA_WANT_ALG_TLS12_PRF 1
John Durkop07cc04a2020-11-16 22:08:34 -0800220#define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100221#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1
John Durkop07cc04a2020-11-16 22:08:34 -0800222#endif /* MBEDTLS_MD_C */
223
John Durkopf4c4cb02020-10-28 20:09:55 -0700224#if defined(MBEDTLS_RSA_C)
John Durkop0e005192020-10-31 22:06:54 -0700225#if defined(MBEDTLS_PKCS1_V15)
226#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100227#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1
John Durkop0e005192020-10-31 22:06:54 -0700228#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100229#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1
John Durkop0e005192020-10-31 22:06:54 -0700230#endif /* MBEDTLSS_PKCS1_V15 */
231#if defined(MBEDTLS_PKCS1_V21)
232#define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100233#define PSA_WANT_ALG_RSA_OAEP 1
John Durkop0e005192020-10-31 22:06:54 -0700234#define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100235#define PSA_WANT_ALG_RSA_PSS 1
John Durkop0e005192020-10-31 22:06:54 -0700236#endif /* MBEDTLS_PKCS1_V21 */
237#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100238#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1
John Durkop0e005192020-10-31 22:06:54 -0700239#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
Gilles Peskinecd1495c2020-11-25 00:07:18 +0100240#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1
John Durkopd0321952020-10-29 21:37:36 -0700241#endif /* MBEDTLS_RSA_C */
242
John Durkop2dfaf9c2020-09-24 04:30:10 -0700243#endif /* MBEDTLS_PSA_CRYPTO_CONFIG */
John Durkopd8959392020-09-20 23:09:17 -0700244
John Durkop6e33dbe2020-09-17 21:15:13 -0700245#ifdef __cplusplus
246}
247#endif
248
249#endif /* MBEDTLS_CONFIG_PSA_H */