config_psa.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800
  1. /**
  2. * \file mbedtls/config_psa.h
  3. * \brief PSA crypto configuration options (set of defines)
  4. *
  5. * 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.
  12. */
  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. #ifndef MBEDTLS_CONFIG_PSA_H
  30. #define MBEDTLS_CONFIG_PSA_H
  31. #if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
  32. #include "psa/crypto_config.h"
  33. #endif /* defined(MBEDTLS_PSA_CRYPTO_CONFIG) */
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. /****************************************************************/
  38. /* De facto synonyms */
  39. /****************************************************************/
  40. #if defined(PSA_WANT_ALG_ECDSA_ANY) && !defined(PSA_WANT_ALG_ECDSA)
  41. #define PSA_WANT_ALG_ECDSA PSA_WANT_ALG_ECDSA_ANY
  42. #elif !defined(PSA_WANT_ALG_ECDSA_ANY) && defined(PSA_WANT_ALG_ECDSA)
  43. #define PSA_WANT_ALG_ECDSA_ANY PSA_WANT_ALG_ECDSA
  44. #endif
  45. #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW) && !defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
  46. #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW
  47. #elif !defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW) && defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
  48. #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW PSA_WANT_ALG_RSA_PKCS1V15_SIGN
  49. #endif
  50. /****************************************************************/
  51. /* Require built-in implementations based on PSA requirements */
  52. /****************************************************************/
  53. #if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
  54. #if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)
  55. #if !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA)
  56. #define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
  57. #define MBEDTLS_ECDSA_DETERMINISTIC
  58. #define MBEDTLS_ECDSA_C
  59. #define MBEDTLS_HMAC_DRBG_C
  60. #define MBEDTLS_MD_C
  61. #endif /* !MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA */
  62. #endif /* PSA_WANT_ALG_DETERMINISTIC_ECDSA */
  63. #if defined(PSA_WANT_ALG_ECDH)
  64. #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH)
  65. #define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
  66. #define MBEDTLS_ECDH_C
  67. #define MBEDTLS_ECP_C
  68. #define MBEDTLS_BIGNUM_C
  69. #endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDH */
  70. #endif /* PSA_WANT_ALG_ECDH */
  71. #if defined(PSA_WANT_ALG_ECDSA)
  72. #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA)
  73. #define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
  74. #define MBEDTLS_ECDSA_C
  75. #endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDSA */
  76. #endif /* PSA_WANT_ALG_ECDSA */
  77. #if defined(PSA_WANT_ALG_HKDF)
  78. #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF)
  79. #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
  80. #define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
  81. #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF */
  82. #endif /* PSA_WANT_ALG_HKDF */
  83. #if defined(PSA_WANT_ALG_HMAC)
  84. #if !defined(MBEDTLS_PSA_ACCEL_ALG_HMAC)
  85. #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
  86. #endif /* !MBEDTLS_PSA_ACCEL_ALG_HMAC */
  87. #endif /* PSA_WANT_ALG_HMAC */
  88. #if defined(PSA_WANT_ALG_MD2) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD2)
  89. #define MBEDTLS_PSA_BUILTIN_ALG_MD2 1
  90. #define MBEDTLS_MD2_C
  91. #endif
  92. #if defined(PSA_WANT_ALG_MD4) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD4)
  93. #define MBEDTLS_PSA_BUILTIN_ALG_MD4 1
  94. #define MBEDTLS_MD4_C
  95. #endif
  96. #if defined(PSA_WANT_ALG_MD5) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD5)
  97. #define MBEDTLS_PSA_BUILTIN_ALG_MD5 1
  98. #define MBEDTLS_MD5_C
  99. #endif
  100. #if defined(PSA_WANT_ALG_RIPEMD160) && !defined(MBEDTLS_PSA_ACCEL_ALG_RIPEMD160)
  101. #define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1
  102. #define MBEDTLS_RIPEMD160_C
  103. #endif
  104. #if defined(PSA_WANT_ALG_RSA_OAEP)
  105. #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP)
  106. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
  107. #define MBEDTLS_RSA_C
  108. #define MBEDTLS_BIGNUM_C
  109. #define MBEDTLS_OID_C
  110. #define MBEDTLS_PKCS1_V21
  111. #define MBEDTLS_MD_C
  112. #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP */
  113. #endif /* PSA_WANT_ALG_RSA_OAEP */
  114. #if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT)
  115. #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT)
  116. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
  117. #define MBEDTLS_RSA_C
  118. #define MBEDTLS_BIGNUM_C
  119. #define MBEDTLS_OID_C
  120. #define MBEDTLS_PKCS1_V15
  121. #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT */
  122. #endif /* PSA_WANT_ALG_RSA_PKCS1V15_CRYPT */
  123. #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
  124. #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN)
  125. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
  126. #define MBEDTLS_RSA_C
  127. #define MBEDTLS_BIGNUM_C
  128. #define MBEDTLS_OID_C
  129. #define MBEDTLS_PKCS1_V15
  130. #define MBEDTLS_MD_C
  131. #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN */
  132. #endif /* PSA_WANT_ALG_RSA_PKCS1V15_SIGN */
  133. #if defined(PSA_WANT_ALG_RSA_PSS)
  134. #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
  135. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
  136. #define MBEDTLS_RSA_C
  137. #define MBEDTLS_BIGNUM_C
  138. #define MBEDTLS_OID_C
  139. #define MBEDTLS_PKCS1_V21
  140. #define MBEDTLS_MD_C
  141. #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PSS */
  142. #endif /* PSA_WANT_ALG_RSA_PSS */
  143. #if defined(PSA_WANT_ALG_SHA_1) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_1)
  144. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1
  145. #define MBEDTLS_SHA1_C
  146. #endif
  147. #if defined(PSA_WANT_ALG_SHA_224) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_224)
  148. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1
  149. #define MBEDTLS_SHA256_C
  150. #endif
  151. #if defined(PSA_WANT_ALG_SHA_256) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_256)
  152. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1
  153. #define MBEDTLS_SHA256_C
  154. #endif
  155. #if defined(PSA_WANT_ALG_SHA_384) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_384)
  156. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1
  157. #define MBEDTLS_SHA512_C
  158. #endif
  159. #if defined(PSA_WANT_ALG_SHA_512) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_512)
  160. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1
  161. #define MBEDTLS_SHA512_C
  162. #endif
  163. #if defined(PSA_WANT_ALG_TLS12_PRF)
  164. #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF)
  165. #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
  166. #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF */
  167. #endif /* PSA_WANT_ALG_TLS12_PRF */
  168. #if defined(PSA_WANT_ALG_TLS12_PSK_TO_MS)
  169. #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS)
  170. #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
  171. #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS */
  172. #endif /* PSA_WANT_ALG_TLS12_PSK_TO_MS */
  173. #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR)
  174. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR)
  175. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
  176. #define MBEDTLS_ECP_C
  177. #define MBEDTLS_BIGNUM_C
  178. #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR */
  179. #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR */
  180. #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
  181. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
  182. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
  183. #define MBEDTLS_ECP_C
  184. #define MBEDTLS_BIGNUM_C
  185. #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY */
  186. #endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
  187. #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR)
  188. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR)
  189. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
  190. #define MBEDTLS_RSA_C
  191. #define MBEDTLS_BIGNUM_C
  192. #define MBEDTLS_OID_C
  193. #define MBEDTLS_GENPRIME
  194. #define MBEDTLS_PK_PARSE_C
  195. #define MBEDTLS_PK_WRITE_C
  196. #define MBEDTLS_PK_C
  197. #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR */
  198. #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR */
  199. #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
  200. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
  201. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
  202. #define MBEDTLS_RSA_C
  203. #define MBEDTLS_BIGNUM_C
  204. #define MBEDTLS_OID_C
  205. #define MBEDTLS_PK_PARSE_C
  206. #define MBEDTLS_PK_WRITE_C
  207. #define MBEDTLS_PK_C
  208. #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY */
  209. #endif /* PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY */
  210. /* If any of the block modes are requested that don't have an
  211. * associated HW assist, define PSA_HAVE_SOFT_BLOCK_MODE for checking
  212. * in the block cipher key types. */
  213. #if (defined(PSA_WANT_ALG_CTR) && !defined(MBEDTLS_PSA_ACCEL_ALG_CTR)) || \
  214. (defined(PSA_WANT_ALG_CFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_CFB)) || \
  215. (defined(PSA_WANT_ALG_OFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_OFB)) || \
  216. (defined(PSA_WANT_ALG_XTS) && !defined(MBEDTLS_PSA_ACCEL_ALG_XTS)) || \
  217. defined(PSA_WANT_ALG_ECB_NO_PADDING) || \
  218. (defined(PSA_WANT_ALG_CBC_NO_PADDING) && \
  219. !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING)) || \
  220. (defined(PSA_WANT_ALG_CBC_PKCS7) && \
  221. !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7)) || \
  222. (defined(PSA_WANT_ALG_CMAC) && !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC))
  223. #define PSA_HAVE_SOFT_BLOCK_MODE 1
  224. #endif
  225. #if (defined(PSA_WANT_ALG_GCM) && !defined(MBEDTLS_PSA_ACCEL_ALG_GCM)) || \
  226. (defined(PSA_WANT_ALG_CCM) && !defined(MBEDTLS_PSA_ACCEL_ALG_CCM))
  227. #define PSA_HAVE_SOFT_BLOCK_AEAD 1
  228. #endif
  229. #if defined(PSA_WANT_KEY_TYPE_AES)
  230. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_AES)
  231. #define PSA_HAVE_SOFT_KEY_TYPE_AES 1
  232. #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_AES */
  233. #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
  234. defined(PSA_HAVE_SOFT_BLOCK_MODE) || \
  235. defined(PSA_HAVE_SOFT_BLOCK_AEAD)
  236. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1
  237. #define MBEDTLS_AES_C
  238. #endif /* PSA_HAVE_SOFT_KEY_TYPE_AES || PSA_HAVE_SOFT_BLOCK_MODE */
  239. #endif /* PSA_WANT_KEY_TYPE_AES */
  240. #if defined(PSA_WANT_KEY_TYPE_ARC4)
  241. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ARC4)
  242. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARC4 1
  243. #define MBEDTLS_ARC4_C
  244. #endif /*!MBEDTLS_PSA_ACCEL_KEY_TYPE_ARC4 */
  245. #endif /* PSA_WANT_KEY_TYPE_ARC4 */
  246. #if defined(PSA_WANT_KEY_TYPE_CAMELLIA)
  247. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA)
  248. #define PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA 1
  249. #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA */
  250. #if defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) || \
  251. defined(PSA_HAVE_SOFT_BLOCK_MODE) || \
  252. defined(PSA_HAVE_SOFT_BLOCK_AEAD)
  253. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1
  254. #define MBEDTLS_CAMELLIA_C
  255. #endif /* PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA || PSA_HAVE_SOFT_BLOCK_MODE */
  256. #endif /* PSA_WANT_KEY_TYPE_CAMELLIA */
  257. #if defined(PSA_WANT_KEY_TYPE_DES)
  258. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DES)
  259. #define PSA_HAVE_SOFT_KEY_TYPE_DES 1
  260. #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DES */
  261. #if defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
  262. defined(PSA_HAVE_SOFT_BLOCK_MODE)
  263. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1
  264. #define MBEDTLS_DES_C
  265. #endif /*PSA_HAVE_SOFT_KEY_TYPE_DES || PSA_HAVE_SOFT_BLOCK_MODE */
  266. #endif /* PSA_WANT_KEY_TYPE_DES */
  267. #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
  268. #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20)
  269. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1
  270. #define MBEDTLS_CHACHA20_C
  271. #endif /*!MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20 */
  272. #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
  273. /* If any of the software block ciphers are selected, define
  274. * PSA_HAVE_SOFT_BLOCK_CIPHER, which can be used in any of these
  275. * situations. */
  276. #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
  277. defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
  278. defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
  279. #define PSA_HAVE_SOFT_BLOCK_CIPHER 1
  280. #endif
  281. #if defined(PSA_WANT_ALG_STREAM_CIPHER)
  282. #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
  283. #endif /* PSA_WANT_ALG_STREAM_CIPHER */
  284. #if defined(PSA_WANT_ALG_CBC_MAC)
  285. #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_MAC)
  286. #error "CBC-MAC is not yet supported via the PSA API in Mbed TLS."
  287. #define MBEDTLS_PSA_BUILTIN_ALG_CBC_MAC 1
  288. #endif /* !MBEDTLS_PSA_ACCEL_ALG_CBC_MAC */
  289. #endif /* PSA_WANT_ALG_CBC_MAC */
  290. #if defined(PSA_WANT_ALG_CMAC)
  291. #if !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC) || \
  292. defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
  293. #define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1
  294. #define MBEDTLS_CMAC_C
  295. #endif /* !MBEDTLS_PSA_ACCEL_ALG_CMAC */
  296. #endif /* PSA_WANT_ALG_CMAC */
  297. #if defined(PSA_WANT_ALG_CTR)
  298. #if !defined(MBEDTLS_PSA_ACCEL_ALG_CTR) || \
  299. defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
  300. #define MBEDTLS_PSA_BUILTIN_ALG_CTR 1
  301. #define MBEDTLS_CIPHER_MODE_CTR
  302. #endif
  303. #endif /* PSA_WANT_ALG_CTR */
  304. #if defined(PSA_WANT_ALG_CFB)
  305. #if !defined(MBEDTLS_PSA_ACCEL_ALG_CFB) || \
  306. defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
  307. #define MBEDTLS_PSA_BUILTIN_ALG_CFB 1
  308. #define MBEDTLS_CIPHER_MODE_CFB
  309. #endif
  310. #endif /* PSA_WANT_ALG_CFB */
  311. #if defined(PSA_WANT_ALG_OFB)
  312. #if !defined(MBEDTLS_PSA_ACCEL_ALG_OFB) || \
  313. defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
  314. #define MBEDTLS_PSA_BUILTIN_ALG_OFB 1
  315. #define MBEDTLS_CIPHER_MODE_OFB
  316. #endif
  317. #endif /* PSA_WANT_ALG_OFB */
  318. #if defined(PSA_WANT_ALG_XTS)
  319. #if !defined(MBEDTLS_PSA_ACCEL_ALG_XTS) || \
  320. defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
  321. #define MBEDTLS_PSA_BUILTIN_ALG_XTS 1
  322. #define MBEDTLS_CIPHER_MODE_XTS
  323. #endif
  324. #endif /* PSA_WANT_ALG_XTS */
  325. #if defined(PSA_WANT_ALG_ECB_NO_PADDING)
  326. #define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1
  327. #endif
  328. #if defined(PSA_WANT_ALG_CBC_NO_PADDING)
  329. #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING) || \
  330. defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
  331. #define MBEDTLS_CIPHER_MODE_CBC
  332. #define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1
  333. #endif
  334. #endif /* PSA_WANT_ALG_CBC_NO_PADDING */
  335. #if defined(PSA_WANT_ALG_CBC_PKCS7)
  336. #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7) || \
  337. defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
  338. #define MBEDTLS_CIPHER_MODE_CBC
  339. #define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1
  340. #define MBEDTLS_CIPHER_PADDING_PKCS7
  341. #endif
  342. #endif /* PSA_WANT_ALG_CBC_PKCS7 */
  343. #if defined(PSA_WANT_ALG_CCM)
  344. #if !defined(MBEDTLS_PSA_ACCEL_ALG_CCM) || \
  345. defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
  346. defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
  347. #define MBEDTLS_PSA_BUILTIN_ALG_CCM 1
  348. #define MBEDTLS_CCM_C
  349. #endif
  350. #endif /* PSA_WANT_ALG_CCM */
  351. #if defined(PSA_WANT_ALG_GCM)
  352. #if !defined(MBEDTLS_PSA_ACCEL_ALG_GCM) || \
  353. defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
  354. defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
  355. #define MBEDTLS_PSA_BUILTIN_ALG_GCM 1
  356. #define MBEDTLS_GCM_C
  357. #endif
  358. #endif /* PSA_WANT_ALG_GCM */
  359. #if defined(PSA_WANT_ALG_CHACHA20_POLY1305)
  360. #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
  361. #define MBEDTLS_CHACHAPOLY_C
  362. #define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1
  363. #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
  364. #endif /* PSA_WANT_ALG_CHACHA20_POLY1305 */
  365. #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256)
  366. #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256)
  367. #define MBEDTLS_ECP_DP_BP256R1_ENABLED
  368. #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1
  369. #endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256 */
  370. #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_256 */
  371. #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384)
  372. #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384)
  373. #define MBEDTLS_ECP_DP_BP384R1_ENABLED
  374. #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1
  375. #endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384 */
  376. #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_384 */
  377. #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512)
  378. #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512)
  379. #define MBEDTLS_ECP_DP_BP512R1_ENABLED
  380. #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1
  381. #endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512 */
  382. #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_512 */
  383. #if defined(PSA_WANT_ECC_MONTGOMERY_255)
  384. #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255)
  385. #define MBEDTLS_ECP_DP_CURVE25519_ENABLED
  386. #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1
  387. #endif /* !MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 */
  388. #endif /* PSA_WANT_ECC_MONTGOMERY_255 */
  389. #if defined(PSA_WANT_ECC_MONTGOMERY_448)
  390. #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448)
  391. /*
  392. * Curve448 is not yet supported via the PSA API in Mbed TLS
  393. * (https://github.com/ARMmbed/mbedtls/issues/4249).
  394. */
  395. #error "Curve448 is not yet supported via the PSA API in Mbed TLS."
  396. #define MBEDTLS_ECP_DP_CURVE448_ENABLED
  397. #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1
  398. #endif /* !MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448 */
  399. #endif /* PSA_WANT_ECC_MONTGOMERY_448 */
  400. #if defined(PSA_WANT_ECC_SECP_R1_192)
  401. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192)
  402. #define MBEDTLS_ECP_DP_SECP192R1_ENABLED
  403. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1
  404. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192 */
  405. #endif /* PSA_WANT_ECC_SECP_R1_192 */
  406. #if defined(PSA_WANT_ECC_SECP_R1_224)
  407. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224)
  408. #define MBEDTLS_ECP_DP_SECP224R1_ENABLED
  409. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1
  410. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224 */
  411. #endif /* PSA_WANT_ECC_SECP_R1_224 */
  412. #if defined(PSA_WANT_ECC_SECP_R1_256)
  413. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256)
  414. #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
  415. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1
  416. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256 */
  417. #endif /* PSA_WANT_ECC_SECP_R1_256 */
  418. #if defined(PSA_WANT_ECC_SECP_R1_384)
  419. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384)
  420. #define MBEDTLS_ECP_DP_SECP384R1_ENABLED
  421. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1
  422. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384 */
  423. #endif /* PSA_WANT_ECC_SECP_R1_384 */
  424. #if defined(PSA_WANT_ECC_SECP_R1_521)
  425. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521)
  426. #define MBEDTLS_ECP_DP_SECP521R1_ENABLED
  427. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1
  428. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521 */
  429. #endif /* PSA_WANT_ECC_SECP_R1_521 */
  430. #if defined(PSA_WANT_ECC_SECP_K1_192)
  431. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192)
  432. #define MBEDTLS_ECP_DP_SECP192K1_ENABLED
  433. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1
  434. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192 */
  435. #endif /* PSA_WANT_ECC_SECP_K1_192 */
  436. #if defined(PSA_WANT_ECC_SECP_K1_224)
  437. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224)
  438. /*
  439. * SECP224K1 is buggy via the PSA API in Mbed TLS
  440. * (https://github.com/ARMmbed/mbedtls/issues/3541).
  441. */
  442. #error "SECP224K1 is buggy via the PSA API in Mbed TLS."
  443. #define MBEDTLS_ECP_DP_SECP224K1_ENABLED
  444. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1
  445. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224 */
  446. #endif /* PSA_WANT_ECC_SECP_K1_224 */
  447. #if defined(PSA_WANT_ECC_SECP_K1_256)
  448. #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256)
  449. #define MBEDTLS_ECP_DP_SECP256K1_ENABLED
  450. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1
  451. #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256 */
  452. #endif /* PSA_WANT_ECC_SECP_K1_256 */
  453. /****************************************************************/
  454. /* Infer PSA requirements from Mbed TLS capabilities */
  455. /****************************************************************/
  456. #else /* MBEDTLS_PSA_CRYPTO_CONFIG */
  457. /*
  458. * Ensure PSA_WANT_* defines are setup properly if MBEDTLS_PSA_CRYPTO_CONFIG
  459. * is not defined
  460. */
  461. #if defined(MBEDTLS_CCM_C)
  462. #define MBEDTLS_PSA_BUILTIN_ALG_CCM 1
  463. #define PSA_WANT_ALG_CCM 1
  464. #endif /* MBEDTLS_CCM_C */
  465. #if defined(MBEDTLS_CMAC_C)
  466. #define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1
  467. #define PSA_WANT_ALG_CMAC 1
  468. #endif /* MBEDTLS_CMAC_C */
  469. #if defined(MBEDTLS_ECDH_C)
  470. #define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
  471. #define PSA_WANT_ALG_ECDH 1
  472. #endif /* MBEDTLS_ECDH_C */
  473. #if defined(MBEDTLS_ECDSA_C)
  474. #define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
  475. #define PSA_WANT_ALG_ECDSA 1
  476. #define PSA_WANT_ALG_ECDSA_ANY 1
  477. // Only add in DETERMINISTIC support if ECDSA is also enabled
  478. #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
  479. #define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
  480. #define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1
  481. #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
  482. #endif /* MBEDTLS_ECDSA_C */
  483. #if defined(MBEDTLS_ECP_C)
  484. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
  485. #define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1
  486. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
  487. #define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1
  488. #endif /* MBEDTLS_ECP_C */
  489. #if defined(MBEDTLS_GCM_C)
  490. #define MBEDTLS_PSA_BUILTIN_ALG_GCM 1
  491. #define PSA_WANT_ALG_GCM 1
  492. #endif /* MBEDTLS_GCM_C */
  493. #if defined(MBEDTLS_HKDF_C)
  494. #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
  495. #define PSA_WANT_ALG_HMAC 1
  496. #define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
  497. #define PSA_WANT_ALG_HKDF 1
  498. #endif /* MBEDTLS_HKDF_C */
  499. #if defined(MBEDTLS_MD_C)
  500. #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
  501. #define PSA_WANT_ALG_HMAC 1
  502. #define PSA_WANT_KEY_TYPE_HMAC
  503. #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
  504. #define PSA_WANT_ALG_TLS12_PRF 1
  505. #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
  506. #define PSA_WANT_ALG_TLS12_PSK_TO_MS 1
  507. #endif /* MBEDTLS_MD_C */
  508. #if defined(MBEDTLS_MD2_C)
  509. #define MBEDTLS_PSA_BUILTIN_ALG_MD2 1
  510. #define PSA_WANT_ALG_MD2 1
  511. #endif
  512. #if defined(MBEDTLS_MD4_C)
  513. #define MBEDTLS_PSA_BUILTIN_ALG_MD4 1
  514. #define PSA_WANT_ALG_MD4 1
  515. #endif
  516. #if defined(MBEDTLS_MD5_C)
  517. #define MBEDTLS_PSA_BUILTIN_ALG_MD5 1
  518. #define PSA_WANT_ALG_MD5 1
  519. #endif
  520. #if defined(MBEDTLS_RIPEMD160_C)
  521. #define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1
  522. #define PSA_WANT_ALG_RIPEMD160 1
  523. #endif
  524. #if defined(MBEDTLS_RSA_C)
  525. #if defined(MBEDTLS_PKCS1_V15)
  526. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
  527. #define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1
  528. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
  529. #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1
  530. #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW 1
  531. #endif /* MBEDTLSS_PKCS1_V15 */
  532. #if defined(MBEDTLS_PKCS1_V21)
  533. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
  534. #define PSA_WANT_ALG_RSA_OAEP 1
  535. #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
  536. #define PSA_WANT_ALG_RSA_PSS 1
  537. #endif /* MBEDTLS_PKCS1_V21 */
  538. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
  539. #define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1
  540. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
  541. #define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1
  542. #endif /* MBEDTLS_RSA_C */
  543. #if defined(MBEDTLS_SHA1_C)
  544. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1
  545. #define PSA_WANT_ALG_SHA_1 1
  546. #endif
  547. #if defined(MBEDTLS_SHA256_C)
  548. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1
  549. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1
  550. #define PSA_WANT_ALG_SHA_224 1
  551. #define PSA_WANT_ALG_SHA_256 1
  552. #endif
  553. #if defined(MBEDTLS_SHA512_C)
  554. #if !defined(MBEDTLS_SHA512_NO_SHA384)
  555. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1
  556. #define PSA_WANT_ALG_SHA_384 1
  557. #endif
  558. #define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1
  559. #define PSA_WANT_ALG_SHA_512 1
  560. #endif
  561. #if defined(MBEDTLS_AES_C)
  562. #define PSA_WANT_KEY_TYPE_AES 1
  563. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1
  564. #endif
  565. #if defined(MBEDTLS_ARC4_C)
  566. #define PSA_WANT_KEY_TYPE_ARC4 1
  567. #define PSA_WANT_ALG_STREAM_CIPHER 1
  568. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARC4 1
  569. #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
  570. #endif
  571. #if defined(MBEDTLS_CAMELLIA_C)
  572. #define PSA_WANT_KEY_TYPE_CAMELLIA 1
  573. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1
  574. #endif
  575. #if defined(MBEDTLS_DES_C)
  576. #define PSA_WANT_KEY_TYPE_DES 1
  577. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1
  578. #endif
  579. #if defined(MBEDTLS_CHACHA20_C)
  580. #define PSA_WANT_KEY_TYPE_CHACHA20 1
  581. #define PSA_WANT_ALG_STREAM_CIPHER 1
  582. #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1
  583. #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
  584. #if defined(MBEDTLS_CHACHAPOLY_C)
  585. #define PSA_WANT_ALG_CHACHA20_POLY1305 1
  586. #define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1
  587. #endif
  588. #endif
  589. #if defined(MBEDTLS_CIPHER_MODE_CBC)
  590. #define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1
  591. #define PSA_WANT_ALG_CBC_NO_PADDING 1
  592. #if defined(MBEDTLS_CIPHER_PADDING_PKCS7)
  593. #define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1
  594. #define PSA_WANT_ALG_CBC_PKCS7 1
  595. #endif
  596. #endif
  597. #if defined(MBEDTLS_AES_C) || defined(MBEDTLS_DES_C) || \
  598. defined(MBEDTLS_CAMELLIA_C)
  599. #define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1
  600. #define PSA_WANT_ALG_ECB_NO_PADDING 1
  601. #endif
  602. #if defined(MBEDTLS_CIPHER_MODE_CFB)
  603. #define MBEDTLS_PSA_BUILTIN_ALG_CFB 1
  604. #define PSA_WANT_ALG_CFB 1
  605. #endif
  606. #if defined(MBEDTLS_CIPHER_MODE_CTR)
  607. #define MBEDTLS_PSA_BUILTIN_ALG_CTR 1
  608. #define PSA_WANT_ALG_CTR 1
  609. #endif
  610. #if defined(MBEDTLS_CIPHER_MODE_OFB)
  611. #define MBEDTLS_PSA_BUILTIN_ALG_OFB 1
  612. #define PSA_WANT_ALG_OFB 1
  613. #endif
  614. #if defined(MBEDTLS_CIPHER_MODE_XTS)
  615. #define MBEDTLS_PSA_BUILTIN_ALG_XTS 1
  616. #define PSA_WANT_ALG_XTS 1
  617. #endif
  618. #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
  619. #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1
  620. #define PSA_WANT_ECC_BRAINPOOL_P_R1_256
  621. #endif
  622. #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
  623. #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1
  624. #define PSA_WANT_ECC_BRAINPOOL_P_R1_384
  625. #endif
  626. #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
  627. #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1
  628. #define PSA_WANT_ECC_BRAINPOOL_P_R1_512
  629. #endif
  630. #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
  631. #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1
  632. #define PSA_WANT_ECC_MONTGOMERY_255
  633. #endif
  634. /* Curve448 is not yet supported via the PSA API (https://github.com/ARMmbed/mbedtls/issues/4249) */
  635. #if 0 && defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
  636. #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1
  637. #define PSA_WANT_ECC_MONTGOMERY_448
  638. #endif
  639. #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
  640. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1
  641. #define PSA_WANT_ECC_SECP_R1_192
  642. #endif
  643. #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
  644. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1
  645. #define PSA_WANT_ECC_SECP_R1_224
  646. #endif
  647. #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
  648. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1
  649. #define PSA_WANT_ECC_SECP_R1_256
  650. #endif
  651. #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
  652. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1
  653. #define PSA_WANT_ECC_SECP_R1_384
  654. #endif
  655. #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
  656. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1
  657. #define PSA_WANT_ECC_SECP_R1_521
  658. #endif
  659. #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
  660. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1
  661. #define PSA_WANT_ECC_SECP_K1_192
  662. #endif
  663. /* SECP224K1 is buggy via the PSA API (https://github.com/ARMmbed/mbedtls/issues/3541) */
  664. #if 0 && defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
  665. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1
  666. #define PSA_WANT_ECC_SECP_K1_224
  667. #endif
  668. #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
  669. #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1
  670. #define PSA_WANT_ECC_SECP_K1_256
  671. #endif
  672. #endif /* MBEDTLS_PSA_CRYPTO_CONFIG */
  673. /* These features are always enabled. */
  674. #define PSA_WANT_KEY_TYPE_DERIVE 1
  675. #define PSA_WANT_KEY_TYPE_RAW_DATA 1
  676. #ifdef __cplusplus
  677. }
  678. #endif
  679. #endif /* MBEDTLS_CONFIG_PSA_H */