@scriptc/runtime 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/LICENSE +202 -0
  2. package/package.json +16 -6
  3. package/src/scr_array.c +488 -0
  4. package/src/scr_assert.c +1393 -0
  5. package/src/scr_async.c +2593 -0
  6. package/src/scr_async_dyn.c +607 -0
  7. package/src/scr_bytes.c +1425 -0
  8. package/src/scr_bytes_io.c +161 -0
  9. package/src/scr_child.c +3587 -0
  10. package/src/scr_closure.c +214 -0
  11. package/src/scr_console.c +143 -0
  12. package/src/scr_cycle.c +218 -0
  13. package/src/scr_dc.c +805 -0
  14. package/src/scr_dgram.c +1007 -0
  15. package/src/scr_dyn_handle.c +154 -0
  16. package/src/scr_dyn_invoke.c +644 -0
  17. package/src/scr_error.c +332 -0
  18. package/src/scr_events.c +714 -0
  19. package/src/scr_events_emitter.c +699 -0
  20. package/src/scr_exception.c +242 -0
  21. package/src/scr_fetch.c +1130 -0
  22. package/src/scr_fetch_curl.c +654 -0
  23. package/src/scr_http.c +3482 -0
  24. package/src/scr_http2.c +3030 -0
  25. package/src/scr_inspect.c +803 -0
  26. package/src/scr_inspect_island.c +51 -0
  27. package/src/scr_island.c +9363 -0
  28. package/src/scr_json.c +2151 -0
  29. package/src/scr_lib.c +3612 -0
  30. package/src/scr_loop_epoll.c +241 -0
  31. package/src/scr_loop_kqueue.c +121 -0
  32. package/src/scr_loop_wsapoll.c +208 -0
  33. package/src/scr_map.c +591 -0
  34. package/src/scr_net.c +3017 -0
  35. package/src/scr_net_island.c +458 -0
  36. package/src/scr_number.c +115 -0
  37. package/src/scr_object.c +25 -0
  38. package/src/scr_path.c +1266 -0
  39. package/src/scr_platform.h +119 -0
  40. package/src/scr_readline.c +287 -0
  41. package/src/scr_regex.c +1080 -0
  42. package/src/scr_runtime.h +5046 -0
  43. package/src/scr_stream.c +2877 -0
  44. package/src/scr_string.c +1264 -0
  45. package/src/scr_symbol.c +132 -0
  46. package/src/scr_test.c +662 -0
  47. package/src/scr_tls.c +1520 -0
  48. package/src/scr_union.c +105 -0
  49. package/src/scr_url.c +911 -0
  50. package/src/scr_url_internal.h +29 -0
  51. package/src/scr_url_params.c +561 -0
  52. package/src/scr_watch.c +568 -0
  53. package/src/scr_web.c +1778 -0
  54. package/src/scr_win.c +76 -0
  55. package/src/scr_zlib.c +197 -0
  56. package/src/scr_zlib_island.c +15 -0
  57. package/vendor/README.md +52 -0
  58. package/vendor/curl/COPYRIGHT +534 -0
  59. package/vendor/curl/include/curl/curl.h +3214 -0
  60. package/vendor/curl/include/curl/curlver.h +79 -0
  61. package/vendor/curl/include/curl/easy.h +125 -0
  62. package/vendor/curl/include/curl/header.h +74 -0
  63. package/vendor/curl/include/curl/mprintf.h +52 -0
  64. package/vendor/curl/include/curl/multi.h +460 -0
  65. package/vendor/curl/include/curl/options.h +70 -0
  66. package/vendor/curl/include/curl/stdcheaders.h +35 -0
  67. package/vendor/curl/include/curl/system.h +508 -0
  68. package/vendor/curl/include/curl/typecheck-gcc.h +716 -0
  69. package/vendor/curl/include/curl/urlapi.h +149 -0
  70. package/vendor/curl/include/curl/websockets.h +84 -0
  71. package/vendor/mbedtls/LICENSE +553 -0
  72. package/vendor/mbedtls/include/CMakeLists.txt +22 -0
  73. package/vendor/mbedtls/include/mbedtls/aes.h +631 -0
  74. package/vendor/mbedtls/include/mbedtls/aria.h +343 -0
  75. package/vendor/mbedtls/include/mbedtls/asn1.h +642 -0
  76. package/vendor/mbedtls/include/mbedtls/asn1write.h +390 -0
  77. package/vendor/mbedtls/include/mbedtls/base64.h +82 -0
  78. package/vendor/mbedtls/include/mbedtls/bignum.h +1088 -0
  79. package/vendor/mbedtls/include/mbedtls/block_cipher.h +76 -0
  80. package/vendor/mbedtls/include/mbedtls/build_info.h +194 -0
  81. package/vendor/mbedtls/include/mbedtls/camellia.h +305 -0
  82. package/vendor/mbedtls/include/mbedtls/ccm.h +526 -0
  83. package/vendor/mbedtls/include/mbedtls/chacha20.h +209 -0
  84. package/vendor/mbedtls/include/mbedtls/chachapoly.h +351 -0
  85. package/vendor/mbedtls/include/mbedtls/check_config.h +1149 -0
  86. package/vendor/mbedtls/include/mbedtls/cipher.h +1250 -0
  87. package/vendor/mbedtls/include/mbedtls/cmac.h +246 -0
  88. package/vendor/mbedtls/include/mbedtls/compat-2.x.h +46 -0
  89. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +578 -0
  90. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +873 -0
  91. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +359 -0
  92. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +145 -0
  93. package/vendor/mbedtls/include/mbedtls/config_adjust_ssl.h +91 -0
  94. package/vendor/mbedtls/include/mbedtls/config_adjust_x509.h +35 -0
  95. package/vendor/mbedtls/include/mbedtls/config_psa.h +61 -0
  96. package/vendor/mbedtls/include/mbedtls/constant_time.h +36 -0
  97. package/vendor/mbedtls/include/mbedtls/ctr_drbg.h +596 -0
  98. package/vendor/mbedtls/include/mbedtls/debug.h +156 -0
  99. package/vendor/mbedtls/include/mbedtls/des.h +385 -0
  100. package/vendor/mbedtls/include/mbedtls/dhm.h +972 -0
  101. package/vendor/mbedtls/include/mbedtls/ecdh.h +455 -0
  102. package/vendor/mbedtls/include/mbedtls/ecdsa.h +674 -0
  103. package/vendor/mbedtls/include/mbedtls/ecjpake.h +298 -0
  104. package/vendor/mbedtls/include/mbedtls/ecp.h +1517 -0
  105. package/vendor/mbedtls/include/mbedtls/entropy.h +274 -0
  106. package/vendor/mbedtls/include/mbedtls/error.h +201 -0
  107. package/vendor/mbedtls/include/mbedtls/gcm.h +387 -0
  108. package/vendor/mbedtls/include/mbedtls/hkdf.h +124 -0
  109. package/vendor/mbedtls/include/mbedtls/hmac_drbg.h +434 -0
  110. package/vendor/mbedtls/include/mbedtls/lms.h +440 -0
  111. package/vendor/mbedtls/include/mbedtls/mbedtls_config.h +4446 -0
  112. package/vendor/mbedtls/include/mbedtls/md.h +526 -0
  113. package/vendor/mbedtls/include/mbedtls/md5.h +190 -0
  114. package/vendor/mbedtls/include/mbedtls/memory_buffer_alloc.h +142 -0
  115. package/vendor/mbedtls/include/mbedtls/net_sockets.h +299 -0
  116. package/vendor/mbedtls/include/mbedtls/nist_kw.h +166 -0
  117. package/vendor/mbedtls/include/mbedtls/oid.h +727 -0
  118. package/vendor/mbedtls/include/mbedtls/pem.h +160 -0
  119. package/vendor/mbedtls/include/mbedtls/pk.h +1303 -0
  120. package/vendor/mbedtls/include/mbedtls/pkcs12.h +186 -0
  121. package/vendor/mbedtls/include/mbedtls/pkcs5.h +198 -0
  122. package/vendor/mbedtls/include/mbedtls/pkcs7.h +252 -0
  123. package/vendor/mbedtls/include/mbedtls/platform.h +516 -0
  124. package/vendor/mbedtls/include/mbedtls/platform_time.h +79 -0
  125. package/vendor/mbedtls/include/mbedtls/platform_util.h +247 -0
  126. package/vendor/mbedtls/include/mbedtls/poly1305.h +168 -0
  127. package/vendor/mbedtls/include/mbedtls/private_access.h +20 -0
  128. package/vendor/mbedtls/include/mbedtls/psa_util.h +207 -0
  129. package/vendor/mbedtls/include/mbedtls/ripemd160.h +136 -0
  130. package/vendor/mbedtls/include/mbedtls/rsa.h +1170 -0
  131. package/vendor/mbedtls/include/mbedtls/sha1.h +219 -0
  132. package/vendor/mbedtls/include/mbedtls/sha256.h +200 -0
  133. package/vendor/mbedtls/include/mbedtls/sha3.h +172 -0
  134. package/vendor/mbedtls/include/mbedtls/sha512.h +208 -0
  135. package/vendor/mbedtls/include/mbedtls/ssl.h +5887 -0
  136. package/vendor/mbedtls/include/mbedtls/ssl_cache.h +187 -0
  137. package/vendor/mbedtls/include/mbedtls/ssl_ciphersuites.h +482 -0
  138. package/vendor/mbedtls/include/mbedtls/ssl_cookie.h +106 -0
  139. package/vendor/mbedtls/include/mbedtls/ssl_ticket.h +199 -0
  140. package/vendor/mbedtls/include/mbedtls/threading.h +167 -0
  141. package/vendor/mbedtls/include/mbedtls/timing.h +94 -0
  142. package/vendor/mbedtls/include/mbedtls/version.h +78 -0
  143. package/vendor/mbedtls/include/mbedtls/x509.h +500 -0
  144. package/vendor/mbedtls/include/mbedtls/x509_crl.h +184 -0
  145. package/vendor/mbedtls/include/mbedtls/x509_crt.h +1208 -0
  146. package/vendor/mbedtls/include/mbedtls/x509_csr.h +382 -0
  147. package/vendor/mbedtls/include/psa/build_info.h +20 -0
  148. package/vendor/mbedtls/include/psa/crypto.h +4998 -0
  149. package/vendor/mbedtls/include/psa/crypto_adjust_auto_enabled.h +31 -0
  150. package/vendor/mbedtls/include/psa/crypto_adjust_config_dependencies.h +51 -0
  151. package/vendor/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +101 -0
  152. package/vendor/mbedtls/include/psa/crypto_adjust_config_synonyms.h +49 -0
  153. package/vendor/mbedtls/include/psa/crypto_builtin_composites.h +214 -0
  154. package/vendor/mbedtls/include/psa/crypto_builtin_key_derivation.h +118 -0
  155. package/vendor/mbedtls/include/psa/crypto_builtin_primitives.h +114 -0
  156. package/vendor/mbedtls/include/psa/crypto_compat.h +230 -0
  157. package/vendor/mbedtls/include/psa/crypto_config.h +145 -0
  158. package/vendor/mbedtls/include/psa/crypto_driver_common.h +44 -0
  159. package/vendor/mbedtls/include/psa/crypto_driver_contexts_composites.h +151 -0
  160. package/vendor/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +52 -0
  161. package/vendor/mbedtls/include/psa/crypto_driver_contexts_primitives.h +105 -0
  162. package/vendor/mbedtls/include/psa/crypto_extra.h +2145 -0
  163. package/vendor/mbedtls/include/psa/crypto_legacy.h +88 -0
  164. package/vendor/mbedtls/include/psa/crypto_platform.h +102 -0
  165. package/vendor/mbedtls/include/psa/crypto_se_driver.h +1383 -0
  166. package/vendor/mbedtls/include/psa/crypto_sizes.h +1319 -0
  167. package/vendor/mbedtls/include/psa/crypto_struct.h +527 -0
  168. package/vendor/mbedtls/include/psa/crypto_types.h +508 -0
  169. package/vendor/mbedtls/include/psa/crypto_values.h +2782 -0
  170. package/vendor/mbedtls/library/aes.c +2294 -0
  171. package/vendor/mbedtls/library/aesce.c +624 -0
  172. package/vendor/mbedtls/library/aesce.h +136 -0
  173. package/vendor/mbedtls/library/aesni.c +846 -0
  174. package/vendor/mbedtls/library/aesni.h +162 -0
  175. package/vendor/mbedtls/library/alignment.h +704 -0
  176. package/vendor/mbedtls/library/aria.c +969 -0
  177. package/vendor/mbedtls/library/asn1parse.c +468 -0
  178. package/vendor/mbedtls/library/asn1write.c +440 -0
  179. package/vendor/mbedtls/library/base64.c +322 -0
  180. package/vendor/mbedtls/library/base64_internal.h +45 -0
  181. package/vendor/mbedtls/library/bignum.c +2583 -0
  182. package/vendor/mbedtls/library/bignum_core.c +1240 -0
  183. package/vendor/mbedtls/library/bignum_core.h +872 -0
  184. package/vendor/mbedtls/library/bignum_core_invasive.h +38 -0
  185. package/vendor/mbedtls/library/bignum_internal.h +122 -0
  186. package/vendor/mbedtls/library/bignum_mod.c +394 -0
  187. package/vendor/mbedtls/library/bignum_mod.h +452 -0
  188. package/vendor/mbedtls/library/bignum_mod_raw.c +276 -0
  189. package/vendor/mbedtls/library/bignum_mod_raw.h +416 -0
  190. package/vendor/mbedtls/library/bignum_mod_raw_invasive.h +34 -0
  191. package/vendor/mbedtls/library/block_cipher.c +207 -0
  192. package/vendor/mbedtls/library/block_cipher_internal.h +99 -0
  193. package/vendor/mbedtls/library/bn_mul.h +1094 -0
  194. package/vendor/mbedtls/library/camellia.c +1058 -0
  195. package/vendor/mbedtls/library/ccm.c +777 -0
  196. package/vendor/mbedtls/library/chacha20.c +563 -0
  197. package/vendor/mbedtls/library/chacha20_internal.h +23 -0
  198. package/vendor/mbedtls/library/chachapoly.c +487 -0
  199. package/vendor/mbedtls/library/check_crypto_config.h +136 -0
  200. package/vendor/mbedtls/library/cipher.c +1712 -0
  201. package/vendor/mbedtls/library/cipher_invasive.h +28 -0
  202. package/vendor/mbedtls/library/cipher_wrap.c +2482 -0
  203. package/vendor/mbedtls/library/cipher_wrap.h +178 -0
  204. package/vendor/mbedtls/library/cmac.c +1067 -0
  205. package/vendor/mbedtls/library/common.h +487 -0
  206. package/vendor/mbedtls/library/constant_time.c +247 -0
  207. package/vendor/mbedtls/library/constant_time_impl.h +541 -0
  208. package/vendor/mbedtls/library/constant_time_internal.h +579 -0
  209. package/vendor/mbedtls/library/ctr.h +35 -0
  210. package/vendor/mbedtls/library/ctr_drbg.c +1016 -0
  211. package/vendor/mbedtls/library/debug.c +475 -0
  212. package/vendor/mbedtls/library/debug_internal.h +185 -0
  213. package/vendor/mbedtls/library/des.c +1042 -0
  214. package/vendor/mbedtls/library/dhm.c +700 -0
  215. package/vendor/mbedtls/library/ecdh.c +696 -0
  216. package/vendor/mbedtls/library/ecdsa.c +858 -0
  217. package/vendor/mbedtls/library/ecjpake.c +1216 -0
  218. package/vendor/mbedtls/library/ecp.c +3674 -0
  219. package/vendor/mbedtls/library/ecp_curves.c +6125 -0
  220. package/vendor/mbedtls/library/ecp_curves_new.c +9 -0
  221. package/vendor/mbedtls/library/ecp_internal_alt.h +287 -0
  222. package/vendor/mbedtls/library/ecp_invasive.h +305 -0
  223. package/vendor/mbedtls/library/entropy.c +680 -0
  224. package/vendor/mbedtls/library/entropy_poll.c +233 -0
  225. package/vendor/mbedtls/library/entropy_poll.h +64 -0
  226. package/vendor/mbedtls/library/error.c +878 -0
  227. package/vendor/mbedtls/library/gcm.c +1330 -0
  228. package/vendor/mbedtls/library/hkdf.c +161 -0
  229. package/vendor/mbedtls/library/hmac_drbg.c +633 -0
  230. package/vendor/mbedtls/library/lmots.c +789 -0
  231. package/vendor/mbedtls/library/lmots.h +288 -0
  232. package/vendor/mbedtls/library/lms.c +778 -0
  233. package/vendor/mbedtls/library/md.c +1108 -0
  234. package/vendor/mbedtls/library/md5.c +426 -0
  235. package/vendor/mbedtls/library/md_psa.h +26 -0
  236. package/vendor/mbedtls/library/md_wrap.h +46 -0
  237. package/vendor/mbedtls/library/memory_buffer_alloc.c +751 -0
  238. package/vendor/mbedtls/library/mps_common.h +181 -0
  239. package/vendor/mbedtls/library/mps_error.h +89 -0
  240. package/vendor/mbedtls/library/mps_reader.c +538 -0
  241. package/vendor/mbedtls/library/mps_reader.h +366 -0
  242. package/vendor/mbedtls/library/mps_trace.c +112 -0
  243. package/vendor/mbedtls/library/mps_trace.h +154 -0
  244. package/vendor/mbedtls/library/net_sockets.c +694 -0
  245. package/vendor/mbedtls/library/nist_kw.c +729 -0
  246. package/vendor/mbedtls/library/oid.c +1166 -0
  247. package/vendor/mbedtls/library/padlock.c +157 -0
  248. package/vendor/mbedtls/library/padlock.h +111 -0
  249. package/vendor/mbedtls/library/pem.c +554 -0
  250. package/vendor/mbedtls/library/pk.c +1602 -0
  251. package/vendor/mbedtls/library/pk_ecc.c +261 -0
  252. package/vendor/mbedtls/library/pk_internal.h +241 -0
  253. package/vendor/mbedtls/library/pk_wrap.c +1618 -0
  254. package/vendor/mbedtls/library/pk_wrap.h +138 -0
  255. package/vendor/mbedtls/library/pkcs12.c +437 -0
  256. package/vendor/mbedtls/library/pkcs5.c +500 -0
  257. package/vendor/mbedtls/library/pkcs7.c +787 -0
  258. package/vendor/mbedtls/library/pkparse.c +1392 -0
  259. package/vendor/mbedtls/library/pkwrite.c +631 -0
  260. package/vendor/mbedtls/library/pkwrite.h +121 -0
  261. package/vendor/mbedtls/library/platform.c +402 -0
  262. package/vendor/mbedtls/library/platform_util.c +258 -0
  263. package/vendor/mbedtls/library/poly1305.c +492 -0
  264. package/vendor/mbedtls/library/psa_crypto.c +9532 -0
  265. package/vendor/mbedtls/library/psa_crypto_aead.c +646 -0
  266. package/vendor/mbedtls/library/psa_crypto_aead.h +499 -0
  267. package/vendor/mbedtls/library/psa_crypto_cipher.c +747 -0
  268. package/vendor/mbedtls/library/psa_crypto_cipher.h +316 -0
  269. package/vendor/mbedtls/library/psa_crypto_client.c +22 -0
  270. package/vendor/mbedtls/library/psa_crypto_core.h +983 -0
  271. package/vendor/mbedtls/library/psa_crypto_core_common.h +52 -0
  272. package/vendor/mbedtls/library/psa_crypto_driver_wrappers.h +2896 -0
  273. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +256 -0
  274. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +31 -0
  275. package/vendor/mbedtls/library/psa_crypto_ecp.c +594 -0
  276. package/vendor/mbedtls/library/psa_crypto_ecp.h +267 -0
  277. package/vendor/mbedtls/library/psa_crypto_ffdh.c +361 -0
  278. package/vendor/mbedtls/library/psa_crypto_ffdh.h +131 -0
  279. package/vendor/mbedtls/library/psa_crypto_hash.c +470 -0
  280. package/vendor/mbedtls/library/psa_crypto_hash.h +211 -0
  281. package/vendor/mbedtls/library/psa_crypto_invasive.h +92 -0
  282. package/vendor/mbedtls/library/psa_crypto_its.h +131 -0
  283. package/vendor/mbedtls/library/psa_crypto_mac.c +505 -0
  284. package/vendor/mbedtls/library/psa_crypto_mac.h +264 -0
  285. package/vendor/mbedtls/library/psa_crypto_pake.c +571 -0
  286. package/vendor/mbedtls/library/psa_crypto_pake.h +159 -0
  287. package/vendor/mbedtls/library/psa_crypto_random.c +181 -0
  288. package/vendor/mbedtls/library/psa_crypto_random.h +72 -0
  289. package/vendor/mbedtls/library/psa_crypto_random_impl.h +200 -0
  290. package/vendor/mbedtls/library/psa_crypto_rsa.c +714 -0
  291. package/vendor/mbedtls/library/psa_crypto_rsa.h +321 -0
  292. package/vendor/mbedtls/library/psa_crypto_se.c +373 -0
  293. package/vendor/mbedtls/library/psa_crypto_se.h +192 -0
  294. package/vendor/mbedtls/library/psa_crypto_slot_management.c +1137 -0
  295. package/vendor/mbedtls/library/psa_crypto_slot_management.h +344 -0
  296. package/vendor/mbedtls/library/psa_crypto_storage.c +481 -0
  297. package/vendor/mbedtls/library/psa_crypto_storage.h +392 -0
  298. package/vendor/mbedtls/library/psa_its_file.c +254 -0
  299. package/vendor/mbedtls/library/psa_util.c +614 -0
  300. package/vendor/mbedtls/library/psa_util_internal.h +100 -0
  301. package/vendor/mbedtls/library/ripemd160.c +490 -0
  302. package/vendor/mbedtls/library/rsa.c +3121 -0
  303. package/vendor/mbedtls/library/rsa_alt_helpers.c +455 -0
  304. package/vendor/mbedtls/library/rsa_alt_helpers.h +209 -0
  305. package/vendor/mbedtls/library/rsa_internal.h +188 -0
  306. package/vendor/mbedtls/library/sha1.c +480 -0
  307. package/vendor/mbedtls/library/sha256.c +983 -0
  308. package/vendor/mbedtls/library/sha3.c +721 -0
  309. package/vendor/mbedtls/library/sha512.c +1115 -0
  310. package/vendor/mbedtls/library/ssl_cache.c +410 -0
  311. package/vendor/mbedtls/library/ssl_ciphersuites.c +2050 -0
  312. package/vendor/mbedtls/library/ssl_ciphersuites_internal.h +154 -0
  313. package/vendor/mbedtls/library/ssl_client.c +1023 -0
  314. package/vendor/mbedtls/library/ssl_client.h +22 -0
  315. package/vendor/mbedtls/library/ssl_cookie.c +384 -0
  316. package/vendor/mbedtls/library/ssl_debug_helpers.h +85 -0
  317. package/vendor/mbedtls/library/ssl_debug_helpers_generated.c +251 -0
  318. package/vendor/mbedtls/library/ssl_misc.h +3198 -0
  319. package/vendor/mbedtls/library/ssl_msg.c +6619 -0
  320. package/vendor/mbedtls/library/ssl_ticket.c +556 -0
  321. package/vendor/mbedtls/library/ssl_tls.c +10234 -0
  322. package/vendor/mbedtls/library/ssl_tls12_client.c +3688 -0
  323. package/vendor/mbedtls/library/ssl_tls12_server.c +4311 -0
  324. package/vendor/mbedtls/library/ssl_tls13_client.c +3208 -0
  325. package/vendor/mbedtls/library/ssl_tls13_generic.c +1793 -0
  326. package/vendor/mbedtls/library/ssl_tls13_invasive.h +23 -0
  327. package/vendor/mbedtls/library/ssl_tls13_keys.c +1918 -0
  328. package/vendor/mbedtls/library/ssl_tls13_keys.h +668 -0
  329. package/vendor/mbedtls/library/ssl_tls13_server.c +3624 -0
  330. package/vendor/mbedtls/library/threading.c +193 -0
  331. package/vendor/mbedtls/library/threading_internal.h +28 -0
  332. package/vendor/mbedtls/library/timing.c +152 -0
  333. package/vendor/mbedtls/library/version.c +32 -0
  334. package/vendor/mbedtls/library/version_features.c +856 -0
  335. package/vendor/mbedtls/library/x509.c +1776 -0
  336. package/vendor/mbedtls/library/x509_create.c +570 -0
  337. package/vendor/mbedtls/library/x509_crl.c +708 -0
  338. package/vendor/mbedtls/library/x509_crt.c +3311 -0
  339. package/vendor/mbedtls/library/x509_csr.c +648 -0
  340. package/vendor/mbedtls/library/x509_internal.h +101 -0
  341. package/vendor/mbedtls/library/x509write.c +174 -0
  342. package/vendor/mbedtls/library/x509write_crt.c +688 -0
  343. package/vendor/mbedtls/library/x509write_csr.c +336 -0
  344. package/vendor/quickjs-ng/CMakeLists.txt +566 -0
  345. package/vendor/quickjs-ng/LICENSE +24 -0
  346. package/vendor/quickjs-ng/README.md +24 -0
  347. package/vendor/quickjs-ng/api-test.c +1195 -0
  348. package/vendor/quickjs-ng/builtin-array-fromasync.h +119 -0
  349. package/vendor/quickjs-ng/builtin-iterator-zip-keyed.h +332 -0
  350. package/vendor/quickjs-ng/builtin-iterator-zip.h +337 -0
  351. package/vendor/quickjs-ng/cutils.h +1998 -0
  352. package/vendor/quickjs-ng/dtoa.c +1619 -0
  353. package/vendor/quickjs-ng/dtoa.h +87 -0
  354. package/vendor/quickjs-ng/gen/function_source.c +81 -0
  355. package/vendor/quickjs-ng/gen/hello.c +53 -0
  356. package/vendor/quickjs-ng/gen/hello_module.c +106 -0
  357. package/vendor/quickjs-ng/gen/repl.c +3036 -0
  358. package/vendor/quickjs-ng/gen/standalone.c +323 -0
  359. package/vendor/quickjs-ng/gen/test_fib.c +81 -0
  360. package/vendor/quickjs-ng/libregexp-opcode.h +73 -0
  361. package/vendor/quickjs-ng/libregexp.c +3474 -0
  362. package/vendor/quickjs-ng/libregexp.h +101 -0
  363. package/vendor/quickjs-ng/libunicode-table.h +5173 -0
  364. package/vendor/quickjs-ng/libunicode.c +2069 -0
  365. package/vendor/quickjs-ng/libunicode.h +172 -0
  366. package/vendor/quickjs-ng/list.h +107 -0
  367. package/vendor/quickjs-ng/lre-test.c +52 -0
  368. package/vendor/quickjs-ng/qjs.c +762 -0
  369. package/vendor/quickjs-ng/qjsc.c +673 -0
  370. package/vendor/quickjs-ng/quickjs-atom.h +280 -0
  371. package/vendor/quickjs-ng/quickjs-c-atomics.h +54 -0
  372. package/vendor/quickjs-ng/quickjs-libc.c +5037 -0
  373. package/vendor/quickjs-ng/quickjs-libc.h +87 -0
  374. package/vendor/quickjs-ng/quickjs-opcode.h +377 -0
  375. package/vendor/quickjs-ng/quickjs.c +64041 -0
  376. package/vendor/quickjs-ng/quickjs.h +1447 -0
  377. package/vendor/quickjs-ng/run-test262.c +2374 -0
  378. package/vendor/quickjs-ng/unicode_gen.c +3121 -0
  379. package/vendor/quickjs-ng/unicode_gen_def.h +310 -0
  380. package/vendor/ryu/LICENSE-Boost +23 -0
  381. package/vendor/ryu/common.h +114 -0
  382. package/vendor/ryu/d2s.c +509 -0
  383. package/vendor/ryu/d2s_full_table.h +367 -0
  384. package/vendor/ryu/d2s_intrinsics.h +357 -0
  385. package/vendor/ryu/d2s_small_table.h +186 -0
  386. package/vendor/ryu/digit_table.h +35 -0
  387. package/vendor/ryu/ryu.h +46 -0
  388. package/vendor/zlib/LICENSE +22 -0
  389. package/vendor/zlib/adler32.c +164 -0
  390. package/vendor/zlib/compress.c +75 -0
  391. package/vendor/zlib/crc32.c +1049 -0
  392. package/vendor/zlib/crc32.h +9446 -0
  393. package/vendor/zlib/deflate.c +2139 -0
  394. package/vendor/zlib/deflate.h +377 -0
  395. package/vendor/zlib/gzclose.c +23 -0
  396. package/vendor/zlib/gzguts.h +214 -0
  397. package/vendor/zlib/gzlib.c +582 -0
  398. package/vendor/zlib/gzread.c +602 -0
  399. package/vendor/zlib/gzwrite.c +631 -0
  400. package/vendor/zlib/infback.c +628 -0
  401. package/vendor/zlib/inffast.c +320 -0
  402. package/vendor/zlib/inffast.h +11 -0
  403. package/vendor/zlib/inffixed.h +94 -0
  404. package/vendor/zlib/inflate.c +1526 -0
  405. package/vendor/zlib/inflate.h +126 -0
  406. package/vendor/zlib/inftrees.c +299 -0
  407. package/vendor/zlib/inftrees.h +62 -0
  408. package/vendor/zlib/trees.c +1117 -0
  409. package/vendor/zlib/trees.h +128 -0
  410. package/vendor/zlib/uncompr.c +85 -0
  411. package/vendor/zlib/zconf.h +543 -0
  412. package/vendor/zlib/zlib.h +1938 -0
  413. package/vendor/zlib/zutil.c +299 -0
  414. package/vendor/zlib/zutil.h +254 -0
  415. package/README.md +0 -3
  416. package/index.js +0 -2
@@ -0,0 +1,4446 @@
1
+ /**
2
+ * \file mbedtls_config.h
3
+ *
4
+ * \brief Configuration options (set of defines)
5
+ *
6
+ * This set of compile-time options may be used to enable
7
+ * or disable features selectively, and reduce the global
8
+ * memory footprint.
9
+ */
10
+ /*
11
+ * Copyright The Mbed TLS Contributors
12
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
13
+ */
14
+
15
+ /**
16
+ * This is an optional version symbol that enables compatibility handling of
17
+ * config files.
18
+ *
19
+ * It is equal to the #MBEDTLS_VERSION_NUMBER of the Mbed TLS version that
20
+ * introduced the config format we want to be compatible with.
21
+ */
22
+ //#define MBEDTLS_CONFIG_VERSION 0x03000000
23
+
24
+ /**
25
+ * \name SECTION: System support
26
+ *
27
+ * This section sets system specific settings.
28
+ * \{
29
+ */
30
+
31
+ /**
32
+ * \def MBEDTLS_HAVE_ASM
33
+ *
34
+ * The compiler has support for asm().
35
+ *
36
+ * Requires support for asm() in compiler.
37
+ *
38
+ * Used in:
39
+ * library/aesni.h
40
+ * library/aria.c
41
+ * library/bn_mul.h
42
+ * library/constant_time.c
43
+ * library/padlock.h
44
+ *
45
+ * Required by:
46
+ * MBEDTLS_AESCE_C
47
+ * MBEDTLS_AESNI_C (on some platforms)
48
+ * MBEDTLS_PADLOCK_C
49
+ *
50
+ * Comment to disable the use of assembly code.
51
+ */
52
+ #define MBEDTLS_HAVE_ASM
53
+
54
+ /**
55
+ * \def MBEDTLS_NO_UDBL_DIVISION
56
+ *
57
+ * The platform lacks support for double-width integer division (64-bit
58
+ * division on a 32-bit platform, 128-bit division on a 64-bit platform).
59
+ *
60
+ * Used in:
61
+ * include/mbedtls/bignum.h
62
+ * library/bignum.c
63
+ *
64
+ * The bignum code uses double-width division to speed up some operations.
65
+ * Double-width division is often implemented in software that needs to
66
+ * be linked with the program. The presence of a double-width integer
67
+ * type is usually detected automatically through preprocessor macros,
68
+ * but the automatic detection cannot know whether the code needs to
69
+ * and can be linked with an implementation of division for that type.
70
+ * By default division is assumed to be usable if the type is present.
71
+ * Uncomment this option to prevent the use of double-width division.
72
+ *
73
+ * Note that division for the native integer type is always required.
74
+ * Furthermore, a 64-bit type is always required even on a 32-bit
75
+ * platform, but it need not support multiplication or division. In some
76
+ * cases it is also desirable to disable some double-width operations. For
77
+ * example, if double-width division is implemented in software, disabling
78
+ * it can reduce code size in some embedded targets.
79
+ */
80
+ //#define MBEDTLS_NO_UDBL_DIVISION
81
+
82
+ /**
83
+ * \def MBEDTLS_NO_64BIT_MULTIPLICATION
84
+ *
85
+ * The platform lacks support for 32x32 -> 64-bit multiplication.
86
+ *
87
+ * Used in:
88
+ * library/poly1305.c
89
+ *
90
+ * Some parts of the library may use multiplication of two unsigned 32-bit
91
+ * operands with a 64-bit result in order to speed up computations. On some
92
+ * platforms, this is not available in hardware and has to be implemented in
93
+ * software, usually in a library provided by the toolchain.
94
+ *
95
+ * Sometimes it is not desirable to have to link to that library. This option
96
+ * removes the dependency of that library on platforms that lack a hardware
97
+ * 64-bit multiplier by embedding a software implementation in Mbed TLS.
98
+ *
99
+ * Note that depending on the compiler, this may decrease performance compared
100
+ * to using the library function provided by the toolchain.
101
+ */
102
+ //#define MBEDTLS_NO_64BIT_MULTIPLICATION
103
+
104
+ /**
105
+ * \def MBEDTLS_HAVE_SSE2
106
+ *
107
+ * CPU supports SSE2 instruction set.
108
+ *
109
+ * Uncomment if the CPU supports SSE2 (IA-32 specific).
110
+ */
111
+ //#define MBEDTLS_HAVE_SSE2
112
+
113
+ /**
114
+ * \def MBEDTLS_HAVE_TIME
115
+ *
116
+ * System has time.h and time().
117
+ * The time does not need to be correct, only time differences are used,
118
+ * by contrast with MBEDTLS_HAVE_TIME_DATE
119
+ *
120
+ * Defining MBEDTLS_HAVE_TIME allows you to specify MBEDTLS_PLATFORM_TIME_ALT,
121
+ * MBEDTLS_PLATFORM_TIME_MACRO, MBEDTLS_PLATFORM_TIME_TYPE_MACRO and
122
+ * MBEDTLS_PLATFORM_STD_TIME.
123
+ *
124
+ * Comment if your system does not support time functions.
125
+ *
126
+ * \note If MBEDTLS_TIMING_C is set - to enable the semi-portable timing
127
+ * interface - timing.c will include time.h on suitable platforms
128
+ * regardless of the setting of MBEDTLS_HAVE_TIME, unless
129
+ * MBEDTLS_TIMING_ALT is used. See timing.c for more information.
130
+ */
131
+ #define MBEDTLS_HAVE_TIME
132
+
133
+ /**
134
+ * \def MBEDTLS_HAVE_TIME_DATE
135
+ *
136
+ * System has time.h, time(), and an implementation for
137
+ * mbedtls_platform_gmtime_r() (see below).
138
+ * The time needs to be correct (not necessarily very accurate, but at least
139
+ * the date should be correct). This is used to verify the validity period of
140
+ * X.509 certificates.
141
+ *
142
+ * Comment if your system does not have a correct clock.
143
+ *
144
+ * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that
145
+ * behaves similarly to the gmtime_r() function from the C standard. Refer to
146
+ * the documentation for mbedtls_platform_gmtime_r() for more information.
147
+ *
148
+ * \note It is possible to configure an implementation for
149
+ * mbedtls_platform_gmtime_r() at compile-time by using the macro
150
+ * MBEDTLS_PLATFORM_GMTIME_R_ALT.
151
+ */
152
+ #define MBEDTLS_HAVE_TIME_DATE
153
+
154
+ /**
155
+ * \def MBEDTLS_PLATFORM_MEMORY
156
+ *
157
+ * Enable the memory allocation layer.
158
+ *
159
+ * By default Mbed TLS uses the system-provided calloc() and free().
160
+ * This allows different allocators (self-implemented or provided) to be
161
+ * provided to the platform abstraction layer.
162
+ *
163
+ * Enabling #MBEDTLS_PLATFORM_MEMORY without the
164
+ * MBEDTLS_PLATFORM_{FREE,CALLOC}_MACROs will provide
165
+ * "mbedtls_platform_set_calloc_free()" allowing you to set an alternative calloc() and
166
+ * free() function pointer at runtime.
167
+ *
168
+ * Enabling #MBEDTLS_PLATFORM_MEMORY and specifying
169
+ * MBEDTLS_PLATFORM_{CALLOC,FREE}_MACROs will allow you to specify the
170
+ * alternate function at compile time.
171
+ *
172
+ * An overview of how the value of mbedtls_calloc is determined:
173
+ *
174
+ * - if !MBEDTLS_PLATFORM_MEMORY
175
+ * - mbedtls_calloc = calloc
176
+ * - if MBEDTLS_PLATFORM_MEMORY
177
+ * - if (MBEDTLS_PLATFORM_CALLOC_MACRO && MBEDTLS_PLATFORM_FREE_MACRO):
178
+ * - mbedtls_calloc = MBEDTLS_PLATFORM_CALLOC_MACRO
179
+ * - if !(MBEDTLS_PLATFORM_CALLOC_MACRO && MBEDTLS_PLATFORM_FREE_MACRO):
180
+ * - Dynamic setup via mbedtls_platform_set_calloc_free is now possible with a default value MBEDTLS_PLATFORM_STD_CALLOC.
181
+ * - How is MBEDTLS_PLATFORM_STD_CALLOC handled?
182
+ * - if MBEDTLS_PLATFORM_NO_STD_FUNCTIONS:
183
+ * - MBEDTLS_PLATFORM_STD_CALLOC is not set to anything;
184
+ * - MBEDTLS_PLATFORM_STD_MEM_HDR can be included if present;
185
+ * - if !MBEDTLS_PLATFORM_NO_STD_FUNCTIONS:
186
+ * - if MBEDTLS_PLATFORM_STD_CALLOC is present:
187
+ * - User-defined MBEDTLS_PLATFORM_STD_CALLOC is respected;
188
+ * - if !MBEDTLS_PLATFORM_STD_CALLOC:
189
+ * - MBEDTLS_PLATFORM_STD_CALLOC = calloc
190
+ *
191
+ * - At this point the presence of MBEDTLS_PLATFORM_STD_CALLOC is checked.
192
+ * - if !MBEDTLS_PLATFORM_STD_CALLOC
193
+ * - MBEDTLS_PLATFORM_STD_CALLOC = uninitialized_calloc
194
+ *
195
+ * - mbedtls_calloc = MBEDTLS_PLATFORM_STD_CALLOC.
196
+ *
197
+ * Defining MBEDTLS_PLATFORM_CALLOC_MACRO and #MBEDTLS_PLATFORM_STD_CALLOC at the same time is not possible.
198
+ * MBEDTLS_PLATFORM_CALLOC_MACRO and MBEDTLS_PLATFORM_FREE_MACRO must both be defined or undefined at the same time.
199
+ * #MBEDTLS_PLATFORM_STD_CALLOC and #MBEDTLS_PLATFORM_STD_FREE do not have to be defined at the same time, as, if they are used,
200
+ * dynamic setup of these functions is possible. See the tree above to see how are they handled in all cases.
201
+ * An uninitialized #MBEDTLS_PLATFORM_STD_CALLOC always fails, returning a null pointer.
202
+ * An uninitialized #MBEDTLS_PLATFORM_STD_FREE does not do anything.
203
+ *
204
+ * Requires: MBEDTLS_PLATFORM_C
205
+ *
206
+ * Enable this layer to allow use of alternative memory allocators.
207
+ */
208
+ //#define MBEDTLS_PLATFORM_MEMORY
209
+
210
+ /**
211
+ * \def MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
212
+ *
213
+ * Do not assign standard functions in the platform layer (e.g. calloc() to
214
+ * MBEDTLS_PLATFORM_STD_CALLOC and printf() to MBEDTLS_PLATFORM_STD_PRINTF)
215
+ *
216
+ * This makes sure there are no linking errors on platforms that do not support
217
+ * these functions. You will HAVE to provide alternatives, either at runtime
218
+ * via the platform_set_xxx() functions or at compile time by setting
219
+ * the MBEDTLS_PLATFORM_STD_XXX defines, or enabling a
220
+ * MBEDTLS_PLATFORM_XXX_MACRO.
221
+ *
222
+ * Requires: MBEDTLS_PLATFORM_C
223
+ *
224
+ * Uncomment to prevent default assignment of standard functions in the
225
+ * platform layer.
226
+ */
227
+ //#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
228
+
229
+ /**
230
+ * \def MBEDTLS_PLATFORM_EXIT_ALT
231
+ *
232
+ * MBEDTLS_PLATFORM_XXX_ALT: Uncomment a macro to let Mbed TLS support the
233
+ * function in the platform abstraction layer.
234
+ *
235
+ * Example: In case you uncomment MBEDTLS_PLATFORM_PRINTF_ALT, Mbed TLS will
236
+ * provide a function "mbedtls_platform_set_printf()" that allows you to set an
237
+ * alternative printf function pointer.
238
+ *
239
+ * All these define require MBEDTLS_PLATFORM_C to be defined!
240
+ *
241
+ * \note MBEDTLS_PLATFORM_SNPRINTF_ALT is required on Windows;
242
+ * it will be enabled automatically by check_config.h
243
+ *
244
+ * \warning MBEDTLS_PLATFORM_XXX_ALT cannot be defined at the same time as
245
+ * MBEDTLS_PLATFORM_XXX_MACRO!
246
+ *
247
+ * Requires: MBEDTLS_PLATFORM_TIME_ALT requires MBEDTLS_HAVE_TIME
248
+ *
249
+ * Uncomment a macro to enable alternate implementation of specific base
250
+ * platform function
251
+ */
252
+ //#define MBEDTLS_PLATFORM_SETBUF_ALT
253
+ //#define MBEDTLS_PLATFORM_EXIT_ALT
254
+ //#define MBEDTLS_PLATFORM_TIME_ALT
255
+ //#define MBEDTLS_PLATFORM_FPRINTF_ALT
256
+ //#define MBEDTLS_PLATFORM_PRINTF_ALT
257
+ //#define MBEDTLS_PLATFORM_SNPRINTF_ALT
258
+ //#define MBEDTLS_PLATFORM_VSNPRINTF_ALT
259
+ //#define MBEDTLS_PLATFORM_NV_SEED_ALT
260
+ //#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
261
+ //#define MBEDTLS_PLATFORM_MS_TIME_ALT
262
+
263
+ /**
264
+ * Uncomment the macro to let Mbed TLS use your alternate implementation of
265
+ * mbedtls_platform_gmtime_r(). This replaces the default implementation in
266
+ * platform_util.c.
267
+ *
268
+ * gmtime() is not a thread-safe function as defined in the C standard. The
269
+ * library will try to use safer implementations of this function, such as
270
+ * gmtime_r() when available. However, if Mbed TLS cannot identify the target
271
+ * system, the implementation of mbedtls_platform_gmtime_r() will default to
272
+ * using the standard gmtime(). In this case, calls from the library to
273
+ * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex
274
+ * if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the
275
+ * library are also guarded with this mutex to avoid race conditions. However,
276
+ * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will
277
+ * unconditionally use the implementation for mbedtls_platform_gmtime_r()
278
+ * supplied at compile time.
279
+ */
280
+ //#define MBEDTLS_PLATFORM_GMTIME_R_ALT
281
+
282
+ /**
283
+ * Uncomment the macro to let Mbed TLS use your alternate implementation of
284
+ * mbedtls_platform_zeroize(), to wipe sensitive data in memory. This replaces
285
+ * the default implementation in platform_util.c.
286
+ *
287
+ * By default, the library uses a system function such as memset_s()
288
+ * (optional feature of C11), explicit_bzero() (BSD and compatible), or
289
+ * SecureZeroMemory (Windows). If no such function is detected, the library
290
+ * falls back to a plain C implementation. Compilers are technically
291
+ * permitted to optimize this implementation out, meaning that the memory is
292
+ * not actually wiped. The library tries to prevent that, but the C language
293
+ * makes it impossible to guarantee that the memory will always be wiped.
294
+ *
295
+ * If your platform provides a guaranteed method to wipe memory which
296
+ * `platform_util.c` does not detect, define this macro to the name of
297
+ * a function that takes two arguments, a `void *` pointer and a length,
298
+ * and wipes that many bytes starting at the specified address. For example,
299
+ * if your platform has explicit_bzero() but `platform_util.c` does not
300
+ * detect its presence, define `MBEDTLS_PLATFORM_ZEROIZE_ALT` to be
301
+ * `explicit_bzero` to use that function as mbedtls_platform_zeroize().
302
+ */
303
+ //#define MBEDTLS_PLATFORM_ZEROIZE_ALT
304
+
305
+ /**
306
+ * \def MBEDTLS_DEPRECATED_WARNING
307
+ *
308
+ * Mark deprecated functions and features so that they generate a warning if
309
+ * used. Functionality deprecated in one version will usually be removed in the
310
+ * next version. You can enable this to help you prepare the transition to a
311
+ * new major version by making sure your code is not using this functionality.
312
+ *
313
+ * This only works with GCC and Clang. With other compilers, you may want to
314
+ * use MBEDTLS_DEPRECATED_REMOVED
315
+ *
316
+ * Uncomment to get warnings on using deprecated functions and features.
317
+ */
318
+ //#define MBEDTLS_DEPRECATED_WARNING
319
+
320
+ /**
321
+ * \def MBEDTLS_DEPRECATED_REMOVED
322
+ *
323
+ * Remove deprecated functions and features so that they generate an error if
324
+ * used. Functionality deprecated in one version will usually be removed in the
325
+ * next version. You can enable this to help you prepare the transition to a
326
+ * new major version by making sure your code is not using this functionality.
327
+ *
328
+ * Uncomment to get errors on using deprecated functions and features.
329
+ */
330
+ //#define MBEDTLS_DEPRECATED_REMOVED
331
+
332
+ /** \} name SECTION: System support */
333
+
334
+ /**
335
+ * \name SECTION: Mbed TLS feature support
336
+ *
337
+ * This section sets support for features that are or are not needed
338
+ * within the modules that are enabled.
339
+ * \{
340
+ */
341
+
342
+ /**
343
+ * \def MBEDTLS_TIMING_ALT
344
+ *
345
+ * Uncomment to provide your own alternate implementation for
346
+ * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay()
347
+ *
348
+ * Only works if you have MBEDTLS_TIMING_C enabled.
349
+ *
350
+ * You will need to provide a header "timing_alt.h" and an implementation at
351
+ * compile time.
352
+ */
353
+ //#define MBEDTLS_TIMING_ALT
354
+
355
+ /**
356
+ * \def MBEDTLS_AES_ALT
357
+ *
358
+ * MBEDTLS__MODULE_NAME__ALT: Uncomment a macro to let Mbed TLS use your
359
+ * alternate core implementation of a symmetric crypto, an arithmetic or hash
360
+ * module (e.g. platform specific assembly optimized implementations). Keep
361
+ * in mind that the function prototypes should remain the same.
362
+ *
363
+ * This replaces the whole module. If you only want to replace one of the
364
+ * functions, use one of the MBEDTLS__FUNCTION_NAME__ALT flags.
365
+ *
366
+ * Example: In case you uncomment MBEDTLS_AES_ALT, Mbed TLS will no longer
367
+ * provide the "struct mbedtls_aes_context" definition and omit the base
368
+ * function declarations and implementations. "aes_alt.h" will be included from
369
+ * "aes.h" to include the new function definitions.
370
+ *
371
+ * Uncomment a macro to enable alternate implementation of the corresponding
372
+ * module.
373
+ *
374
+ * \warning MD5, DES and SHA-1 are considered weak and their
375
+ * use constitutes a security risk. If possible, we recommend
376
+ * avoiding dependencies on them, and considering stronger message
377
+ * digests and ciphers instead.
378
+ *
379
+ */
380
+ //#define MBEDTLS_AES_ALT
381
+ //#define MBEDTLS_ARIA_ALT
382
+ //#define MBEDTLS_CAMELLIA_ALT
383
+ //#define MBEDTLS_CCM_ALT
384
+ //#define MBEDTLS_CHACHA20_ALT
385
+ //#define MBEDTLS_CHACHAPOLY_ALT
386
+ //#define MBEDTLS_CMAC_ALT
387
+ //#define MBEDTLS_DES_ALT
388
+ //#define MBEDTLS_DHM_ALT
389
+ //#define MBEDTLS_ECJPAKE_ALT
390
+ //#define MBEDTLS_GCM_ALT
391
+ //#define MBEDTLS_NIST_KW_ALT
392
+ //#define MBEDTLS_MD5_ALT
393
+ //#define MBEDTLS_POLY1305_ALT
394
+ //#define MBEDTLS_RIPEMD160_ALT
395
+ //#define MBEDTLS_RSA_ALT
396
+ //#define MBEDTLS_SHA1_ALT
397
+ //#define MBEDTLS_SHA256_ALT
398
+ //#define MBEDTLS_SHA512_ALT
399
+
400
+ /*
401
+ * When replacing the elliptic curve module, please consider, that it is
402
+ * implemented with two .c files:
403
+ * - ecp.c
404
+ * - ecp_curves.c
405
+ * You can replace them very much like all the other MBEDTLS__MODULE_NAME__ALT
406
+ * macros as described above. The only difference is that you have to make sure
407
+ * that you provide functionality for both .c files.
408
+ */
409
+ //#define MBEDTLS_ECP_ALT
410
+
411
+ /**
412
+ * \def MBEDTLS_SHA256_PROCESS_ALT
413
+ *
414
+ * MBEDTLS__FUNCTION_NAME__ALT: Uncomment a macro to let Mbed TLS use you
415
+ * alternate core implementation of symmetric crypto or hash function. Keep in
416
+ * mind that function prototypes should remain the same.
417
+ *
418
+ * This replaces only one function. The header file from Mbed TLS is still
419
+ * used, in contrast to the MBEDTLS__MODULE_NAME__ALT flags.
420
+ *
421
+ * Example: In case you uncomment MBEDTLS_SHA256_PROCESS_ALT, Mbed TLS will
422
+ * no longer provide the mbedtls_sha1_process() function, but it will still provide
423
+ * the other function (using your mbedtls_sha1_process() function) and the definition
424
+ * of mbedtls_sha1_context, so your implementation of mbedtls_sha1_process must be compatible
425
+ * with this definition.
426
+ *
427
+ * \note If you use the AES_xxx_ALT macros, then it is recommended to also set
428
+ * MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES
429
+ * tables.
430
+ *
431
+ * Uncomment a macro to enable alternate implementation of the corresponding
432
+ * function.
433
+ *
434
+ * \warning MD5, DES and SHA-1 are considered weak and their use
435
+ * constitutes a security risk. If possible, we recommend avoiding
436
+ * dependencies on them, and considering stronger message digests
437
+ * and ciphers instead.
438
+ *
439
+ * \warning If both MBEDTLS_ECDSA_SIGN_ALT and MBEDTLS_ECDSA_DETERMINISTIC are
440
+ * enabled, then the deterministic ECDH signature functions pass the
441
+ * the static HMAC-DRBG as RNG to mbedtls_ecdsa_sign(). Therefore
442
+ * alternative implementations should use the RNG only for generating
443
+ * the ephemeral key and nothing else. If this is not possible, then
444
+ * MBEDTLS_ECDSA_DETERMINISTIC should be disabled and an alternative
445
+ * implementation should be provided for mbedtls_ecdsa_sign_det_ext().
446
+ *
447
+ */
448
+ //#define MBEDTLS_MD5_PROCESS_ALT
449
+ //#define MBEDTLS_RIPEMD160_PROCESS_ALT
450
+ //#define MBEDTLS_SHA1_PROCESS_ALT
451
+ //#define MBEDTLS_SHA256_PROCESS_ALT
452
+ //#define MBEDTLS_SHA512_PROCESS_ALT
453
+ //#define MBEDTLS_DES_SETKEY_ALT
454
+ //#define MBEDTLS_DES_CRYPT_ECB_ALT
455
+ //#define MBEDTLS_DES3_CRYPT_ECB_ALT
456
+ //#define MBEDTLS_AES_SETKEY_ENC_ALT
457
+ //#define MBEDTLS_AES_SETKEY_DEC_ALT
458
+ //#define MBEDTLS_AES_ENCRYPT_ALT
459
+ //#define MBEDTLS_AES_DECRYPT_ALT
460
+ //#define MBEDTLS_ECDH_GEN_PUBLIC_ALT
461
+ //#define MBEDTLS_ECDH_COMPUTE_SHARED_ALT
462
+ //#define MBEDTLS_ECDSA_VERIFY_ALT
463
+ //#define MBEDTLS_ECDSA_SIGN_ALT
464
+ //#define MBEDTLS_ECDSA_GENKEY_ALT
465
+
466
+ /**
467
+ * \def MBEDTLS_ECP_INTERNAL_ALT
468
+ *
469
+ * Expose a part of the internal interface of the Elliptic Curve Point module.
470
+ *
471
+ * MBEDTLS_ECP__FUNCTION_NAME__ALT: Uncomment a macro to let Mbed TLS use your
472
+ * alternative core implementation of elliptic curve arithmetic. Keep in mind
473
+ * that function prototypes should remain the same.
474
+ *
475
+ * This partially replaces one function. The header file from Mbed TLS is still
476
+ * used, in contrast to the MBEDTLS_ECP_ALT flag. The original implementation
477
+ * is still present and it is used for group structures not supported by the
478
+ * alternative.
479
+ *
480
+ * The original implementation can in addition be removed by setting the
481
+ * MBEDTLS_ECP_NO_FALLBACK option, in which case any function for which the
482
+ * corresponding MBEDTLS_ECP__FUNCTION_NAME__ALT macro is defined will not be
483
+ * able to fallback to curves not supported by the alternative implementation.
484
+ *
485
+ * Any of these options become available by defining MBEDTLS_ECP_INTERNAL_ALT
486
+ * and implementing the following functions:
487
+ * unsigned char mbedtls_internal_ecp_grp_capable(
488
+ * const mbedtls_ecp_group *grp )
489
+ * int mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp )
490
+ * void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp )
491
+ * The mbedtls_internal_ecp_grp_capable function should return 1 if the
492
+ * replacement functions implement arithmetic for the given group and 0
493
+ * otherwise.
494
+ * The functions mbedtls_internal_ecp_init and mbedtls_internal_ecp_free are
495
+ * called before and after each point operation and provide an opportunity to
496
+ * implement optimized set up and tear down instructions.
497
+ *
498
+ * Example: In case you set MBEDTLS_ECP_INTERNAL_ALT and
499
+ * MBEDTLS_ECP_DOUBLE_JAC_ALT, Mbed TLS will still provide the ecp_double_jac()
500
+ * function, but will use your mbedtls_internal_ecp_double_jac() if the group
501
+ * for the operation is supported by your implementation (i.e. your
502
+ * mbedtls_internal_ecp_grp_capable() function returns 1 for this group). If the
503
+ * group is not supported by your implementation, then the original Mbed TLS
504
+ * implementation of ecp_double_jac() is used instead, unless this fallback
505
+ * behaviour is disabled by setting MBEDTLS_ECP_NO_FALLBACK (in which case
506
+ * ecp_double_jac() will return MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE).
507
+ *
508
+ * The function prototypes and the definition of mbedtls_ecp_group and
509
+ * mbedtls_ecp_point will not change based on MBEDTLS_ECP_INTERNAL_ALT, so your
510
+ * implementation of mbedtls_internal_ecp__function_name__ must be compatible
511
+ * with their definitions.
512
+ *
513
+ * Uncomment a macro to enable alternate implementation of the corresponding
514
+ * function.
515
+ */
516
+ /* Required for all the functions in this section */
517
+ //#define MBEDTLS_ECP_INTERNAL_ALT
518
+ /* Turn off software fallback for curves not supported in hardware */
519
+ //#define MBEDTLS_ECP_NO_FALLBACK
520
+ /* Support for Weierstrass curves with Jacobi representation */
521
+ //#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT
522
+ //#define MBEDTLS_ECP_ADD_MIXED_ALT
523
+ //#define MBEDTLS_ECP_DOUBLE_JAC_ALT
524
+ //#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
525
+ //#define MBEDTLS_ECP_NORMALIZE_JAC_ALT
526
+ /* Support for curves with Montgomery arithmetic */
527
+ //#define MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT
528
+ //#define MBEDTLS_ECP_RANDOMIZE_MXZ_ALT
529
+ //#define MBEDTLS_ECP_NORMALIZE_MXZ_ALT
530
+
531
+ /**
532
+ * \def MBEDTLS_ENTROPY_HARDWARE_ALT
533
+ *
534
+ * Uncomment this macro to let Mbed TLS use your own implementation of a
535
+ * hardware entropy collector.
536
+ *
537
+ * Your function must be called \c mbedtls_hardware_poll(), have the same
538
+ * prototype as declared in library/entropy_poll.h, and accept NULL as first
539
+ * argument.
540
+ *
541
+ * Uncomment to use your own hardware entropy collector.
542
+ */
543
+ //#define MBEDTLS_ENTROPY_HARDWARE_ALT
544
+
545
+ /**
546
+ * \def MBEDTLS_AES_ROM_TABLES
547
+ *
548
+ * Use precomputed AES tables stored in ROM.
549
+ *
550
+ * Uncomment this macro to use precomputed AES tables stored in ROM.
551
+ * Comment this macro to generate AES tables in RAM at runtime.
552
+ *
553
+ * Tradeoff: Using precomputed ROM tables reduces RAM usage by ~8kb
554
+ * (or ~2kb if \c MBEDTLS_AES_FEWER_TABLES is used) and reduces the
555
+ * initialization time before the first AES operation can be performed.
556
+ * It comes at the cost of additional ~8kb ROM use (resp. ~2kb if \c
557
+ * MBEDTLS_AES_FEWER_TABLES below is used), and potentially degraded
558
+ * performance if ROM access is slower than RAM access.
559
+ *
560
+ * This option is independent of \c MBEDTLS_AES_FEWER_TABLES.
561
+ */
562
+ //#define MBEDTLS_AES_ROM_TABLES
563
+
564
+ /**
565
+ * \def MBEDTLS_AES_FEWER_TABLES
566
+ *
567
+ * Use less ROM/RAM for AES tables.
568
+ *
569
+ * Uncommenting this macro omits 75% of the AES tables from
570
+ * ROM / RAM (depending on the value of \c MBEDTLS_AES_ROM_TABLES)
571
+ * by computing their values on the fly during operations
572
+ * (the tables are entry-wise rotations of one another).
573
+ *
574
+ * Tradeoff: Uncommenting this reduces the RAM / ROM footprint
575
+ * by ~6kb but at the cost of more arithmetic operations during
576
+ * runtime. Specifically, one has to compare 4 accesses within
577
+ * different tables to 4 accesses with additional arithmetic
578
+ * operations within the same table. The performance gain/loss
579
+ * depends on the system and memory details.
580
+ *
581
+ * This option is independent of \c MBEDTLS_AES_ROM_TABLES.
582
+ */
583
+ //#define MBEDTLS_AES_FEWER_TABLES
584
+
585
+ /**
586
+ * \def MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
587
+ *
588
+ * Use only 128-bit keys in AES operations to save ROM.
589
+ *
590
+ * Uncomment this macro to remove support for AES operations that use 192-
591
+ * or 256-bit keys.
592
+ *
593
+ * Uncommenting this macro reduces the size of AES code by ~300 bytes
594
+ * on v8-M/Thumb2.
595
+ *
596
+ * Module: library/aes.c
597
+ *
598
+ * Requires: MBEDTLS_AES_C
599
+ */
600
+ //#define MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
601
+
602
+ /*
603
+ * Disable plain C implementation for AES.
604
+ *
605
+ * When the plain C implementation is enabled, and an implementation using a
606
+ * special CPU feature (such as MBEDTLS_AESCE_C) is also enabled, runtime
607
+ * detection will be used to select between them.
608
+ *
609
+ * If only one implementation is present, runtime detection will not be used.
610
+ * This configuration will crash at runtime if running on a CPU without the
611
+ * necessary features. It will not build unless at least one of MBEDTLS_AESCE_C
612
+ * and/or MBEDTLS_AESNI_C is enabled & present in the build.
613
+ */
614
+ //#define MBEDTLS_AES_USE_HARDWARE_ONLY
615
+
616
+ /**
617
+ * \def MBEDTLS_CAMELLIA_SMALL_MEMORY
618
+ *
619
+ * Use less ROM for the Camellia implementation (saves about 768 bytes).
620
+ *
621
+ * Uncomment this macro to use less memory for Camellia.
622
+ */
623
+ //#define MBEDTLS_CAMELLIA_SMALL_MEMORY
624
+
625
+ /**
626
+ * \def MBEDTLS_CHECK_RETURN_WARNING
627
+ *
628
+ * If this macro is defined, emit a compile-time warning if application code
629
+ * calls a function without checking its return value, but the return value
630
+ * should generally be checked in portable applications.
631
+ *
632
+ * This is only supported on platforms where #MBEDTLS_CHECK_RETURN is
633
+ * implemented. Otherwise this option has no effect.
634
+ *
635
+ * Uncomment to get warnings on using fallible functions without checking
636
+ * their return value.
637
+ *
638
+ * \note This feature is a work in progress.
639
+ * Warnings will be added to more functions in the future.
640
+ *
641
+ * \note A few functions are considered critical, and ignoring the return
642
+ * value of these functions will trigger a warning even if this
643
+ * macro is not defined. To completely disable return value check
644
+ * warnings, define #MBEDTLS_CHECK_RETURN with an empty expansion.
645
+ */
646
+ //#define MBEDTLS_CHECK_RETURN_WARNING
647
+
648
+ /**
649
+ * \def MBEDTLS_CIPHER_MODE_CBC
650
+ *
651
+ * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
652
+ */
653
+ #define MBEDTLS_CIPHER_MODE_CBC
654
+
655
+ /**
656
+ * \def MBEDTLS_CIPHER_MODE_CFB
657
+ *
658
+ * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
659
+ */
660
+ #define MBEDTLS_CIPHER_MODE_CFB
661
+
662
+ /**
663
+ * \def MBEDTLS_CIPHER_MODE_CTR
664
+ *
665
+ * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
666
+ */
667
+ #define MBEDTLS_CIPHER_MODE_CTR
668
+
669
+ /**
670
+ * \def MBEDTLS_CIPHER_MODE_OFB
671
+ *
672
+ * Enable Output Feedback mode (OFB) for symmetric ciphers.
673
+ */
674
+ #define MBEDTLS_CIPHER_MODE_OFB
675
+
676
+ /**
677
+ * \def MBEDTLS_CIPHER_MODE_XTS
678
+ *
679
+ * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES.
680
+ */
681
+ #define MBEDTLS_CIPHER_MODE_XTS
682
+
683
+ /**
684
+ * \def MBEDTLS_CIPHER_NULL_CIPHER
685
+ *
686
+ * Enable NULL cipher.
687
+ * Warning: Only do so when you know what you are doing. This allows for
688
+ * encryption or channels without any security!
689
+ *
690
+ * To enable the following ciphersuites:
691
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA
692
+ * MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA
693
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA
694
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA
695
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384
696
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256
697
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA
698
+ * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384
699
+ * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256
700
+ * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA
701
+ * MBEDTLS_TLS_RSA_WITH_NULL_SHA256
702
+ * MBEDTLS_TLS_RSA_WITH_NULL_SHA
703
+ * MBEDTLS_TLS_RSA_WITH_NULL_MD5
704
+ * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384
705
+ * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256
706
+ * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA
707
+ * MBEDTLS_TLS_PSK_WITH_NULL_SHA384
708
+ * MBEDTLS_TLS_PSK_WITH_NULL_SHA256
709
+ * MBEDTLS_TLS_PSK_WITH_NULL_SHA
710
+ *
711
+ * Uncomment this macro to enable the NULL cipher and ciphersuites
712
+ */
713
+ //#define MBEDTLS_CIPHER_NULL_CIPHER
714
+
715
+ /**
716
+ * \def MBEDTLS_CIPHER_PADDING_PKCS7
717
+ *
718
+ * MBEDTLS_CIPHER_PADDING_XXX: Uncomment or comment macros to add support for
719
+ * specific padding modes in the cipher layer with cipher modes that support
720
+ * padding (e.g. CBC)
721
+ *
722
+ * If you disable all padding modes, only full blocks can be used with CBC.
723
+ *
724
+ * Enable padding modes in the cipher layer.
725
+ */
726
+ #define MBEDTLS_CIPHER_PADDING_PKCS7
727
+ #define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS
728
+ #define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN
729
+ #define MBEDTLS_CIPHER_PADDING_ZEROS
730
+
731
+ /** \def MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
732
+ *
733
+ * Uncomment this macro to use a 128-bit key in the CTR_DRBG module.
734
+ * Without this, CTR_DRBG uses a 256-bit key
735
+ * unless \c MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH is set.
736
+ */
737
+ //#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
738
+
739
+ /**
740
+ * Enable the verified implementations of ECDH primitives from Project Everest
741
+ * (currently only Curve25519). This feature changes the layout of ECDH
742
+ * contexts and therefore is a compatibility break for applications that access
743
+ * fields of a mbedtls_ecdh_context structure directly. See also
744
+ * MBEDTLS_ECDH_LEGACY_CONTEXT in include/mbedtls/ecdh.h.
745
+ *
746
+ * The Everest code is provided under the Apache 2.0 license only; therefore enabling this
747
+ * option is not compatible with taking the library under the GPL v2.0-or-later license.
748
+ */
749
+ //#define MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED
750
+
751
+ /**
752
+ * \def MBEDTLS_ECP_DP_SECP192R1_ENABLED
753
+ *
754
+ * MBEDTLS_ECP_XXXX_ENABLED: Enables specific curves within the Elliptic Curve
755
+ * module. By default all supported curves are enabled.
756
+ *
757
+ * Comment macros to disable the curve and functions for it
758
+ */
759
+ /* Short Weierstrass curves (supporting ECP, ECDH, ECDSA) */
760
+ #define MBEDTLS_ECP_DP_SECP192R1_ENABLED
761
+ #define MBEDTLS_ECP_DP_SECP224R1_ENABLED
762
+ #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
763
+ #define MBEDTLS_ECP_DP_SECP384R1_ENABLED
764
+ #define MBEDTLS_ECP_DP_SECP521R1_ENABLED
765
+ #define MBEDTLS_ECP_DP_SECP192K1_ENABLED
766
+ #define MBEDTLS_ECP_DP_SECP224K1_ENABLED
767
+ #define MBEDTLS_ECP_DP_SECP256K1_ENABLED
768
+ #define MBEDTLS_ECP_DP_BP256R1_ENABLED
769
+ #define MBEDTLS_ECP_DP_BP384R1_ENABLED
770
+ #define MBEDTLS_ECP_DP_BP512R1_ENABLED
771
+ /* Montgomery curves (supporting ECP) */
772
+ #define MBEDTLS_ECP_DP_CURVE25519_ENABLED
773
+ #define MBEDTLS_ECP_DP_CURVE448_ENABLED
774
+
775
+ /**
776
+ * \def MBEDTLS_ECP_NIST_OPTIM
777
+ *
778
+ * Enable specific 'modulo p' routines for each NIST prime.
779
+ * Depending on the prime and architecture, makes operations 4 to 8 times
780
+ * faster on the corresponding curve.
781
+ *
782
+ * Comment this macro to disable NIST curves optimisation.
783
+ */
784
+ #define MBEDTLS_ECP_NIST_OPTIM
785
+
786
+ /**
787
+ * \def MBEDTLS_ECP_RESTARTABLE
788
+ *
789
+ * Enable "non-blocking" ECC operations that can return early and be resumed.
790
+ *
791
+ * This allows various functions to pause by returning
792
+ * #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL module,
793
+ * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) and then be called later again in
794
+ * order to further progress and eventually complete their operation. This is
795
+ * controlled through mbedtls_ecp_set_max_ops() which limits the maximum
796
+ * number of ECC operations a function may perform before pausing; see
797
+ * mbedtls_ecp_set_max_ops() for more information.
798
+ *
799
+ * This is useful in non-threaded environments if you want to avoid blocking
800
+ * for too long on ECC (and, hence, X.509 or SSL/TLS) operations.
801
+ *
802
+ * This option:
803
+ * - Adds xxx_restartable() variants of existing operations in the
804
+ * following modules, with corresponding restart context types:
805
+ * - ECP (for Short Weierstrass curves only): scalar multiplication (mul),
806
+ * linear combination (muladd);
807
+ * - ECDSA: signature generation & verification;
808
+ * - PK: signature generation & verification;
809
+ * - X509: certificate chain verification.
810
+ * - Adds mbedtls_ecdh_enable_restart() in the ECDH module.
811
+ * - Changes the behaviour of TLS 1.2 clients (not servers) when using the
812
+ * ECDHE-ECDSA key exchange (not other key exchanges) to make all ECC
813
+ * computations restartable:
814
+ * - ECDH operations from the key exchange, only for Short Weierstrass
815
+ * curves, only when MBEDTLS_USE_PSA_CRYPTO is not enabled.
816
+ * - verification of the server's key exchange signature;
817
+ * - verification of the server's certificate chain;
818
+ * - generation of the client's signature if client authentication is used,
819
+ * with an ECC key/certificate.
820
+ *
821
+ * \note In the cases above, the usual SSL/TLS functions, such as
822
+ * mbedtls_ssl_handshake(), can now return
823
+ * MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS.
824
+ *
825
+ * \note When this option and MBEDTLS_USE_PSA_CRYPTO are both enabled,
826
+ * restartable operations in PK, X.509 and TLS (see above) are not
827
+ * using PSA. On the other hand, ECDH computations in TLS are using
828
+ * PSA, and are not restartable. These are temporary limitations that
829
+ * should be lifted in the future.
830
+ *
831
+ * \note This option only works with the default software implementation of
832
+ * elliptic curve functionality. It is incompatible with
833
+ * MBEDTLS_ECP_ALT, MBEDTLS_ECDH_XXX_ALT, MBEDTLS_ECDSA_XXX_ALT.
834
+ *
835
+ * Requires: MBEDTLS_ECP_C
836
+ *
837
+ * Uncomment this macro to enable restartable ECC computations.
838
+ */
839
+ //#define MBEDTLS_ECP_RESTARTABLE
840
+
841
+ /**
842
+ * Uncomment to enable using new bignum code in the ECC modules.
843
+ *
844
+ * \warning This is currently experimental, incomplete and therefore should not
845
+ * be used in production.
846
+ */
847
+ //#define MBEDTLS_ECP_WITH_MPI_UINT
848
+
849
+ /**
850
+ * \def MBEDTLS_ECDSA_DETERMINISTIC
851
+ *
852
+ * Enable deterministic ECDSA (RFC 6979).
853
+ * Standard ECDSA is "fragile" in the sense that lack of entropy when signing
854
+ * may result in a compromise of the long-term signing key. This is avoided by
855
+ * the deterministic variant.
856
+ *
857
+ * Requires: MBEDTLS_HMAC_DRBG_C, MBEDTLS_ECDSA_C
858
+ *
859
+ * Comment this macro to disable deterministic ECDSA.
860
+ */
861
+ #define MBEDTLS_ECDSA_DETERMINISTIC
862
+
863
+ /**
864
+ * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
865
+ *
866
+ * Enable the PSK based ciphersuite modes in SSL / TLS.
867
+ *
868
+ * This enables the following ciphersuites (if other requisites are
869
+ * enabled as well):
870
+ * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
871
+ * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
872
+ * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
873
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
874
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
875
+ * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
876
+ * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
877
+ * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
878
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
879
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
880
+ */
881
+ #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
882
+
883
+ /**
884
+ * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
885
+ *
886
+ * Enable the DHE-PSK based ciphersuite modes in SSL / TLS.
887
+ *
888
+ * Requires: MBEDTLS_DHM_C
889
+ *
890
+ * This enables the following ciphersuites (if other requisites are
891
+ * enabled as well):
892
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
893
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
894
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
895
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
896
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
897
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
898
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
899
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
900
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
901
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
902
+ *
903
+ * \warning Using DHE constitutes a security risk as it
904
+ * is not possible to validate custom DH parameters.
905
+ * If possible, it is recommended users should consider
906
+ * preferring other methods of key exchange.
907
+ * See dhm.h for more details.
908
+ *
909
+ */
910
+ #define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
911
+
912
+ /**
913
+ * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
914
+ *
915
+ * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
916
+ *
917
+ * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
918
+ *
919
+ * This enables the following ciphersuites (if other requisites are
920
+ * enabled as well):
921
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
922
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
923
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
924
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
925
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
926
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
927
+ */
928
+ #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
929
+
930
+ /**
931
+ * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
932
+ *
933
+ * Enable the RSA-PSK based ciphersuite modes in SSL / TLS.
934
+ *
935
+ * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
936
+ * MBEDTLS_X509_CRT_PARSE_C
937
+ *
938
+ * This enables the following ciphersuites (if other requisites are
939
+ * enabled as well):
940
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
941
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
942
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA
943
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
944
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
945
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
946
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
947
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA
948
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
949
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
950
+ */
951
+ #define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
952
+
953
+ /**
954
+ * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
955
+ *
956
+ * Enable the RSA-only based ciphersuite modes in SSL / TLS.
957
+ *
958
+ * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
959
+ * MBEDTLS_X509_CRT_PARSE_C
960
+ *
961
+ * This enables the following ciphersuites (if other requisites are
962
+ * enabled as well):
963
+ * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384
964
+ * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
965
+ * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA
966
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
967
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
968
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
969
+ * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256
970
+ * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256
971
+ * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA
972
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
973
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
974
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
975
+ */
976
+ #define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
977
+
978
+ /**
979
+ * \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
980
+ *
981
+ * Enable the DHE-RSA based ciphersuite modes in SSL / TLS.
982
+ *
983
+ * Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
984
+ * MBEDTLS_X509_CRT_PARSE_C
985
+ *
986
+ * This enables the following ciphersuites (if other requisites are
987
+ * enabled as well):
988
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
989
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
990
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
991
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
992
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
993
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
994
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
995
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
996
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
997
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
998
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
999
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
1000
+ *
1001
+ * \warning Using DHE constitutes a security risk as it
1002
+ * is not possible to validate custom DH parameters.
1003
+ * If possible, it is recommended users should consider
1004
+ * preferring other methods of key exchange.
1005
+ * See dhm.h for more details.
1006
+ *
1007
+ */
1008
+ #define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
1009
+
1010
+ /**
1011
+ * \def MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
1012
+ *
1013
+ * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS.
1014
+ *
1015
+ * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
1016
+ * MBEDTLS_RSA_C
1017
+ * MBEDTLS_PKCS1_V15
1018
+ * MBEDTLS_X509_CRT_PARSE_C
1019
+ *
1020
+ * This enables the following ciphersuites (if other requisites are
1021
+ * enabled as well):
1022
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
1023
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
1024
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
1025
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
1026
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
1027
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
1028
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
1029
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
1030
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
1031
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
1032
+ */
1033
+ #define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
1034
+
1035
+ /**
1036
+ * \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
1037
+ *
1038
+ * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
1039
+ *
1040
+ * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
1041
+ * MBEDTLS_ECDSA_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDSA)
1042
+ * MBEDTLS_X509_CRT_PARSE_C
1043
+ *
1044
+ * This enables the following ciphersuites (if other requisites are
1045
+ * enabled as well):
1046
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
1047
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
1048
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
1049
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
1050
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
1051
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
1052
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
1053
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
1054
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
1055
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
1056
+ */
1057
+ #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
1058
+
1059
+ /**
1060
+ * \def MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
1061
+ *
1062
+ * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
1063
+ *
1064
+ * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
1065
+ * MBEDTLS_ECDSA_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDSA)
1066
+ * MBEDTLS_X509_CRT_PARSE_C
1067
+ *
1068
+ * This enables the following ciphersuites (if other requisites are
1069
+ * enabled as well):
1070
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
1071
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
1072
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
1073
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
1074
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
1075
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
1076
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
1077
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
1078
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
1079
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
1080
+ */
1081
+ #define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
1082
+
1083
+ /**
1084
+ * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
1085
+ *
1086
+ * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS.
1087
+ *
1088
+ * Requires: MBEDTLS_ECDH_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDH)
1089
+ * MBEDTLS_RSA_C
1090
+ * MBEDTLS_X509_CRT_PARSE_C
1091
+ *
1092
+ * This enables the following ciphersuites (if other requisites are
1093
+ * enabled as well):
1094
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
1095
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
1096
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
1097
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
1098
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
1099
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
1100
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
1101
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
1102
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
1103
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
1104
+ */
1105
+ #define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
1106
+
1107
+ /**
1108
+ * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
1109
+ *
1110
+ * Enable the ECJPAKE based ciphersuite modes in SSL / TLS.
1111
+ *
1112
+ * \warning This is currently experimental. EC J-PAKE support is based on the
1113
+ * Thread v1.0.0 specification; incompatible changes to the specification
1114
+ * might still happen. For this reason, this is disabled by default.
1115
+ *
1116
+ * Requires: MBEDTLS_ECJPAKE_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_JPAKE)
1117
+ * SHA-256 (via MBEDTLS_SHA256_C or a PSA driver)
1118
+ * MBEDTLS_ECP_DP_SECP256R1_ENABLED
1119
+ *
1120
+ * \warning If SHA-256 is provided only by a PSA driver, you must call
1121
+ * psa_crypto_init() before the first handshake (even if
1122
+ * MBEDTLS_USE_PSA_CRYPTO is disabled).
1123
+ *
1124
+ * This enables the following ciphersuites (if other requisites are
1125
+ * enabled as well):
1126
+ * MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
1127
+ */
1128
+ //#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
1129
+
1130
+ /**
1131
+ * \def MBEDTLS_PK_PARSE_EC_EXTENDED
1132
+ *
1133
+ * Enhance support for reading EC keys using variants of SEC1 not allowed by
1134
+ * RFC 5915 and RFC 5480.
1135
+ *
1136
+ * Currently this means parsing the SpecifiedECDomain choice of EC
1137
+ * parameters (only known groups are supported, not arbitrary domains, to
1138
+ * avoid validation issues).
1139
+ *
1140
+ * Disable if you only need to support RFC 5915 + 5480 key formats.
1141
+ */
1142
+ #define MBEDTLS_PK_PARSE_EC_EXTENDED
1143
+
1144
+ /**
1145
+ * \def MBEDTLS_PK_PARSE_EC_COMPRESSED
1146
+ *
1147
+ * Enable the support for parsing public keys of type Short Weierstrass
1148
+ * (MBEDTLS_ECP_DP_SECP_XXX and MBEDTLS_ECP_DP_BP_XXX) which are using the
1149
+ * compressed point format. This parsing is done through ECP module's functions.
1150
+ *
1151
+ * \note As explained in the description of MBEDTLS_ECP_PF_COMPRESSED (in ecp.h)
1152
+ * the only unsupported curves are MBEDTLS_ECP_DP_SECP224R1 and
1153
+ * MBEDTLS_ECP_DP_SECP224K1.
1154
+ */
1155
+ #define MBEDTLS_PK_PARSE_EC_COMPRESSED
1156
+
1157
+ /**
1158
+ * \def MBEDTLS_ERROR_STRERROR_DUMMY
1159
+ *
1160
+ * Enable a dummy error function to make use of mbedtls_strerror() in
1161
+ * third party libraries easier when MBEDTLS_ERROR_C is disabled
1162
+ * (no effect when MBEDTLS_ERROR_C is enabled).
1163
+ *
1164
+ * You can safely disable this if MBEDTLS_ERROR_C is enabled, or if you're
1165
+ * not using mbedtls_strerror() or error_strerror() in your application.
1166
+ *
1167
+ * Disable if you run into name conflicts and want to really remove the
1168
+ * mbedtls_strerror()
1169
+ */
1170
+ #define MBEDTLS_ERROR_STRERROR_DUMMY
1171
+
1172
+ /**
1173
+ * \def MBEDTLS_GENPRIME
1174
+ *
1175
+ * Enable the prime-number generation code.
1176
+ *
1177
+ * Requires: MBEDTLS_BIGNUM_C
1178
+ */
1179
+ #define MBEDTLS_GENPRIME
1180
+
1181
+ /**
1182
+ * \def MBEDTLS_FS_IO
1183
+ *
1184
+ * Enable functions that use the filesystem.
1185
+ */
1186
+ #define MBEDTLS_FS_IO
1187
+
1188
+ /**
1189
+ * \def MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
1190
+ *
1191
+ * Do not add default entropy sources in mbedtls_entropy_init().
1192
+ *
1193
+ * This is useful to have more control over the added entropy sources in an
1194
+ * application.
1195
+ *
1196
+ * Uncomment this macro to prevent loading of default entropy functions.
1197
+ */
1198
+ //#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
1199
+
1200
+ /**
1201
+ * \def MBEDTLS_NO_PLATFORM_ENTROPY
1202
+ *
1203
+ * Do not use built-in platform entropy functions.
1204
+ * This is useful if your platform does not support
1205
+ * standards like the /dev/urandom or Windows CryptoAPI.
1206
+ *
1207
+ * If you enable this macro, you will probably need to enable
1208
+ * #MBEDTLS_ENTROPY_HARDWARE_ALT and provide a function
1209
+ * mbedtls_hardware_poll().
1210
+ *
1211
+ * \note The default platform entropy function supports the following
1212
+ * sources:
1213
+ * - getrandom() on Linux (if syscall() is available at compile time);
1214
+ * - getrandom() on FreeBSD and DragonFlyBSD (if available at compile
1215
+ * time);
1216
+ * - `sysctl(KERN_ARND)` on FreeBSD and NetBSD;
1217
+ * - #MBEDTLS_PLATFORM_DEV_RANDOM on Unix-like platforms
1218
+ * (unless one of the above is used);
1219
+ * - BCryptGenRandom() on Windows.
1220
+ *
1221
+ * Uncomment this macro to disable the built-in platform entropy functions.
1222
+ */
1223
+ //#define MBEDTLS_NO_PLATFORM_ENTROPY
1224
+
1225
+ /**
1226
+ * \def MBEDTLS_ENTROPY_FORCE_SHA256
1227
+ *
1228
+ * Force the entropy accumulator to use a SHA-256 accumulator instead of the
1229
+ * default SHA-512 based one (if both are available).
1230
+ *
1231
+ * Requires: MBEDTLS_SHA256_C
1232
+ *
1233
+ * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option
1234
+ * if you have performance concerns.
1235
+ *
1236
+ * This option is only useful if both MBEDTLS_SHA256_C and
1237
+ * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used.
1238
+ */
1239
+ //#define MBEDTLS_ENTROPY_FORCE_SHA256
1240
+
1241
+ /**
1242
+ * \def MBEDTLS_ENTROPY_NV_SEED
1243
+ *
1244
+ * Enable the non-volatile (NV) seed file-based entropy source.
1245
+ * (Also enables the NV seed read/write functions in the platform layer)
1246
+ *
1247
+ * This is crucial (if not required) on systems that do not have a
1248
+ * cryptographic entropy source (in hardware or kernel) available.
1249
+ *
1250
+ * Requires: MBEDTLS_ENTROPY_C, MBEDTLS_PLATFORM_C
1251
+ *
1252
+ * \note The read/write functions that are used by the entropy source are
1253
+ * determined in the platform layer, and can be modified at runtime and/or
1254
+ * compile-time depending on the flags (MBEDTLS_PLATFORM_NV_SEED_*) used.
1255
+ *
1256
+ * \note If you use the default implementation functions that read a seedfile
1257
+ * with regular fopen(), please make sure you make a seedfile with the
1258
+ * proper name (defined in MBEDTLS_PLATFORM_STD_NV_SEED_FILE) and at
1259
+ * least MBEDTLS_ENTROPY_BLOCK_SIZE bytes in size that can be read from
1260
+ * and written to or you will get an entropy source error! The default
1261
+ * implementation will only use the first MBEDTLS_ENTROPY_BLOCK_SIZE
1262
+ * bytes from the file.
1263
+ *
1264
+ * \note The entropy collector will write to the seed file before entropy is
1265
+ * given to an external source, to update it.
1266
+ */
1267
+ //#define MBEDTLS_ENTROPY_NV_SEED
1268
+
1269
+ /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
1270
+ *
1271
+ * Enable key identifiers that encode a key owner identifier.
1272
+ *
1273
+ * The owner of a key is identified by a value of type ::mbedtls_key_owner_id_t
1274
+ * which is currently hard-coded to be int32_t.
1275
+ *
1276
+ * Note that this option is meant for internal use only and may be removed
1277
+ * without notice.
1278
+ */
1279
+ //#define MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
1280
+
1281
+ /**
1282
+ * \def MBEDTLS_MEMORY_DEBUG
1283
+ *
1284
+ * Enable debugging of buffer allocator memory issues. Automatically prints
1285
+ * (to stderr) all (fatal) messages on memory allocation issues. Enables
1286
+ * function for 'debug output' of allocated memory.
1287
+ *
1288
+ * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C
1289
+ *
1290
+ * Uncomment this macro to let the buffer allocator print out error messages.
1291
+ */
1292
+ //#define MBEDTLS_MEMORY_DEBUG
1293
+
1294
+ /**
1295
+ * \def MBEDTLS_MEMORY_BACKTRACE
1296
+ *
1297
+ * Include backtrace information with each allocated block.
1298
+ *
1299
+ * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C
1300
+ * GLIBC-compatible backtrace() and backtrace_symbols() support
1301
+ *
1302
+ * Uncomment this macro to include backtrace information
1303
+ */
1304
+ //#define MBEDTLS_MEMORY_BACKTRACE
1305
+
1306
+ /**
1307
+ * \def MBEDTLS_PK_RSA_ALT_SUPPORT
1308
+ *
1309
+ * Support external private RSA keys (eg from a HSM) in the PK layer.
1310
+ *
1311
+ * Comment this macro to disable support for external private RSA keys.
1312
+ */
1313
+ #define MBEDTLS_PK_RSA_ALT_SUPPORT
1314
+
1315
+ /**
1316
+ * \def MBEDTLS_PKCS1_V15
1317
+ *
1318
+ * Enable support for PKCS#1 v1.5 encoding.
1319
+ *
1320
+ * Requires: MBEDTLS_RSA_C
1321
+ *
1322
+ * This enables support for PKCS#1 v1.5 operations.
1323
+ */
1324
+ #define MBEDTLS_PKCS1_V15
1325
+
1326
+ /**
1327
+ * \def MBEDTLS_PKCS1_V21
1328
+ *
1329
+ * Enable support for PKCS#1 v2.1 encoding.
1330
+ *
1331
+ * Requires: MBEDTLS_RSA_C
1332
+ *
1333
+ * \warning If using a hash that is only provided by PSA drivers, you must
1334
+ * call psa_crypto_init() before doing any PKCS#1 v2.1 operation.
1335
+ *
1336
+ * This enables support for RSAES-OAEP and RSASSA-PSS operations.
1337
+ */
1338
+ #define MBEDTLS_PKCS1_V21
1339
+
1340
+ /** \def MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS
1341
+ *
1342
+ * Enable support for platform built-in keys. If you enable this feature,
1343
+ * you must implement the function mbedtls_psa_platform_get_builtin_key().
1344
+ * See the documentation of that function for more information.
1345
+ *
1346
+ * Built-in keys are typically derived from a hardware unique key or
1347
+ * stored in a secure element.
1348
+ *
1349
+ * Requires: MBEDTLS_PSA_CRYPTO_C.
1350
+ *
1351
+ * \warning This interface is experimental and may change or be removed
1352
+ * without notice.
1353
+ */
1354
+ //#define MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS
1355
+
1356
+ /** \def MBEDTLS_PSA_CRYPTO_CLIENT
1357
+ *
1358
+ * Enable support for PSA crypto client.
1359
+ *
1360
+ * \note This option allows to include the code necessary for a PSA
1361
+ * crypto client when the PSA crypto implementation is not included in
1362
+ * the library (MBEDTLS_PSA_CRYPTO_C disabled). The code included is the
1363
+ * code to set and get PSA key attributes.
1364
+ * The development of PSA drivers partially relying on the library to
1365
+ * fulfill the hardware gaps is another possible usage of this option.
1366
+ *
1367
+ * \warning This interface is experimental and may change or be removed
1368
+ * without notice.
1369
+ */
1370
+ //#define MBEDTLS_PSA_CRYPTO_CLIENT
1371
+
1372
+ /** \def MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
1373
+ *
1374
+ * Make the PSA Crypto module use an external random generator provided
1375
+ * by a driver, instead of Mbed TLS's entropy and DRBG modules.
1376
+ *
1377
+ * \note This random generator must deliver random numbers with cryptographic
1378
+ * quality and high performance. It must supply unpredictable numbers
1379
+ * with a uniform distribution. The implementation of this function
1380
+ * is responsible for ensuring that the random generator is seeded
1381
+ * with sufficient entropy. If you have a hardware TRNG which is slow
1382
+ * or delivers non-uniform output, declare it as an entropy source
1383
+ * with mbedtls_entropy_add_source() instead of enabling this option.
1384
+ *
1385
+ * If you enable this option, you must configure the type
1386
+ * ::mbedtls_psa_external_random_context_t in psa/crypto_platform.h
1387
+ * and define a function called mbedtls_psa_external_get_random()
1388
+ * with the following prototype:
1389
+ * ```
1390
+ * psa_status_t mbedtls_psa_external_get_random(
1391
+ * mbedtls_psa_external_random_context_t *context,
1392
+ * uint8_t *output, size_t output_size, size_t *output_length);
1393
+ * );
1394
+ * ```
1395
+ * The \c context value is initialized to 0 before the first call.
1396
+ * The function must fill the \c output buffer with \c output_size bytes
1397
+ * of random data and set \c *output_length to \c output_size.
1398
+ *
1399
+ * Requires: MBEDTLS_PSA_CRYPTO_C
1400
+ *
1401
+ * \warning If you enable this option, code that uses the PSA cryptography
1402
+ * interface will not use any of the entropy sources set up for
1403
+ * the entropy module, nor the NV seed that MBEDTLS_ENTROPY_NV_SEED
1404
+ * enables.
1405
+ *
1406
+ * \note This option is experimental and may be removed without notice.
1407
+ */
1408
+ //#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
1409
+
1410
+ /**
1411
+ * \def MBEDTLS_PSA_CRYPTO_SPM
1412
+ *
1413
+ * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is built for SPM (Secure
1414
+ * Partition Manager) integration which separates the code into two parts: a
1415
+ * NSPE (Non-Secure Process Environment) and an SPE (Secure Process
1416
+ * Environment).
1417
+ *
1418
+ * If you enable this option, your build environment must include a header
1419
+ * file `"crypto_spe.h"` (either in the `psa` subdirectory of the Mbed TLS
1420
+ * header files, or in another directory on the compiler's include search
1421
+ * path). Alternatively, your platform may customize the header
1422
+ * `psa/crypto_platform.h`, in which case it can skip or replace the
1423
+ * inclusion of `"crypto_spe.h"`.
1424
+ *
1425
+ * Module: library/psa_crypto.c
1426
+ * Requires: MBEDTLS_PSA_CRYPTO_C
1427
+ *
1428
+ */
1429
+ //#define MBEDTLS_PSA_CRYPTO_SPM
1430
+
1431
+ /**
1432
+ * \def MBEDTLS_PSA_KEY_STORE_DYNAMIC
1433
+ *
1434
+ * Dynamically resize the PSA key store to accommodate any number of
1435
+ * volatile keys (until the heap memory is exhausted).
1436
+ *
1437
+ * If this option is disabled, the key store has a fixed size
1438
+ * #MBEDTLS_PSA_KEY_SLOT_COUNT for volatile keys and loaded persistent keys
1439
+ * together.
1440
+ *
1441
+ * This option has no effect when #MBEDTLS_PSA_CRYPTO_C is disabled.
1442
+ *
1443
+ * Module: library/psa_crypto.c
1444
+ * Requires: MBEDTLS_PSA_CRYPTO_C
1445
+ */
1446
+ #define MBEDTLS_PSA_KEY_STORE_DYNAMIC
1447
+
1448
+ /**
1449
+ * Uncomment to enable p256-m. This is an alternative implementation of
1450
+ * key generation, ECDH and (randomized) ECDSA on the curve SECP256R1.
1451
+ * Compared to the default implementation:
1452
+ *
1453
+ * - p256-m has a much smaller code size and RAM footprint.
1454
+ * - p256-m is only available via the PSA API. This includes the pk module
1455
+ * when #MBEDTLS_USE_PSA_CRYPTO is enabled.
1456
+ * - p256-m does not support deterministic ECDSA, EC-JPAKE, custom protocols
1457
+ * over the core arithmetic, or deterministic derivation of keys.
1458
+ *
1459
+ * We recommend enabling this option if your application uses the PSA API
1460
+ * and the only elliptic curve support it needs is ECDH and ECDSA over
1461
+ * SECP256R1.
1462
+ *
1463
+ * If you enable this option, you do not need to enable any ECC-related
1464
+ * MBEDTLS_xxx option. You do need to separately request support for the
1465
+ * cryptographic mechanisms through the PSA API:
1466
+ * - #MBEDTLS_PSA_CRYPTO_C and #MBEDTLS_PSA_CRYPTO_CONFIG for PSA-based
1467
+ * configuration;
1468
+ * - #MBEDTLS_USE_PSA_CRYPTO if you want to use p256-m from PK, X.509 or TLS;
1469
+ * - #PSA_WANT_ECC_SECP_R1_256;
1470
+ * - #PSA_WANT_ALG_ECDH and/or #PSA_WANT_ALG_ECDSA as needed;
1471
+ * - #PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY, #PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC,
1472
+ * #PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT,
1473
+ * #PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT and/or
1474
+ * #PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE as needed.
1475
+ *
1476
+ * \note To benefit from the smaller code size of p256-m, make sure that you
1477
+ * do not enable any ECC-related option not supported by p256-m: this
1478
+ * would cause the built-in ECC implementation to be built as well, in
1479
+ * order to provide the required option.
1480
+ * Make sure #PSA_WANT_ALG_DETERMINISTIC_ECDSA, #PSA_WANT_ALG_JPAKE and
1481
+ * #PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE, and curves other than
1482
+ * SECP256R1 are disabled as they are not supported by this driver.
1483
+ * Also, avoid defining #MBEDTLS_PK_PARSE_EC_COMPRESSED or
1484
+ * #MBEDTLS_PK_PARSE_EC_EXTENDED as those currently require a subset of
1485
+ * the built-in ECC implementation, see docs/driver-only-builds.md.
1486
+ */
1487
+ //#define MBEDTLS_PSA_P256M_DRIVER_ENABLED
1488
+
1489
+ /**
1490
+ * \def MBEDTLS_PSA_INJECT_ENTROPY
1491
+ *
1492
+ * Enable support for entropy injection at first boot. This feature is
1493
+ * required on systems that do not have a built-in entropy source (TRNG).
1494
+ * This feature is currently not supported on systems that have a built-in
1495
+ * entropy source.
1496
+ *
1497
+ * Requires: MBEDTLS_PSA_CRYPTO_STORAGE_C, MBEDTLS_ENTROPY_NV_SEED
1498
+ *
1499
+ */
1500
+ //#define MBEDTLS_PSA_INJECT_ENTROPY
1501
+
1502
+ /**
1503
+ * \def MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS
1504
+ *
1505
+ * Assume all buffers passed to PSA functions are owned exclusively by the
1506
+ * PSA function and are not stored in shared memory.
1507
+ *
1508
+ * This option may be enabled if all buffers passed to any PSA function reside
1509
+ * in memory that is accessible only to the PSA function during its execution.
1510
+ *
1511
+ * This option MUST be disabled whenever buffer arguments are in memory shared
1512
+ * with an untrusted party, for example where arguments to PSA calls are passed
1513
+ * across a trust boundary.
1514
+ *
1515
+ * \note Enabling this option reduces memory usage and code size.
1516
+ *
1517
+ * \note Enabling this option causes overlap of input and output buffers
1518
+ * not to be supported by PSA functions.
1519
+ */
1520
+ //#define MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS
1521
+
1522
+ /**
1523
+ * \def MBEDTLS_RSA_NO_CRT
1524
+ *
1525
+ * Do not use the Chinese Remainder Theorem
1526
+ * for the RSA private operation.
1527
+ *
1528
+ * Uncomment this macro to disable the use of CRT in RSA.
1529
+ *
1530
+ */
1531
+ //#define MBEDTLS_RSA_NO_CRT
1532
+
1533
+ /**
1534
+ * \def MBEDTLS_SELF_TEST
1535
+ *
1536
+ * Enable the checkup functions (*_self_test).
1537
+ */
1538
+ #define MBEDTLS_SELF_TEST
1539
+
1540
+ /**
1541
+ * \def MBEDTLS_SHA256_SMALLER
1542
+ *
1543
+ * Enable an implementation of SHA-256 that has lower ROM footprint but also
1544
+ * lower performance.
1545
+ *
1546
+ * The default implementation is meant to be a reasonable compromise between
1547
+ * performance and size. This version optimizes more aggressively for size at
1548
+ * the expense of performance. Eg on Cortex-M4 it reduces the size of
1549
+ * mbedtls_sha256_process() from ~2KB to ~0.5KB for a performance hit of about
1550
+ * 30%.
1551
+ *
1552
+ * Uncomment to enable the smaller implementation of SHA256.
1553
+ */
1554
+ //#define MBEDTLS_SHA256_SMALLER
1555
+
1556
+ /**
1557
+ * \def MBEDTLS_SHA512_SMALLER
1558
+ *
1559
+ * Enable an implementation of SHA-512 that has lower ROM footprint but also
1560
+ * lower performance.
1561
+ *
1562
+ * Uncomment to enable the smaller implementation of SHA512.
1563
+ */
1564
+ //#define MBEDTLS_SHA512_SMALLER
1565
+
1566
+ /**
1567
+ * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES
1568
+ *
1569
+ * Enable sending of alert messages in case of encountered errors as per RFC.
1570
+ * If you choose not to send the alert messages, Mbed TLS can still communicate
1571
+ * with other servers, only debugging of failures is harder.
1572
+ *
1573
+ * The advantage of not sending alert messages, is that no information is given
1574
+ * about reasons for failures thus preventing adversaries of gaining intel.
1575
+ *
1576
+ * Enable sending of all alert messages
1577
+ */
1578
+ #define MBEDTLS_SSL_ALL_ALERT_MESSAGES
1579
+
1580
+ /**
1581
+ * \def MBEDTLS_SSL_DTLS_CONNECTION_ID
1582
+ *
1583
+ * Enable support for the DTLS Connection ID (CID) extension,
1584
+ * which allows to identify DTLS connections across changes
1585
+ * in the underlying transport. The CID functionality is described
1586
+ * in RFC 9146.
1587
+ *
1588
+ * Setting this option enables the SSL APIs `mbedtls_ssl_set_cid()`,
1589
+ * mbedtls_ssl_get_own_cid()`, `mbedtls_ssl_get_peer_cid()` and
1590
+ * `mbedtls_ssl_conf_cid()`. See the corresponding documentation for
1591
+ * more information.
1592
+ *
1593
+ * The maximum lengths of outgoing and incoming CIDs can be configured
1594
+ * through the options
1595
+ * - MBEDTLS_SSL_CID_OUT_LEN_MAX
1596
+ * - MBEDTLS_SSL_CID_IN_LEN_MAX.
1597
+ *
1598
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
1599
+ *
1600
+ * Uncomment to enable the Connection ID extension.
1601
+ */
1602
+ #define MBEDTLS_SSL_DTLS_CONNECTION_ID
1603
+
1604
+
1605
+ /**
1606
+ * \def MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT
1607
+ *
1608
+ * Defines whether RFC 9146 (default) or the legacy version
1609
+ * (version draft-ietf-tls-dtls-connection-id-05,
1610
+ * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05)
1611
+ * is used.
1612
+ *
1613
+ * Set the value to 0 for the standard version, and
1614
+ * 1 for the legacy draft version.
1615
+ *
1616
+ * \deprecated Support for the legacy version of the DTLS
1617
+ * Connection ID feature is deprecated. Please
1618
+ * switch to the standardized version defined
1619
+ * in RFC 9146 enabled by utilizing
1620
+ * MBEDTLS_SSL_DTLS_CONNECTION_ID without use
1621
+ * of MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT.
1622
+ *
1623
+ * Requires: MBEDTLS_SSL_DTLS_CONNECTION_ID
1624
+ */
1625
+ #define MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT 0
1626
+
1627
+ /**
1628
+ * \def MBEDTLS_SSL_ASYNC_PRIVATE
1629
+ *
1630
+ * Enable asynchronous external private key operations in SSL. This allows
1631
+ * you to configure an SSL connection to call an external cryptographic
1632
+ * module to perform private key operations instead of performing the
1633
+ * operation inside the library.
1634
+ *
1635
+ * Requires: MBEDTLS_X509_CRT_PARSE_C
1636
+ */
1637
+ //#define MBEDTLS_SSL_ASYNC_PRIVATE
1638
+
1639
+ /** \def MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
1640
+ *
1641
+ * In TLS clients, when a client authenticates a server through its
1642
+ * certificate, the client normally checks three things:
1643
+ * - the certificate chain must be valid;
1644
+ * - the chain must start from a trusted CA;
1645
+ * - the certificate must cover the server name that is expected by the client.
1646
+ *
1647
+ * Omitting any of these checks is generally insecure, and can allow a
1648
+ * malicious server to impersonate a legitimate server.
1649
+ *
1650
+ * The third check may be safely skipped in some unusual scenarios,
1651
+ * such as networks where eavesdropping is a risk but not active attacks,
1652
+ * or a private PKI where the client equally trusts all servers that are
1653
+ * accredited by the root CA.
1654
+ *
1655
+ * You should call mbedtls_ssl_set_hostname() with the expected server name
1656
+ * before starting a TLS handshake on a client (unless the client is
1657
+ * set up to only use PSK-based authentication, which does not rely on the
1658
+ * host name). This configuration option controls what happens if a TLS client
1659
+ * is configured with the authentication mode #MBEDTLS_SSL_VERIFY_REQUIRED
1660
+ * (default), certificate authentication is enabled and the client does not
1661
+ * call mbedtls_ssl_set_hostname():
1662
+ *
1663
+ * - If this option is unset (default), the connection attempt is aborted
1664
+ * with the error #MBEDTLS_ERR_SSL_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME.
1665
+ * - If this option is set, the TLS library does not check the server name
1666
+ * that the certificate is valid for. This is the historical behavior
1667
+ * of Mbed TLS, but may be insecure as explained above.
1668
+ *
1669
+ * Enable this option for strict backward compatibility if you have
1670
+ * determined that it is secure in the scenario where you are using
1671
+ * Mbed TLS.
1672
+ *
1673
+ * \deprecated This option exists only for backward compatibility and will
1674
+ * be removed in the next major version of Mbed TLS.
1675
+ *
1676
+ */
1677
+ //#define MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
1678
+
1679
+ /**
1680
+ * \def MBEDTLS_SSL_CONTEXT_SERIALIZATION
1681
+ *
1682
+ * Enable serialization of the TLS context structures, through use of the
1683
+ * functions mbedtls_ssl_context_save() and mbedtls_ssl_context_load().
1684
+ *
1685
+ * This pair of functions allows one side of a connection to serialize the
1686
+ * context associated with the connection, then free or re-use that context
1687
+ * while the serialized state is persisted elsewhere, and finally deserialize
1688
+ * that state to a live context for resuming read/write operations on the
1689
+ * connection. From a protocol perspective, the state of the connection is
1690
+ * unaffected, in particular this is entirely transparent to the peer.
1691
+ *
1692
+ * Note: this is distinct from TLS session resumption, which is part of the
1693
+ * protocol and fully visible by the peer. TLS session resumption enables
1694
+ * establishing new connections associated to a saved session with shorter,
1695
+ * lighter handshakes, while context serialization is a local optimization in
1696
+ * handling a single, potentially long-lived connection.
1697
+ *
1698
+ * Enabling these APIs makes some SSL structures larger, as 64 extra bytes are
1699
+ * saved after the handshake to allow for more efficient serialization, so if
1700
+ * you don't need this feature you'll save RAM by disabling it.
1701
+ *
1702
+ * Requires: MBEDTLS_GCM_C or MBEDTLS_CCM_C or MBEDTLS_CHACHAPOLY_C
1703
+ *
1704
+ * Comment to disable the context serialization APIs.
1705
+ */
1706
+ #define MBEDTLS_SSL_CONTEXT_SERIALIZATION
1707
+
1708
+ /**
1709
+ * \def MBEDTLS_SSL_DEBUG_ALL
1710
+ *
1711
+ * Enable the debug messages in SSL module for all issues.
1712
+ * Debug messages have been disabled in some places to prevent timing
1713
+ * attacks due to (unbalanced) debugging function calls.
1714
+ *
1715
+ * If you need all error reporting you should enable this during debugging,
1716
+ * but remove this for production servers that should log as well.
1717
+ *
1718
+ * Uncomment this macro to report all debug messages on errors introducing
1719
+ * a timing side-channel.
1720
+ *
1721
+ */
1722
+ //#define MBEDTLS_SSL_DEBUG_ALL
1723
+
1724
+ /** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC
1725
+ *
1726
+ * Enable support for Encrypt-then-MAC, RFC 7366.
1727
+ *
1728
+ * This allows peers that both support it to use a more robust protection for
1729
+ * ciphersuites using CBC, providing deep resistance against timing attacks
1730
+ * on the padding or underlying cipher.
1731
+ *
1732
+ * This only affects CBC ciphersuites, and is useless if none is defined.
1733
+ *
1734
+ * Requires: MBEDTLS_SSL_PROTO_TLS1_2
1735
+ *
1736
+ * Comment this macro to disable support for Encrypt-then-MAC
1737
+ */
1738
+ #define MBEDTLS_SSL_ENCRYPT_THEN_MAC
1739
+
1740
+ /** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET
1741
+ *
1742
+ * Enable support for RFC 7627: Session Hash and Extended Master Secret
1743
+ * Extension.
1744
+ *
1745
+ * This was introduced as "the proper fix" to the Triple Handshake family of
1746
+ * attacks, but it is recommended to always use it (even if you disable
1747
+ * renegotiation), since it actually fixes a more fundamental issue in the
1748
+ * original SSL/TLS design, and has implications beyond Triple Handshake.
1749
+ *
1750
+ * Requires: MBEDTLS_SSL_PROTO_TLS1_2
1751
+ *
1752
+ * Comment this macro to disable support for Extended Master Secret.
1753
+ */
1754
+ #define MBEDTLS_SSL_EXTENDED_MASTER_SECRET
1755
+
1756
+ /**
1757
+ * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
1758
+ *
1759
+ * This option controls the availability of the API mbedtls_ssl_get_peer_cert()
1760
+ * giving access to the peer's certificate after completion of the handshake.
1761
+ *
1762
+ * Unless you need mbedtls_ssl_peer_cert() in your application, it is
1763
+ * recommended to disable this option for reduced RAM usage.
1764
+ *
1765
+ * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still
1766
+ * defined, but always returns \c NULL.
1767
+ *
1768
+ * \note This option has no influence on the protection against the
1769
+ * triple handshake attack. Even if it is disabled, Mbed TLS will
1770
+ * still ensure that certificates do not change during renegotiation,
1771
+ * for example by keeping a hash of the peer's certificate.
1772
+ *
1773
+ * \note This option is required if MBEDTLS_SSL_PROTO_TLS1_3 is set.
1774
+ *
1775
+ * Comment this macro to disable storing the peer's certificate
1776
+ * after the handshake.
1777
+ */
1778
+ #define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
1779
+
1780
+ /**
1781
+ * \def MBEDTLS_SSL_KEYING_MATERIAL_EXPORT
1782
+ *
1783
+ * When this option is enabled, the client and server can extract additional
1784
+ * shared symmetric keys after an SSL handshake using the function
1785
+ * mbedtls_ssl_export_keying_material().
1786
+ *
1787
+ * The process for deriving the keys is specified in RFC 5705 for TLS 1.2 and
1788
+ * in RFC 8446, Section 7.5, for TLS 1.3.
1789
+ *
1790
+ * Comment this macro to disable mbedtls_ssl_export_keying_material().
1791
+ */
1792
+ #define MBEDTLS_SSL_KEYING_MATERIAL_EXPORT
1793
+
1794
+ /**
1795
+ * \def MBEDTLS_SSL_RENEGOTIATION
1796
+ *
1797
+ * Enable support for TLS renegotiation.
1798
+ *
1799
+ * The two main uses of renegotiation are (1) refresh keys on long-lived
1800
+ * connections and (2) client authentication after the initial handshake.
1801
+ * If you don't need renegotiation, it's probably better to disable it, since
1802
+ * it has been associated with security issues in the past and is easy to
1803
+ * misuse/misunderstand.
1804
+ *
1805
+ * Requires: MBEDTLS_SSL_PROTO_TLS1_2
1806
+ *
1807
+ * Comment this to disable support for renegotiation.
1808
+ *
1809
+ * \note Even if this option is disabled, both client and server are aware
1810
+ * of the Renegotiation Indication Extension (RFC 5746) used to
1811
+ * prevent the SSL renegotiation attack (see RFC 5746 Sect. 1).
1812
+ * (See \c mbedtls_ssl_conf_legacy_renegotiation for the
1813
+ * configuration of this extension).
1814
+ *
1815
+ */
1816
+ #define MBEDTLS_SSL_RENEGOTIATION
1817
+
1818
+ /**
1819
+ * \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
1820
+ *
1821
+ * Enable support for RFC 6066 max_fragment_length extension in SSL.
1822
+ *
1823
+ * Comment this macro to disable support for the max_fragment_length extension
1824
+ */
1825
+ #define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
1826
+
1827
+ /**
1828
+ * \def MBEDTLS_SSL_RECORD_SIZE_LIMIT
1829
+ *
1830
+ * Enable support for RFC 8449 record_size_limit extension in SSL (TLS 1.3 only).
1831
+ *
1832
+ * Requires: MBEDTLS_SSL_PROTO_TLS1_3
1833
+ *
1834
+ * Uncomment this macro to enable support for the record_size_limit extension
1835
+ */
1836
+ //#define MBEDTLS_SSL_RECORD_SIZE_LIMIT
1837
+
1838
+ /**
1839
+ * \def MBEDTLS_SSL_PROTO_TLS1_2
1840
+ *
1841
+ * Enable support for TLS 1.2 (and DTLS 1.2 if DTLS is enabled).
1842
+ *
1843
+ * Requires: Without MBEDTLS_USE_PSA_CRYPTO: MBEDTLS_MD_C and
1844
+ * (MBEDTLS_SHA256_C or MBEDTLS_SHA384_C or
1845
+ * SHA-256 or SHA-512 provided by a PSA driver)
1846
+ * With MBEDTLS_USE_PSA_CRYPTO:
1847
+ * PSA_WANT_ALG_SHA_256 or PSA_WANT_ALG_SHA_384
1848
+ *
1849
+ * \warning If building with MBEDTLS_USE_PSA_CRYPTO, or if the hash(es) used
1850
+ * are only provided by PSA drivers, you must call psa_crypto_init() before
1851
+ * doing any TLS operations.
1852
+ *
1853
+ * Comment this macro to disable support for TLS 1.2 / DTLS 1.2
1854
+ */
1855
+ #define MBEDTLS_SSL_PROTO_TLS1_2
1856
+
1857
+ /**
1858
+ * \def MBEDTLS_SSL_PROTO_TLS1_3
1859
+ *
1860
+ * Enable support for TLS 1.3.
1861
+ *
1862
+ * \note See docs/architecture/tls13-support.md for a description of the TLS
1863
+ * 1.3 support that this option enables.
1864
+ *
1865
+ * Requires: MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
1866
+ * Requires: MBEDTLS_PSA_CRYPTO_C
1867
+ *
1868
+ * \note TLS 1.3 uses PSA crypto for cryptographic operations that are
1869
+ * directly performed by TLS 1.3 code. As a consequence, when TLS 1.3
1870
+ * is enabled, a TLS handshake may call psa_crypto_init(), even
1871
+ * if it ends up negotiating a different TLS version.
1872
+ *
1873
+ * \note Cryptographic operations performed indirectly via another module
1874
+ * (X.509, PK) or by code shared with TLS 1.2 (record protection,
1875
+ * running handshake hash) only use PSA crypto if
1876
+ * #MBEDTLS_USE_PSA_CRYPTO is enabled.
1877
+ *
1878
+ * \note In multithreaded applications, you must also enable
1879
+ * #MBEDTLS_THREADING_C, even if individual TLS contexts are not
1880
+ * shared between threads, unless only one thread ever calls
1881
+ * TLS functions.
1882
+ *
1883
+ * Uncomment this macro to enable the support for TLS 1.3.
1884
+ */
1885
+ #define MBEDTLS_SSL_PROTO_TLS1_3
1886
+
1887
+ /**
1888
+ * \def MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1889
+ *
1890
+ * Enable TLS 1.3 middlebox compatibility mode.
1891
+ *
1892
+ * As specified in Section D.4 of RFC 8446, TLS 1.3 offers a compatibility
1893
+ * mode to make a TLS 1.3 connection more likely to pass through middle boxes
1894
+ * expecting TLS 1.2 traffic.
1895
+ *
1896
+ * Turning on the compatibility mode comes at the cost of a few added bytes
1897
+ * on the wire, but it doesn't affect compatibility with TLS 1.3 implementations
1898
+ * that don't use it. Therefore, unless transmission bandwidth is critical and
1899
+ * you know that middlebox compatibility issues won't occur, it is therefore
1900
+ * recommended to set this option.
1901
+ *
1902
+ * Comment to disable compatibility mode for TLS 1.3. If
1903
+ * MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
1904
+ * effect on the build.
1905
+ *
1906
+ */
1907
+ #define MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1908
+
1909
+ /**
1910
+ * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1911
+ *
1912
+ * Enable TLS 1.3 PSK key exchange mode.
1913
+ *
1914
+ * Comment to disable support for the PSK key exchange mode in TLS 1.3. If
1915
+ * MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
1916
+ * effect on the build.
1917
+ *
1918
+ */
1919
+ #define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1920
+
1921
+ /**
1922
+ * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
1923
+ *
1924
+ * Enable TLS 1.3 ephemeral key exchange mode.
1925
+ *
1926
+ * Requires: PSA_WANT_ALG_ECDH or PSA_WANT_ALG_FFDH
1927
+ * MBEDTLS_X509_CRT_PARSE_C
1928
+ * and at least one of:
1929
+ * MBEDTLS_ECDSA_C or (MBEDTLS_USE_PSA_CRYPTO and PSA_WANT_ALG_ECDSA)
1930
+ * MBEDTLS_PKCS1_V21
1931
+ *
1932
+ * Comment to disable support for the ephemeral key exchange mode in TLS 1.3.
1933
+ * If MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not have any
1934
+ * effect on the build.
1935
+ *
1936
+ */
1937
+ #define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
1938
+
1939
+ /**
1940
+ * \def MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1941
+ *
1942
+ * Enable TLS 1.3 PSK ephemeral key exchange mode.
1943
+ *
1944
+ * Requires: PSA_WANT_ALG_ECDH or PSA_WANT_ALG_FFDH
1945
+ *
1946
+ * Comment to disable support for the PSK ephemeral key exchange mode in
1947
+ * TLS 1.3. If MBEDTLS_SSL_PROTO_TLS1_3 is not enabled, this option does not
1948
+ * have any effect on the build.
1949
+ *
1950
+ */
1951
+ #define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1952
+
1953
+ /**
1954
+ * \def MBEDTLS_SSL_EARLY_DATA
1955
+ *
1956
+ * Enable support for RFC 8446 TLS 1.3 early data.
1957
+ *
1958
+ * Requires: MBEDTLS_SSL_SESSION_TICKETS and either
1959
+ * MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED or
1960
+ * MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1961
+ *
1962
+ * Comment this to disable support for early data. If MBEDTLS_SSL_PROTO_TLS1_3
1963
+ * is not enabled, this option does not have any effect on the build.
1964
+ *
1965
+ * \note The maximum amount of early data can be set with
1966
+ * MBEDTLS_SSL_MAX_EARLY_DATA_SIZE.
1967
+ *
1968
+ */
1969
+ //#define MBEDTLS_SSL_EARLY_DATA
1970
+
1971
+ /**
1972
+ * \def MBEDTLS_SSL_PROTO_DTLS
1973
+ *
1974
+ * Enable support for DTLS (all available versions).
1975
+ *
1976
+ * Enable this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2.
1977
+ *
1978
+ * Requires: MBEDTLS_SSL_PROTO_TLS1_2
1979
+ *
1980
+ * Comment this macro to disable support for DTLS
1981
+ */
1982
+ #define MBEDTLS_SSL_PROTO_DTLS
1983
+
1984
+ /**
1985
+ * \def MBEDTLS_SSL_ALPN
1986
+ *
1987
+ * Enable support for RFC 7301 Application Layer Protocol Negotiation.
1988
+ *
1989
+ * Comment this macro to disable support for ALPN.
1990
+ */
1991
+ #define MBEDTLS_SSL_ALPN
1992
+
1993
+ /**
1994
+ * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY
1995
+ *
1996
+ * Enable support for the anti-replay mechanism in DTLS.
1997
+ *
1998
+ * Requires: MBEDTLS_SSL_TLS_C
1999
+ * MBEDTLS_SSL_PROTO_DTLS
2000
+ *
2001
+ * \warning Disabling this is often a security risk!
2002
+ * See mbedtls_ssl_conf_dtls_anti_replay() for details.
2003
+ *
2004
+ * Comment this to disable anti-replay in DTLS.
2005
+ */
2006
+ #define MBEDTLS_SSL_DTLS_ANTI_REPLAY
2007
+
2008
+ /**
2009
+ * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY
2010
+ *
2011
+ * Enable support for HelloVerifyRequest on DTLS servers.
2012
+ *
2013
+ * This feature is highly recommended to prevent DTLS servers being used as
2014
+ * amplifiers in DoS attacks against other hosts. It should always be enabled
2015
+ * unless you know for sure amplification cannot be a problem in the
2016
+ * environment in which your server operates.
2017
+ *
2018
+ * \warning Disabling this can be a security risk! (see above)
2019
+ *
2020
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
2021
+ *
2022
+ * Comment this to disable support for HelloVerifyRequest.
2023
+ */
2024
+ #define MBEDTLS_SSL_DTLS_HELLO_VERIFY
2025
+
2026
+ /**
2027
+ * \def MBEDTLS_SSL_DTLS_SRTP
2028
+ *
2029
+ * Enable support for negotiation of DTLS-SRTP (RFC 5764)
2030
+ * through the use_srtp extension.
2031
+ *
2032
+ * \note This feature provides the minimum functionality required
2033
+ * to negotiate the use of DTLS-SRTP and to allow the derivation of
2034
+ * the associated SRTP packet protection key material.
2035
+ * In particular, the SRTP packet protection itself, as well as the
2036
+ * demultiplexing of RTP and DTLS packets at the datagram layer
2037
+ * (see Section 5 of RFC 5764), are not handled by this feature.
2038
+ * Instead, after successful completion of a handshake negotiating
2039
+ * the use of DTLS-SRTP, the extended key exporter API
2040
+ * mbedtls_ssl_conf_export_keys_cb() should be used to implement
2041
+ * the key exporter described in Section 4.2 of RFC 5764 and RFC 5705
2042
+ * (this is implemented in the SSL example programs).
2043
+ * The resulting key should then be passed to an SRTP stack.
2044
+ *
2045
+ * Setting this option enables the runtime API
2046
+ * mbedtls_ssl_conf_dtls_srtp_protection_profiles()
2047
+ * through which the supported DTLS-SRTP protection
2048
+ * profiles can be configured. You must call this API at
2049
+ * runtime if you wish to negotiate the use of DTLS-SRTP.
2050
+ *
2051
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
2052
+ *
2053
+ * Uncomment this to enable support for use_srtp extension.
2054
+ */
2055
+ //#define MBEDTLS_SSL_DTLS_SRTP
2056
+
2057
+ /**
2058
+ * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
2059
+ *
2060
+ * Enable server-side support for clients that reconnect from the same port.
2061
+ *
2062
+ * Some clients unexpectedly close the connection and try to reconnect using the
2063
+ * same source port. This needs special support from the server to handle the
2064
+ * new connection securely, as described in section 4.2.8 of RFC 6347. This
2065
+ * flag enables that support.
2066
+ *
2067
+ * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY
2068
+ *
2069
+ * Comment this to disable support for clients reusing the source port.
2070
+ */
2071
+ #define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
2072
+
2073
+ /**
2074
+ * \def MBEDTLS_SSL_SESSION_TICKETS
2075
+ *
2076
+ * Enable support for RFC 5077 session tickets in SSL.
2077
+ * Client-side, provides full support for session tickets (maintenance of a
2078
+ * session store remains the responsibility of the application, though).
2079
+ * Server-side, you also need to provide callbacks for writing and parsing
2080
+ * tickets, including authenticated encryption and key management. Example
2081
+ * callbacks are provided by MBEDTLS_SSL_TICKET_C.
2082
+ *
2083
+ * Comment this macro to disable support for SSL session tickets
2084
+ */
2085
+ #define MBEDTLS_SSL_SESSION_TICKETS
2086
+
2087
+ /**
2088
+ * \def MBEDTLS_SSL_SERVER_NAME_INDICATION
2089
+ *
2090
+ * Enable support for RFC 6066 server name indication (SNI) in SSL.
2091
+ *
2092
+ * Requires: MBEDTLS_X509_CRT_PARSE_C
2093
+ *
2094
+ * Comment this macro to disable support for server name indication in SSL
2095
+ */
2096
+ #define MBEDTLS_SSL_SERVER_NAME_INDICATION
2097
+
2098
+ /**
2099
+ * \def MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
2100
+ *
2101
+ * When this option is enabled, the SSL buffer will be resized automatically
2102
+ * based on the negotiated maximum fragment length in each direction.
2103
+ *
2104
+ * Requires: MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
2105
+ */
2106
+ //#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
2107
+
2108
+ /**
2109
+ * \def MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
2110
+ *
2111
+ * Enable testing of the constant-flow nature of some sensitive functions with
2112
+ * clang's MemorySanitizer. This causes some existing tests to also test
2113
+ * this non-functional property of the code under test.
2114
+ *
2115
+ * This setting requires compiling with clang -fsanitize=memory. The test
2116
+ * suites can then be run normally.
2117
+ *
2118
+ * \warning This macro is only used for extended testing; it is not considered
2119
+ * part of the library's API, so it may change or disappear at any time.
2120
+ *
2121
+ * Uncomment to enable testing of the constant-flow nature of selected code.
2122
+ */
2123
+ //#define MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
2124
+
2125
+ /**
2126
+ * \def MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
2127
+ *
2128
+ * Enable testing of the constant-flow nature of some sensitive functions with
2129
+ * valgrind's memcheck tool. This causes some existing tests to also test
2130
+ * this non-functional property of the code under test.
2131
+ *
2132
+ * This setting requires valgrind headers for building, and is only useful for
2133
+ * testing if the tests suites are run with valgrind's memcheck. This can be
2134
+ * done for an individual test suite with 'valgrind ./test_suite_xxx', or when
2135
+ * using CMake, this can be done for all test suites with 'make memcheck'.
2136
+ *
2137
+ * \warning This macro is only used for extended testing; it is not considered
2138
+ * part of the library's API, so it may change or disappear at any time.
2139
+ *
2140
+ * Uncomment to enable testing of the constant-flow nature of selected code.
2141
+ */
2142
+ //#define MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
2143
+
2144
+ /**
2145
+ * \def MBEDTLS_TEST_HOOKS
2146
+ *
2147
+ * Enable features for invasive testing such as introspection functions and
2148
+ * hooks for fault injection. This enables additional unit tests.
2149
+ *
2150
+ * Merely enabling this feature should not change the behavior of the product.
2151
+ * It only adds new code, and new branching points where the default behavior
2152
+ * is the same as when this feature is disabled.
2153
+ * However, this feature increases the attack surface: there is an added
2154
+ * risk of vulnerabilities, and more gadgets that can make exploits easier.
2155
+ * Therefore this feature must never be enabled in production.
2156
+ *
2157
+ * See `docs/architecture/testing/mbed-crypto-invasive-testing.md` for more
2158
+ * information.
2159
+ *
2160
+ * Uncomment to enable invasive tests.
2161
+ */
2162
+ //#define MBEDTLS_TEST_HOOKS
2163
+
2164
+ /**
2165
+ * \def MBEDTLS_THREADING_ALT
2166
+ *
2167
+ * Provide your own alternate implementation of threading primitives
2168
+ * for mutexes. If you enable this option:
2169
+ *
2170
+ * - Provide a header file `"threading_alt.h"`, defining the
2171
+ * type `mbedtls_threading_mutex_t` of mutex objects.
2172
+ *
2173
+ * - Call the function mbedtls_threading_set_alt() in your application
2174
+ * before calling any other library function (in particular before
2175
+ * calling psa_crypto_init(), performing an asymmetric cryptography
2176
+ * operation, or starting a TLS connection).
2177
+ *
2178
+ * See mbedtls/threading.h for more details, especially the documentation
2179
+ * of mbedtls_threading_set_alt().
2180
+ *
2181
+ * Requires: MBEDTLS_THREADING_C
2182
+ *
2183
+ * Uncomment this to allow your own alternate threading implementation.
2184
+ */
2185
+ //#define MBEDTLS_THREADING_ALT
2186
+
2187
+ /**
2188
+ * \def MBEDTLS_THREADING_PTHREAD
2189
+ *
2190
+ * Enable the pthread wrapper layer for the threading layer.
2191
+ *
2192
+ * Requires: MBEDTLS_THREADING_C
2193
+ *
2194
+ * Uncomment this to enable pthread mutexes.
2195
+ */
2196
+ //#define MBEDTLS_THREADING_PTHREAD
2197
+
2198
+ /**
2199
+ * \def MBEDTLS_USE_PSA_CRYPTO
2200
+ *
2201
+ * Make the X.509 and TLS libraries use PSA for cryptographic operations as
2202
+ * much as possible, and enable new APIs for using keys handled by PSA Crypto.
2203
+ *
2204
+ * \note Development of this option is currently in progress, and parts of Mbed
2205
+ * TLS's X.509 and TLS modules are not ported to PSA yet. However, these parts
2206
+ * will still continue to work as usual, so enabling this option should not
2207
+ * break backwards compatibility.
2208
+ *
2209
+ * \warning If you enable this option, you need to call `psa_crypto_init()`
2210
+ * before calling any function from the SSL/TLS, X.509 or PK modules, except
2211
+ * for the various mbedtls_xxx_init() functions which can be called at any time.
2212
+ *
2213
+ * \warning In multithreaded applications, you must also enable
2214
+ * #MBEDTLS_THREADING_C, unless only one thread ever calls PSA functions
2215
+ * (`psa_xxx()`), including indirect calls through SSL/TLS, X.509 or PK.
2216
+ *
2217
+ * \note An important and desirable effect of this option is that it allows
2218
+ * PK, X.509 and TLS to take advantage of PSA drivers. For example, enabling
2219
+ * this option is what allows use of drivers for ECDSA, ECDH and EC J-PAKE in
2220
+ * those modules. However, note that even with this option disabled, some code
2221
+ * in PK, X.509, TLS or the crypto library might still use PSA drivers, if it
2222
+ * can determine it's safe to do so; currently that's the case for hashes.
2223
+ *
2224
+ * \note See docs/use-psa-crypto.md for a complete description this option.
2225
+ *
2226
+ * Requires: MBEDTLS_PSA_CRYPTO_C.
2227
+ *
2228
+ * Uncomment this to enable internal use of PSA Crypto and new associated APIs.
2229
+ */
2230
+ //#define MBEDTLS_USE_PSA_CRYPTO
2231
+
2232
+ /**
2233
+ * \def MBEDTLS_PSA_CRYPTO_CONFIG
2234
+ *
2235
+ * This setting allows support for cryptographic mechanisms through the PSA
2236
+ * API to be configured separately from support through the mbedtls API.
2237
+ *
2238
+ * When this option is disabled, the PSA API exposes the cryptographic
2239
+ * mechanisms that can be implemented on top of the `mbedtls_xxx` API
2240
+ * configured with `MBEDTLS_XXX` symbols.
2241
+ *
2242
+ * When this option is enabled, the PSA API exposes the cryptographic
2243
+ * mechanisms requested by the `PSA_WANT_XXX` symbols defined in
2244
+ * include/psa/crypto_config.h. The corresponding `MBEDTLS_XXX` settings are
2245
+ * automatically enabled if required (i.e. if no PSA driver provides the
2246
+ * mechanism). You may still freely enable additional `MBEDTLS_XXX` symbols
2247
+ * in mbedtls_config.h.
2248
+ *
2249
+ * If the symbol #MBEDTLS_PSA_CRYPTO_CONFIG_FILE is defined, it specifies
2250
+ * an alternative header to include instead of include/psa/crypto_config.h.
2251
+ *
2252
+ * \warning This option is experimental, in that the set of `PSA_WANT_XXX`
2253
+ * symbols is not completely finalized yet, and the configuration
2254
+ * tooling is not ideally adapted to having two separate configuration
2255
+ * files.
2256
+ * Future minor releases of Mbed TLS may make minor changes to those
2257
+ * symbols, but we will endeavor to provide a transition path.
2258
+ * Nonetheless, this option is considered mature enough to use in
2259
+ * production, as long as you accept that you may need to make
2260
+ * minor changes to psa/crypto_config.h when upgrading Mbed TLS.
2261
+ */
2262
+ //#define MBEDTLS_PSA_CRYPTO_CONFIG
2263
+
2264
+ /**
2265
+ * \def MBEDTLS_VERSION_FEATURES
2266
+ *
2267
+ * Allow run-time checking of compile-time enabled features. Thus allowing users
2268
+ * to check at run-time if the library is for instance compiled with threading
2269
+ * support via mbedtls_version_check_feature().
2270
+ *
2271
+ * Requires: MBEDTLS_VERSION_C
2272
+ *
2273
+ * Comment this to disable run-time checking and save ROM space
2274
+ */
2275
+ #define MBEDTLS_VERSION_FEATURES
2276
+
2277
+ /**
2278
+ * \def MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2279
+ *
2280
+ * If set, this enables the X.509 API `mbedtls_x509_crt_verify_with_ca_cb()`
2281
+ * and the SSL API `mbedtls_ssl_conf_ca_cb()` which allow users to configure
2282
+ * the set of trusted certificates through a callback instead of a linked
2283
+ * list.
2284
+ *
2285
+ * This is useful for example in environments where a large number of trusted
2286
+ * certificates is present and storing them in a linked list isn't efficient
2287
+ * enough, or when the set of trusted certificates changes frequently.
2288
+ *
2289
+ * See the documentation of `mbedtls_x509_crt_verify_with_ca_cb()` and
2290
+ * `mbedtls_ssl_conf_ca_cb()` for more information.
2291
+ *
2292
+ * Requires: MBEDTLS_X509_CRT_PARSE_C
2293
+ *
2294
+ * Uncomment to enable trusted certificate callbacks.
2295
+ */
2296
+ //#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2297
+
2298
+ /**
2299
+ * \def MBEDTLS_X509_REMOVE_INFO
2300
+ *
2301
+ * Disable mbedtls_x509_*_info() and related APIs.
2302
+ *
2303
+ * Uncomment to omit mbedtls_x509_*_info(), as well as mbedtls_debug_print_crt()
2304
+ * and other functions/constants only used by these functions, thus reducing
2305
+ * the code footprint by several KB.
2306
+ */
2307
+ //#define MBEDTLS_X509_REMOVE_INFO
2308
+
2309
+ /**
2310
+ * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT
2311
+ *
2312
+ * Enable parsing and verification of X.509 certificates, CRLs and CSRS
2313
+ * signed with RSASSA-PSS (aka PKCS#1 v2.1).
2314
+ *
2315
+ * Requires: MBEDTLS_PKCS1_V21
2316
+ *
2317
+ * Comment this macro to disallow using RSASSA-PSS in certificates.
2318
+ */
2319
+ #define MBEDTLS_X509_RSASSA_PSS_SUPPORT
2320
+ /** \} name SECTION: Mbed TLS feature support */
2321
+
2322
+ /**
2323
+ * \name SECTION: Mbed TLS modules
2324
+ *
2325
+ * This section enables or disables entire modules in Mbed TLS
2326
+ * \{
2327
+ */
2328
+
2329
+ /**
2330
+ * \def MBEDTLS_AESNI_C
2331
+ *
2332
+ * Enable AES-NI support on x86-64 or x86-32.
2333
+ *
2334
+ * \note AESNI is only supported with certain compilers and target options:
2335
+ * - Visual Studio: supported
2336
+ * - GCC, x86-64, target not explicitly supporting AESNI:
2337
+ * requires MBEDTLS_HAVE_ASM.
2338
+ * - GCC, x86-32, target not explicitly supporting AESNI:
2339
+ * not supported.
2340
+ * - GCC, x86-64 or x86-32, target supporting AESNI: supported.
2341
+ * For this assembly-less implementation, you must currently compile
2342
+ * `library/aesni.c` and `library/aes.c` with machine options to enable
2343
+ * SSE2 and AESNI instructions: `gcc -msse2 -maes -mpclmul` or
2344
+ * `clang -maes -mpclmul`.
2345
+ * - Non-x86 targets: this option is silently ignored.
2346
+ * - Other compilers: this option is silently ignored.
2347
+ *
2348
+ * \note
2349
+ * Above, "GCC" includes compatible compilers such as Clang.
2350
+ * The limitations on target support are likely to be relaxed in the future.
2351
+ *
2352
+ * Module: library/aesni.c
2353
+ * Caller: library/aes.c
2354
+ *
2355
+ * Requires: MBEDTLS_HAVE_ASM (on some platforms, see note)
2356
+ *
2357
+ * This modules adds support for the AES-NI instructions on x86.
2358
+ */
2359
+ #define MBEDTLS_AESNI_C
2360
+
2361
+ /**
2362
+ * \def MBEDTLS_AESCE_C
2363
+ *
2364
+ * Enable AES cryptographic extension support on Armv8.
2365
+ *
2366
+ * Module: library/aesce.c
2367
+ * Caller: library/aes.c
2368
+ *
2369
+ * Requires: MBEDTLS_AES_C
2370
+ *
2371
+ * \warning Runtime detection only works on Linux. For non-Linux operating
2372
+ * system, Armv8-A Cryptographic Extensions must be supported by
2373
+ * the CPU when this option is enabled.
2374
+ *
2375
+ * \note Minimum compiler versions for this feature when targeting aarch64
2376
+ * are Clang 4.0; armclang 6.6; GCC 6.0; or MSVC 2019 version 16.11.2.
2377
+ * Minimum compiler versions for this feature when targeting 32-bit
2378
+ * Arm or Thumb are Clang 11.0; armclang 6.20; or GCC 6.0.
2379
+ *
2380
+ * \note \c CFLAGS must be set to a minimum of \c -march=armv8-a+crypto for
2381
+ * armclang <= 6.9
2382
+ *
2383
+ * This module adds support for the AES Armv8-A Cryptographic Extensions on Armv8 systems.
2384
+ */
2385
+ #define MBEDTLS_AESCE_C
2386
+
2387
+ /**
2388
+ * \def MBEDTLS_AES_C
2389
+ *
2390
+ * Enable the AES block cipher.
2391
+ *
2392
+ * Module: library/aes.c
2393
+ * Caller: library/cipher.c
2394
+ * library/pem.c
2395
+ * library/ctr_drbg.c
2396
+ *
2397
+ * This module enables the following ciphersuites (if other requisites are
2398
+ * enabled as well):
2399
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
2400
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
2401
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
2402
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
2403
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
2404
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
2405
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
2406
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
2407
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
2408
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
2409
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
2410
+ * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
2411
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
2412
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
2413
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
2414
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
2415
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
2416
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
2417
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
2418
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
2419
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
2420
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
2421
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
2422
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
2423
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
2424
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
2425
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
2426
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
2427
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
2428
+ * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
2429
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
2430
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
2431
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
2432
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
2433
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
2434
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
2435
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
2436
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
2437
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
2438
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
2439
+ * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384
2440
+ * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
2441
+ * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA
2442
+ * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256
2443
+ * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256
2444
+ * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA
2445
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
2446
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
2447
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA
2448
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
2449
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
2450
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA
2451
+ * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
2452
+ * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
2453
+ * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
2454
+ * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
2455
+ * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
2456
+ * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
2457
+ *
2458
+ * PEM_PARSE uses AES for decrypting encrypted keys.
2459
+ */
2460
+ #define MBEDTLS_AES_C
2461
+
2462
+ /**
2463
+ * \def MBEDTLS_ASN1_PARSE_C
2464
+ *
2465
+ * Enable the generic ASN1 parser.
2466
+ *
2467
+ * Module: library/asn1.c
2468
+ * Caller: library/x509.c
2469
+ * library/dhm.c
2470
+ * library/pkcs12.c
2471
+ * library/pkcs5.c
2472
+ * library/pkparse.c
2473
+ */
2474
+ #define MBEDTLS_ASN1_PARSE_C
2475
+
2476
+ /**
2477
+ * \def MBEDTLS_ASN1_WRITE_C
2478
+ *
2479
+ * Enable the generic ASN1 writer.
2480
+ *
2481
+ * Module: library/asn1write.c
2482
+ * Caller: library/ecdsa.c
2483
+ * library/pkwrite.c
2484
+ * library/x509_create.c
2485
+ * library/x509write_crt.c
2486
+ * library/x509write_csr.c
2487
+ */
2488
+ #define MBEDTLS_ASN1_WRITE_C
2489
+
2490
+ /**
2491
+ * \def MBEDTLS_BASE64_C
2492
+ *
2493
+ * Enable the Base64 module.
2494
+ *
2495
+ * Module: library/base64.c
2496
+ * Caller: library/pem.c
2497
+ *
2498
+ * This module is required for PEM support (required by X.509).
2499
+ */
2500
+ #define MBEDTLS_BASE64_C
2501
+
2502
+ /**
2503
+ * \def MBEDTLS_BLOCK_CIPHER_NO_DECRYPT
2504
+ *
2505
+ * Remove decryption operation for AES, ARIA and Camellia block cipher.
2506
+ *
2507
+ * \note This feature is incompatible with insecure block cipher,
2508
+ * MBEDTLS_DES_C, and cipher modes which always require decryption
2509
+ * operation, MBEDTLS_CIPHER_MODE_CBC, MBEDTLS_CIPHER_MODE_XTS and
2510
+ * MBEDTLS_NIST_KW_C. When #MBEDTLS_PSA_CRYPTO_CONFIG is enabled,
2511
+ * this feature is incompatible with following supported PSA equivalence,
2512
+ * PSA_WANT_ALG_ECB_NO_PADDING, PSA_WANT_ALG_CBC_NO_PADDING,
2513
+ * PSA_WANT_ALG_CBC_PKCS7 and PSA_WANT_KEY_TYPE_DES.
2514
+ *
2515
+ * Module: library/aes.c
2516
+ * library/aesce.c
2517
+ * library/aesni.c
2518
+ * library/aria.c
2519
+ * library/camellia.c
2520
+ * library/cipher.c
2521
+ */
2522
+ //#define MBEDTLS_BLOCK_CIPHER_NO_DECRYPT
2523
+
2524
+ /**
2525
+ * \def MBEDTLS_BIGNUM_C
2526
+ *
2527
+ * Enable the multi-precision integer library.
2528
+ *
2529
+ * Module: library/bignum.c
2530
+ * library/bignum_core.c
2531
+ * library/bignum_mod.c
2532
+ * library/bignum_mod_raw.c
2533
+ * Caller: library/dhm.c
2534
+ * library/ecp.c
2535
+ * library/ecdsa.c
2536
+ * library/rsa.c
2537
+ * library/rsa_alt_helpers.c
2538
+ * library/ssl_tls.c
2539
+ *
2540
+ * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.
2541
+ */
2542
+ #define MBEDTLS_BIGNUM_C
2543
+
2544
+ /**
2545
+ * \def MBEDTLS_CAMELLIA_C
2546
+ *
2547
+ * Enable the Camellia block cipher.
2548
+ *
2549
+ * Module: library/camellia.c
2550
+ * Caller: library/cipher.c
2551
+ *
2552
+ * This module enables the following ciphersuites (if other requisites are
2553
+ * enabled as well):
2554
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
2555
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
2556
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
2557
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
2558
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
2559
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
2560
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
2561
+ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
2562
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
2563
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
2564
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
2565
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
2566
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
2567
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
2568
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
2569
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
2570
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
2571
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
2572
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
2573
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
2574
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
2575
+ * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
2576
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
2577
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
2578
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
2579
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
2580
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
2581
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
2582
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
2583
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
2584
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
2585
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
2586
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
2587
+ * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
2588
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
2589
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
2590
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
2591
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
2592
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
2593
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
2594
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
2595
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
2596
+ */
2597
+ #define MBEDTLS_CAMELLIA_C
2598
+
2599
+ /**
2600
+ * \def MBEDTLS_ARIA_C
2601
+ *
2602
+ * Enable the ARIA block cipher.
2603
+ *
2604
+ * Module: library/aria.c
2605
+ * Caller: library/cipher.c
2606
+ *
2607
+ * This module enables the following ciphersuites (if other requisites are
2608
+ * enabled as well):
2609
+ *
2610
+ * MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256
2611
+ * MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384
2612
+ * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256
2613
+ * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384
2614
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256
2615
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384
2616
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256
2617
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384
2618
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256
2619
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384
2620
+ * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256
2621
+ * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384
2622
+ * MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256
2623
+ * MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384
2624
+ * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256
2625
+ * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384
2626
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256
2627
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384
2628
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256
2629
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384
2630
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256
2631
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384
2632
+ * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256
2633
+ * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384
2634
+ * MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256
2635
+ * MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384
2636
+ * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256
2637
+ * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384
2638
+ * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256
2639
+ * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384
2640
+ * MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256
2641
+ * MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384
2642
+ * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256
2643
+ * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384
2644
+ * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256
2645
+ * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384
2646
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256
2647
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384
2648
+ */
2649
+ #define MBEDTLS_ARIA_C
2650
+
2651
+ /**
2652
+ * \def MBEDTLS_CCM_C
2653
+ *
2654
+ * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.
2655
+ *
2656
+ * Module: library/ccm.c
2657
+ *
2658
+ * Requires: MBEDTLS_CIPHER_C, MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C or
2659
+ * MBEDTLS_ARIA_C
2660
+ *
2661
+ * This module enables the AES-CCM ciphersuites, if other requisites are
2662
+ * enabled as well.
2663
+ */
2664
+ #define MBEDTLS_CCM_C
2665
+
2666
+ /**
2667
+ * \def MBEDTLS_CHACHA20_C
2668
+ *
2669
+ * Enable the ChaCha20 stream cipher.
2670
+ *
2671
+ * Module: library/chacha20.c
2672
+ */
2673
+ #define MBEDTLS_CHACHA20_C
2674
+
2675
+ /**
2676
+ * \def MBEDTLS_CHACHAPOLY_C
2677
+ *
2678
+ * Enable the ChaCha20-Poly1305 AEAD algorithm.
2679
+ *
2680
+ * Module: library/chachapoly.c
2681
+ *
2682
+ * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C
2683
+ */
2684
+ #define MBEDTLS_CHACHAPOLY_C
2685
+
2686
+ /**
2687
+ * \def MBEDTLS_CIPHER_C
2688
+ *
2689
+ * Enable the generic cipher layer.
2690
+ *
2691
+ * Module: library/cipher.c
2692
+ * Caller: library/ccm.c
2693
+ * library/cmac.c
2694
+ * library/gcm.c
2695
+ * library/nist_kw.c
2696
+ * library/pkcs12.c
2697
+ * library/pkcs5.c
2698
+ * library/psa_crypto_aead.c
2699
+ * library/psa_crypto_mac.c
2700
+ * library/ssl_ciphersuites.c
2701
+ * library/ssl_msg.c
2702
+ * library/ssl_ticket.c (unless MBEDTLS_USE_PSA_CRYPTO is enabled)
2703
+ * Auto-enabled by: MBEDTLS_PSA_CRYPTO_C depending on which ciphers are enabled
2704
+ * (see the documentation of that option for details).
2705
+ *
2706
+ * Uncomment to enable generic cipher wrappers.
2707
+ */
2708
+ #define MBEDTLS_CIPHER_C
2709
+
2710
+ /**
2711
+ * \def MBEDTLS_CMAC_C
2712
+ *
2713
+ * Enable the CMAC (Cipher-based Message Authentication Code) mode for block
2714
+ * ciphers.
2715
+ *
2716
+ * \note When #MBEDTLS_CMAC_ALT is active, meaning that the underlying
2717
+ * implementation of the CMAC algorithm is provided by an alternate
2718
+ * implementation, that alternate implementation may opt to not support
2719
+ * AES-192 or 3DES as underlying block ciphers for the CMAC operation.
2720
+ *
2721
+ * Module: library/cmac.c
2722
+ *
2723
+ * Requires: MBEDTLS_CIPHER_C, MBEDTLS_AES_C or MBEDTLS_DES_C
2724
+ *
2725
+ */
2726
+ #define MBEDTLS_CMAC_C
2727
+
2728
+ /**
2729
+ * \def MBEDTLS_CTR_DRBG_C
2730
+ *
2731
+ * Enable the CTR_DRBG AES-based random generator.
2732
+ * The CTR_DRBG generator uses AES-256 by default.
2733
+ * To use AES-128 instead, enable \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY above.
2734
+ *
2735
+ * AES support can either be achieved through builtin (MBEDTLS_AES_C) or PSA.
2736
+ * Builtin is the default option when MBEDTLS_AES_C is defined otherwise PSA
2737
+ * is used.
2738
+ *
2739
+ * \warning When using PSA, the user should call `psa_crypto_init()` before
2740
+ * using any CTR_DRBG operation (except `mbedtls_ctr_drbg_init()`).
2741
+ *
2742
+ * \note AES-128 will be used if \c MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH is set.
2743
+ *
2744
+ * \note To achieve a 256-bit security strength with CTR_DRBG,
2745
+ * you must use AES-256 *and* use sufficient entropy.
2746
+ * See ctr_drbg.h for more details.
2747
+ *
2748
+ * Module: library/ctr_drbg.c
2749
+ * Caller:
2750
+ *
2751
+ * Requires: MBEDTLS_AES_C or
2752
+ * (PSA_WANT_KEY_TYPE_AES and PSA_WANT_ALG_ECB_NO_PADDING and
2753
+ * MBEDTLS_PSA_CRYPTO_C)
2754
+ *
2755
+ * This module provides the CTR_DRBG AES random number generator.
2756
+ */
2757
+ #define MBEDTLS_CTR_DRBG_C
2758
+
2759
+ /**
2760
+ * \def MBEDTLS_DEBUG_C
2761
+ *
2762
+ * Enable the debug functions.
2763
+ *
2764
+ * Module: library/debug.c
2765
+ * Caller: library/ssl_msg.c
2766
+ * library/ssl_tls.c
2767
+ * library/ssl_tls12_*.c
2768
+ * library/ssl_tls13_*.c
2769
+ *
2770
+ * This module provides debugging functions.
2771
+ */
2772
+ #define MBEDTLS_DEBUG_C
2773
+
2774
+ /**
2775
+ * \def MBEDTLS_DES_C
2776
+ *
2777
+ * Enable the DES block cipher.
2778
+ *
2779
+ * Module: library/des.c
2780
+ * Caller: library/pem.c
2781
+ * library/cipher.c
2782
+ *
2783
+ * PEM_PARSE uses DES/3DES for decrypting encrypted keys.
2784
+ *
2785
+ * \warning DES/3DES are considered weak ciphers and their use constitutes a
2786
+ * security risk. We recommend considering stronger ciphers instead.
2787
+ */
2788
+ #define MBEDTLS_DES_C
2789
+
2790
+ /**
2791
+ * \def MBEDTLS_DHM_C
2792
+ *
2793
+ * Enable the Diffie-Hellman-Merkle module.
2794
+ *
2795
+ * Module: library/dhm.c
2796
+ * Caller: library/ssl_tls.c
2797
+ * library/ssl*_client.c
2798
+ * library/ssl*_server.c
2799
+ *
2800
+ * This module is used by the following key exchanges:
2801
+ * DHE-RSA, DHE-PSK
2802
+ *
2803
+ * \warning Using DHE constitutes a security risk as it
2804
+ * is not possible to validate custom DH parameters.
2805
+ * If possible, it is recommended users should consider
2806
+ * preferring other methods of key exchange.
2807
+ * See dhm.h for more details.
2808
+ *
2809
+ */
2810
+ #define MBEDTLS_DHM_C
2811
+
2812
+ /**
2813
+ * \def MBEDTLS_ECDH_C
2814
+ *
2815
+ * Enable the elliptic curve Diffie-Hellman library.
2816
+ *
2817
+ * Module: library/ecdh.c
2818
+ * Caller: library/psa_crypto.c
2819
+ * library/ssl_tls.c
2820
+ * library/ssl*_client.c
2821
+ * library/ssl*_server.c
2822
+ *
2823
+ * This module is used by the following key exchanges:
2824
+ * ECDHE-ECDSA, ECDHE-RSA, DHE-PSK
2825
+ *
2826
+ * Requires: MBEDTLS_ECP_C
2827
+ */
2828
+ #define MBEDTLS_ECDH_C
2829
+
2830
+ /**
2831
+ * \def MBEDTLS_ECDSA_C
2832
+ *
2833
+ * Enable the elliptic curve DSA library.
2834
+ *
2835
+ * Module: library/ecdsa.c
2836
+ * Caller:
2837
+ *
2838
+ * This module is used by the following key exchanges:
2839
+ * ECDHE-ECDSA
2840
+ *
2841
+ * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C,
2842
+ * and at least one MBEDTLS_ECP_DP_XXX_ENABLED for a
2843
+ * short Weierstrass curve.
2844
+ */
2845
+ #define MBEDTLS_ECDSA_C
2846
+
2847
+ /**
2848
+ * \def MBEDTLS_ECJPAKE_C
2849
+ *
2850
+ * Enable the elliptic curve J-PAKE library.
2851
+ *
2852
+ * \note EC J-PAKE support is based on the Thread v1.0.0 specification.
2853
+ * It has not been reviewed for compliance with newer standards such as
2854
+ * Thread v1.1 or RFC 8236.
2855
+ *
2856
+ * Module: library/ecjpake.c
2857
+ * Caller:
2858
+ *
2859
+ * This module is used by the following key exchanges:
2860
+ * ECJPAKE
2861
+ *
2862
+ * Requires: MBEDTLS_ECP_C and either MBEDTLS_MD_C or MBEDTLS_PSA_CRYPTO_C
2863
+ *
2864
+ * \warning If using a hash that is only provided by PSA drivers, you must
2865
+ * call psa_crypto_init() before doing any EC J-PAKE operations.
2866
+ */
2867
+ #define MBEDTLS_ECJPAKE_C
2868
+
2869
+ /**
2870
+ * \def MBEDTLS_ECP_C
2871
+ *
2872
+ * Enable the elliptic curve over GF(p) library.
2873
+ *
2874
+ * Module: library/ecp.c
2875
+ * Caller: library/ecdh.c
2876
+ * library/ecdsa.c
2877
+ * library/ecjpake.c
2878
+ *
2879
+ * Requires: MBEDTLS_BIGNUM_C and at least one MBEDTLS_ECP_DP_XXX_ENABLED
2880
+ */
2881
+ #define MBEDTLS_ECP_C
2882
+
2883
+ /**
2884
+ * \def MBEDTLS_ENTROPY_C
2885
+ *
2886
+ * Enable the platform-specific entropy code.
2887
+ *
2888
+ * Module: library/entropy.c
2889
+ * Caller:
2890
+ *
2891
+ * Requires: MBEDTLS_SHA512_C or MBEDTLS_SHA256_C
2892
+ *
2893
+ * This module provides a generic entropy pool
2894
+ */
2895
+ #define MBEDTLS_ENTROPY_C
2896
+
2897
+ /**
2898
+ * \def MBEDTLS_ERROR_C
2899
+ *
2900
+ * Enable error code to error string conversion.
2901
+ *
2902
+ * Module: library/error.c
2903
+ * Caller:
2904
+ *
2905
+ * This module enables mbedtls_strerror().
2906
+ */
2907
+ #define MBEDTLS_ERROR_C
2908
+
2909
+ /**
2910
+ * \def MBEDTLS_GCM_C
2911
+ *
2912
+ * Enable the Galois/Counter Mode (GCM).
2913
+ *
2914
+ * Module: library/gcm.c
2915
+ *
2916
+ * Requires: MBEDTLS_CIPHER_C, MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C or
2917
+ * MBEDTLS_ARIA_C
2918
+ *
2919
+ * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other
2920
+ * requisites are enabled as well.
2921
+ */
2922
+ #define MBEDTLS_GCM_C
2923
+
2924
+ /**
2925
+ * \def MBEDTLS_GCM_LARGE_TABLE
2926
+ *
2927
+ * Enable large pre-computed tables for Galois/Counter Mode (GCM).
2928
+ * Can significantly increase throughput on systems without GCM hardware
2929
+ * acceleration (e.g., AESNI, AESCE).
2930
+ *
2931
+ * The mbedtls_gcm_context size will increase by 3840 bytes.
2932
+ * The code size will increase by roughly 344 bytes.
2933
+ *
2934
+ * Module: library/gcm.c
2935
+ *
2936
+ * Requires: MBEDTLS_GCM_C
2937
+ */
2938
+ //#define MBEDTLS_GCM_LARGE_TABLE
2939
+
2940
+ /**
2941
+ * \def MBEDTLS_HKDF_C
2942
+ *
2943
+ * Enable the HKDF algorithm (RFC 5869).
2944
+ *
2945
+ * Module: library/hkdf.c
2946
+ * Caller:
2947
+ *
2948
+ * Requires: MBEDTLS_MD_C
2949
+ *
2950
+ * This module adds support for the Hashed Message Authentication Code
2951
+ * (HMAC)-based key derivation function (HKDF).
2952
+ */
2953
+ #define MBEDTLS_HKDF_C
2954
+
2955
+ /**
2956
+ * \def MBEDTLS_HMAC_DRBG_C
2957
+ *
2958
+ * Enable the HMAC_DRBG random generator.
2959
+ *
2960
+ * Module: library/hmac_drbg.c
2961
+ * Caller:
2962
+ *
2963
+ * Requires: MBEDTLS_MD_C
2964
+ *
2965
+ * Uncomment to enable the HMAC_DRBG random number generator.
2966
+ */
2967
+ #define MBEDTLS_HMAC_DRBG_C
2968
+
2969
+ /**
2970
+ * \def MBEDTLS_LMS_C
2971
+ *
2972
+ * Enable the LMS stateful-hash asymmetric signature algorithm.
2973
+ *
2974
+ * Module: library/lms.c
2975
+ * Caller:
2976
+ *
2977
+ * Requires: MBEDTLS_PSA_CRYPTO_C
2978
+ *
2979
+ * Uncomment to enable the LMS verification algorithm and public key operations.
2980
+ */
2981
+ #define MBEDTLS_LMS_C
2982
+
2983
+ /**
2984
+ * \def MBEDTLS_LMS_PRIVATE
2985
+ *
2986
+ * Enable LMS private-key operations and signing code. Functions enabled by this
2987
+ * option are experimental, and should not be used in production.
2988
+ *
2989
+ * Requires: MBEDTLS_LMS_C
2990
+ *
2991
+ * Uncomment to enable the LMS signature algorithm and private key operations.
2992
+ */
2993
+ //#define MBEDTLS_LMS_PRIVATE
2994
+
2995
+ /**
2996
+ * \def MBEDTLS_NIST_KW_C
2997
+ *
2998
+ * Enable the Key Wrapping mode for 128-bit block ciphers,
2999
+ * as defined in NIST SP 800-38F. Only KW and KWP modes
3000
+ * are supported. At the moment, only AES is approved by NIST.
3001
+ *
3002
+ * Module: library/nist_kw.c
3003
+ *
3004
+ * Requires: MBEDTLS_AES_C and MBEDTLS_CIPHER_C
3005
+ */
3006
+ #define MBEDTLS_NIST_KW_C
3007
+
3008
+ /**
3009
+ * \def MBEDTLS_MD_C
3010
+ *
3011
+ * Enable the generic layer for message digest (hashing) and HMAC.
3012
+ *
3013
+ * Requires: one of: MBEDTLS_MD5_C, MBEDTLS_RIPEMD160_C, MBEDTLS_SHA1_C,
3014
+ * MBEDTLS_SHA224_C, MBEDTLS_SHA256_C, MBEDTLS_SHA384_C,
3015
+ * MBEDTLS_SHA512_C, or MBEDTLS_PSA_CRYPTO_C with at least
3016
+ * one hash.
3017
+ * Module: library/md.c
3018
+ * Caller: library/constant_time.c
3019
+ * library/ecdsa.c
3020
+ * library/ecjpake.c
3021
+ * library/hkdf.c
3022
+ * library/hmac_drbg.c
3023
+ * library/pk.c
3024
+ * library/pkcs5.c
3025
+ * library/pkcs12.c
3026
+ * library/psa_crypto_ecp.c
3027
+ * library/psa_crypto_rsa.c
3028
+ * library/rsa.c
3029
+ * library/ssl_cookie.c
3030
+ * library/ssl_msg.c
3031
+ * library/ssl_tls.c
3032
+ * library/x509.c
3033
+ * library/x509_crt.c
3034
+ * library/x509write_crt.c
3035
+ * library/x509write_csr.c
3036
+ *
3037
+ * Uncomment to enable generic message digest wrappers.
3038
+ */
3039
+ #define MBEDTLS_MD_C
3040
+
3041
+ /**
3042
+ * \def MBEDTLS_MD5_C
3043
+ *
3044
+ * Enable the MD5 hash algorithm.
3045
+ *
3046
+ * Module: library/md5.c
3047
+ * Caller: library/md.c
3048
+ * library/pem.c
3049
+ * library/ssl_tls.c
3050
+ *
3051
+ * This module is required for TLS 1.2 depending on the handshake parameters.
3052
+ * Further, it is used for checking MD5-signed certificates, and for PBKDF1
3053
+ * when decrypting PEM-encoded encrypted keys.
3054
+ *
3055
+ * \warning MD5 is considered a weak message digest and its use constitutes a
3056
+ * security risk. If possible, we recommend avoiding dependencies on
3057
+ * it, and considering stronger message digests instead.
3058
+ *
3059
+ */
3060
+ #define MBEDTLS_MD5_C
3061
+
3062
+ /**
3063
+ * \def MBEDTLS_MEMORY_BUFFER_ALLOC_C
3064
+ *
3065
+ * Enable the buffer allocator implementation that makes use of a (stack)
3066
+ * based buffer to 'allocate' dynamic memory. (replaces calloc() and free()
3067
+ * calls)
3068
+ *
3069
+ * Module: library/memory_buffer_alloc.c
3070
+ *
3071
+ * Requires: MBEDTLS_PLATFORM_C
3072
+ * MBEDTLS_PLATFORM_MEMORY (to use it within Mbed TLS)
3073
+ *
3074
+ * Enable this module to enable the buffer memory allocator.
3075
+ */
3076
+ //#define MBEDTLS_MEMORY_BUFFER_ALLOC_C
3077
+
3078
+ /**
3079
+ * \def MBEDTLS_NET_C
3080
+ *
3081
+ * Enable the TCP and UDP over IPv6/IPv4 networking routines.
3082
+ *
3083
+ * \note This module only works on POSIX/Unix (including Linux, BSD and OS X)
3084
+ * and Windows. For other platforms, you'll want to disable it, and write your
3085
+ * own networking callbacks to be passed to \c mbedtls_ssl_set_bio().
3086
+ *
3087
+ * \note See also our Knowledge Base article about porting to a new
3088
+ * environment:
3089
+ * https://mbed-tls.readthedocs.io/en/latest/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
3090
+ *
3091
+ * Module: library/net_sockets.c
3092
+ *
3093
+ * This module provides networking routines.
3094
+ */
3095
+ #define MBEDTLS_NET_C
3096
+
3097
+ /**
3098
+ * \def MBEDTLS_OID_C
3099
+ *
3100
+ * Enable the OID database.
3101
+ *
3102
+ * Module: library/oid.c
3103
+ * Caller: library/asn1write.c
3104
+ * library/pkcs5.c
3105
+ * library/pkparse.c
3106
+ * library/pkwrite.c
3107
+ * library/rsa.c
3108
+ * library/x509.c
3109
+ * library/x509_create.c
3110
+ * library/x509_crl.c
3111
+ * library/x509_crt.c
3112
+ * library/x509_csr.c
3113
+ * library/x509write_crt.c
3114
+ * library/x509write_csr.c
3115
+ *
3116
+ * This modules translates between OIDs and internal values.
3117
+ */
3118
+ #define MBEDTLS_OID_C
3119
+
3120
+ /**
3121
+ * \def MBEDTLS_PADLOCK_C
3122
+ *
3123
+ * Enable VIA Padlock support on x86.
3124
+ *
3125
+ * Module: library/padlock.c
3126
+ * Caller: library/aes.c
3127
+ *
3128
+ * Requires: MBEDTLS_HAVE_ASM
3129
+ *
3130
+ * This modules adds support for the VIA PadLock on x86.
3131
+ */
3132
+ #define MBEDTLS_PADLOCK_C
3133
+
3134
+ /**
3135
+ * \def MBEDTLS_PEM_PARSE_C
3136
+ *
3137
+ * Enable PEM decoding / parsing.
3138
+ *
3139
+ * Module: library/pem.c
3140
+ * Caller: library/dhm.c
3141
+ * library/pkparse.c
3142
+ * library/x509_crl.c
3143
+ * library/x509_crt.c
3144
+ * library/x509_csr.c
3145
+ *
3146
+ * Requires: MBEDTLS_BASE64_C
3147
+ * optionally MBEDTLS_MD5_C, or PSA Crypto with MD5 (see below)
3148
+ *
3149
+ * \warning When parsing password-protected files, if MD5 is provided only by
3150
+ * a PSA driver, you must call psa_crypto_init() before the first file.
3151
+ *
3152
+ * This modules adds support for decoding / parsing PEM files.
3153
+ */
3154
+ #define MBEDTLS_PEM_PARSE_C
3155
+
3156
+ /**
3157
+ * \def MBEDTLS_PEM_WRITE_C
3158
+ *
3159
+ * Enable PEM encoding / writing.
3160
+ *
3161
+ * Module: library/pem.c
3162
+ * Caller: library/pkwrite.c
3163
+ * library/x509write_crt.c
3164
+ * library/x509write_csr.c
3165
+ *
3166
+ * Requires: MBEDTLS_BASE64_C
3167
+ *
3168
+ * This modules adds support for encoding / writing PEM files.
3169
+ */
3170
+ #define MBEDTLS_PEM_WRITE_C
3171
+
3172
+ /**
3173
+ * \def MBEDTLS_PK_C
3174
+ *
3175
+ * Enable the generic public (asymmetric) key layer.
3176
+ *
3177
+ * Module: library/pk.c
3178
+ * Caller: library/psa_crypto_rsa.c
3179
+ * library/ssl_tls.c
3180
+ * library/ssl*_client.c
3181
+ * library/ssl*_server.c
3182
+ * library/x509.c
3183
+ *
3184
+ * Requires: MBEDTLS_MD_C, MBEDTLS_RSA_C or MBEDTLS_ECP_C
3185
+ *
3186
+ * Uncomment to enable generic public key wrappers.
3187
+ */
3188
+ #define MBEDTLS_PK_C
3189
+
3190
+ /**
3191
+ * \def MBEDTLS_PK_PARSE_C
3192
+ *
3193
+ * Enable the generic public (asymmetric) key parser.
3194
+ *
3195
+ * Module: library/pkparse.c
3196
+ * Caller: library/x509_crt.c
3197
+ * library/x509_csr.c
3198
+ *
3199
+ * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_OID_C, MBEDTLS_PK_C
3200
+ *
3201
+ * Uncomment to enable generic public key parse functions.
3202
+ */
3203
+ #define MBEDTLS_PK_PARSE_C
3204
+
3205
+ /**
3206
+ * \def MBEDTLS_PK_WRITE_C
3207
+ *
3208
+ * Enable the generic public (asymmetric) key writer.
3209
+ *
3210
+ * Module: library/pkwrite.c
3211
+ * Caller: library/x509write.c
3212
+ *
3213
+ * Requires: MBEDTLS_ASN1_WRITE_C, MBEDTLS_OID_C, MBEDTLS_PK_C
3214
+ *
3215
+ * Uncomment to enable generic public key write functions.
3216
+ */
3217
+ #define MBEDTLS_PK_WRITE_C
3218
+
3219
+ /**
3220
+ * \def MBEDTLS_PKCS5_C
3221
+ *
3222
+ * Enable PKCS#5 functions.
3223
+ *
3224
+ * Module: library/pkcs5.c
3225
+ *
3226
+ * Auto-enables: MBEDTLS_MD_C
3227
+ *
3228
+ * \warning If using a hash that is only provided by PSA drivers, you must
3229
+ * call psa_crypto_init() before doing any PKCS5 operations.
3230
+ *
3231
+ * This module adds support for the PKCS#5 functions.
3232
+ */
3233
+ #define MBEDTLS_PKCS5_C
3234
+
3235
+ /**
3236
+ * \def MBEDTLS_PKCS7_C
3237
+ *
3238
+ * Enable PKCS #7 core for using PKCS #7-formatted signatures.
3239
+ * RFC Link - https://tools.ietf.org/html/rfc2315
3240
+ *
3241
+ * Module: library/pkcs7.c
3242
+ *
3243
+ * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
3244
+ * MBEDTLS_X509_CRT_PARSE_C MBEDTLS_X509_CRL_PARSE_C,
3245
+ * MBEDTLS_BIGNUM_C, MBEDTLS_MD_C
3246
+ *
3247
+ * This module is required for the PKCS #7 parsing modules.
3248
+ */
3249
+ #define MBEDTLS_PKCS7_C
3250
+
3251
+ /**
3252
+ * \def MBEDTLS_PKCS7_ALLOW_WEAK_SIGNATURES
3253
+ *
3254
+ * Allow weak signature algorithms (RIPEMD160, MD5, SHA-1) in PKCS#7.
3255
+ *
3256
+ * Requires: MBEDTLS_PKCS7_C
3257
+ */
3258
+ // #define MBEDTLS_PKCS7_ALLOW_WEAK_SIGNATURES
3259
+
3260
+ /**
3261
+ * \def MBEDTLS_PKCS12_C
3262
+ *
3263
+ * Enable PKCS#12 PBE functions.
3264
+ * Adds algorithms for parsing PKCS#8 encrypted private keys
3265
+ *
3266
+ * Module: library/pkcs12.c
3267
+ * Caller: library/pkparse.c
3268
+ *
3269
+ * Requires: MBEDTLS_ASN1_PARSE_C and either MBEDTLS_MD_C or
3270
+ * MBEDTLS_PSA_CRYPTO_C.
3271
+ *
3272
+ * \warning If using a hash that is only provided by PSA drivers, you must
3273
+ * call psa_crypto_init() before doing any PKCS12 operations.
3274
+ *
3275
+ * This module enables PKCS#12 functions.
3276
+ */
3277
+ #define MBEDTLS_PKCS12_C
3278
+
3279
+ /**
3280
+ * \def MBEDTLS_PLATFORM_C
3281
+ *
3282
+ * Enable the platform abstraction layer that allows you to re-assign
3283
+ * functions like calloc(), free(), snprintf(), printf(), fprintf(), exit().
3284
+ *
3285
+ * Enabling MBEDTLS_PLATFORM_C enables to use of MBEDTLS_PLATFORM_XXX_ALT
3286
+ * or MBEDTLS_PLATFORM_XXX_MACRO directives, allowing the functions mentioned
3287
+ * above to be specified at runtime or compile time respectively.
3288
+ *
3289
+ * \note This abstraction layer must be enabled on Windows (including MSYS2)
3290
+ * as other modules rely on it for a fixed snprintf implementation.
3291
+ *
3292
+ * Module: library/platform.c
3293
+ * Caller: Most other .c files
3294
+ *
3295
+ * This module enables abstraction of common (libc) functions.
3296
+ */
3297
+ #define MBEDTLS_PLATFORM_C
3298
+
3299
+ /**
3300
+ * \def MBEDTLS_POLY1305_C
3301
+ *
3302
+ * Enable the Poly1305 MAC algorithm.
3303
+ *
3304
+ * Module: library/poly1305.c
3305
+ * Caller: library/chachapoly.c
3306
+ */
3307
+ #define MBEDTLS_POLY1305_C
3308
+
3309
+ /**
3310
+ * \def MBEDTLS_PSA_CRYPTO_C
3311
+ *
3312
+ * Enable the Platform Security Architecture (PSA) cryptography API.
3313
+ *
3314
+ * \note In multithreaded applications, you must enable #MBEDTLS_THREADING_C,
3315
+ * unless only one thread ever calls `psa_xxx()` functions.
3316
+ * That includes indirect calls, such as:
3317
+ * - performing a TLS handshake if support for TLS 1.3 is enabled;
3318
+ * - using a TLS 1.3 connection;
3319
+ * - indirect calls from PK, X.509 or SSL functions when
3320
+ * #MBEDTLS_USE_PSA_CRYPTO is enabled;
3321
+ * - indirect calls to calculate a hash when #MBEDTLS_MD_C is disabled;
3322
+ * - any other call to a function that requires calling psa_crypto_init()
3323
+ * beforehand.
3324
+ *
3325
+ * Module: library/psa_crypto.c
3326
+ *
3327
+ * Requires: either MBEDTLS_CTR_DRBG_C and MBEDTLS_ENTROPY_C,
3328
+ * or MBEDTLS_HMAC_DRBG_C and MBEDTLS_ENTROPY_C,
3329
+ * or MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG.
3330
+ * Auto-enables: MBEDTLS_CIPHER_C if any unauthenticated (ie, non-AEAD) cipher
3331
+ * is enabled in PSA (unless it's fully accelerated, see
3332
+ * docs/driver-only-builds.md about that).
3333
+ */
3334
+ #define MBEDTLS_PSA_CRYPTO_C
3335
+
3336
+ /**
3337
+ * \def MBEDTLS_PSA_CRYPTO_SE_C
3338
+ *
3339
+ * Enable dynamic secure element support in the Platform Security Architecture
3340
+ * cryptography API.
3341
+ *
3342
+ * \deprecated This feature is deprecated. Please switch to the PSA driver
3343
+ * interface.
3344
+ *
3345
+ * \warning This feature is not thread-safe, and should not be used in a
3346
+ * multi-threaded environment.
3347
+ *
3348
+ * Module: library/psa_crypto_se.c
3349
+ *
3350
+ * Requires: MBEDTLS_PSA_CRYPTO_C, MBEDTLS_PSA_CRYPTO_STORAGE_C
3351
+ *
3352
+ */
3353
+ //#define MBEDTLS_PSA_CRYPTO_SE_C
3354
+
3355
+ /**
3356
+ * \def MBEDTLS_PSA_CRYPTO_STORAGE_C
3357
+ *
3358
+ * Enable the Platform Security Architecture persistent key storage.
3359
+ *
3360
+ * Module: library/psa_crypto_storage.c
3361
+ *
3362
+ * Requires: MBEDTLS_PSA_CRYPTO_C,
3363
+ * either MBEDTLS_PSA_ITS_FILE_C or a native implementation of
3364
+ * the PSA ITS interface
3365
+ */
3366
+ #define MBEDTLS_PSA_CRYPTO_STORAGE_C
3367
+
3368
+ /**
3369
+ * \def MBEDTLS_PSA_ITS_FILE_C
3370
+ *
3371
+ * Enable the emulation of the Platform Security Architecture
3372
+ * Internal Trusted Storage (PSA ITS) over files.
3373
+ *
3374
+ * Module: library/psa_its_file.c
3375
+ *
3376
+ * Requires: MBEDTLS_FS_IO
3377
+ */
3378
+ #define MBEDTLS_PSA_ITS_FILE_C
3379
+
3380
+ /**
3381
+ * \def MBEDTLS_PSA_STATIC_KEY_SLOTS
3382
+ *
3383
+ * Statically preallocate memory to store keys' material in PSA instead
3384
+ * of allocating it dynamically when required. This allows builds without a
3385
+ * heap, if none of the enabled cryptographic implementations or other features
3386
+ * require it.
3387
+ * This feature affects both volatile and persistent keys which means that
3388
+ * it's not possible to persistently store a key which is larger than
3389
+ * #MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE.
3390
+ *
3391
+ * \note This feature comes with a (potentially) higher RAM usage since:
3392
+ * - All the key slots are allocated no matter if they are used or not.
3393
+ * - Each key buffer's length is #MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE bytes.
3394
+ *
3395
+ * Requires: MBEDTLS_PSA_CRYPTO_C
3396
+ *
3397
+ */
3398
+ //#define MBEDTLS_PSA_STATIC_KEY_SLOTS
3399
+
3400
+ /**
3401
+ * \def MBEDTLS_RIPEMD160_C
3402
+ *
3403
+ * Enable the RIPEMD-160 hash algorithm.
3404
+ *
3405
+ * Module: library/ripemd160.c
3406
+ * Caller: library/md.c
3407
+ *
3408
+ */
3409
+ #define MBEDTLS_RIPEMD160_C
3410
+
3411
+ /**
3412
+ * \def MBEDTLS_RSA_C
3413
+ *
3414
+ * Enable the RSA public-key cryptosystem.
3415
+ *
3416
+ * Module: library/rsa.c
3417
+ * library/rsa_alt_helpers.c
3418
+ * Caller: library/pk.c
3419
+ * library/psa_crypto.c
3420
+ * library/ssl_tls.c
3421
+ * library/ssl*_client.c
3422
+ * library/ssl*_server.c
3423
+ *
3424
+ * This module is used by the following key exchanges:
3425
+ * RSA, DHE-RSA, ECDHE-RSA, RSA-PSK
3426
+ *
3427
+ * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C
3428
+ */
3429
+ #define MBEDTLS_RSA_C
3430
+
3431
+ /**
3432
+ * \def MBEDTLS_SHA1_C
3433
+ *
3434
+ * Enable the SHA1 cryptographic hash algorithm.
3435
+ *
3436
+ * Module: library/sha1.c
3437
+ * Caller: library/md.c
3438
+ * library/psa_crypto_hash.c
3439
+ *
3440
+ * This module is required for TLS 1.2 depending on the handshake parameters,
3441
+ * and for SHA1-signed certificates.
3442
+ *
3443
+ * \warning SHA-1 is considered a weak message digest and its use constitutes
3444
+ * a security risk. If possible, we recommend avoiding dependencies
3445
+ * on it, and considering stronger message digests instead.
3446
+ *
3447
+ */
3448
+ #define MBEDTLS_SHA1_C
3449
+
3450
+ /**
3451
+ * \def MBEDTLS_SHA224_C
3452
+ *
3453
+ * Enable the SHA-224 cryptographic hash algorithm.
3454
+ *
3455
+ * Module: library/sha256.c
3456
+ * Caller: library/md.c
3457
+ * library/ssl_cookie.c
3458
+ *
3459
+ * This module adds support for SHA-224.
3460
+ */
3461
+ #define MBEDTLS_SHA224_C
3462
+
3463
+ /**
3464
+ * \def MBEDTLS_SHA256_C
3465
+ *
3466
+ * Enable the SHA-256 cryptographic hash algorithm.
3467
+ *
3468
+ * Module: library/sha256.c
3469
+ * Caller: library/entropy.c
3470
+ * library/md.c
3471
+ * library/ssl_tls.c
3472
+ * library/ssl*_client.c
3473
+ * library/ssl*_server.c
3474
+ *
3475
+ * This module adds support for SHA-256.
3476
+ * This module is required for the SSL/TLS 1.2 PRF function.
3477
+ */
3478
+ #define MBEDTLS_SHA256_C
3479
+
3480
+ /**
3481
+ * \def MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
3482
+ *
3483
+ * Enable acceleration of the SHA-256 and SHA-224 cryptographic hash algorithms
3484
+ * with the ARMv8 cryptographic extensions if they are available at runtime.
3485
+ * If not, the library will fall back to the C implementation.
3486
+ *
3487
+ * \note If MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT is defined when building
3488
+ * for a non-Armv8-A build it will be silently ignored.
3489
+ *
3490
+ * \note Minimum compiler versions for this feature are Clang 4.0,
3491
+ * armclang 6.6 or GCC 6.0.
3492
+ *
3493
+ * \note \c CFLAGS must be set to a minimum of \c -march=armv8-a+crypto for
3494
+ * armclang <= 6.9
3495
+ *
3496
+ * \note This was previously known as MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT.
3497
+ * That name is deprecated, but may still be used as an alternative form for this
3498
+ * option.
3499
+ *
3500
+ * \warning MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT cannot be defined at the
3501
+ * same time as MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY.
3502
+ *
3503
+ * Requires: MBEDTLS_SHA256_C.
3504
+ *
3505
+ * Module: library/sha256.c
3506
+ *
3507
+ * Uncomment to have the library check for the Armv8-A SHA-256 crypto extensions
3508
+ * and use them if available.
3509
+ */
3510
+ //#define MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
3511
+
3512
+ /**
3513
+ * \def MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
3514
+ *
3515
+ * \deprecated This is now known as MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT.
3516
+ * This name is now deprecated, but may still be used as an alternative form for
3517
+ * this option.
3518
+ */
3519
+ //#define MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
3520
+
3521
+ /**
3522
+ * \def MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
3523
+ *
3524
+ * Enable acceleration of the SHA-256 and SHA-224 cryptographic hash algorithms
3525
+ * with the ARMv8 cryptographic extensions, which must be available at runtime
3526
+ * or else an illegal instruction fault will occur.
3527
+ *
3528
+ * \note This allows builds with a smaller code size than with
3529
+ * MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
3530
+ *
3531
+ * \note Minimum compiler versions for this feature are Clang 4.0,
3532
+ * armclang 6.6 or GCC 6.0.
3533
+ *
3534
+ * \note \c CFLAGS must be set to a minimum of \c -march=armv8-a+crypto for
3535
+ * armclang <= 6.9
3536
+ *
3537
+ * \note This was previously known as MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY.
3538
+ * That name is deprecated, but may still be used as an alternative form for this
3539
+ * option.
3540
+ *
3541
+ * \warning MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY cannot be defined at the same
3542
+ * time as MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT.
3543
+ *
3544
+ * Requires: MBEDTLS_SHA256_C.
3545
+ *
3546
+ * Module: library/sha256.c
3547
+ *
3548
+ * Uncomment to have the library use the Armv8-A SHA-256 crypto extensions
3549
+ * unconditionally.
3550
+ */
3551
+ //#define MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
3552
+
3553
+ /**
3554
+ * \def MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
3555
+ *
3556
+ * \deprecated This is now known as MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY.
3557
+ * This name is now deprecated, but may still be used as an alternative form for
3558
+ * this option.
3559
+ */
3560
+ //#define MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
3561
+
3562
+ /**
3563
+ * \def MBEDTLS_SHA384_C
3564
+ *
3565
+ * Enable the SHA-384 cryptographic hash algorithm.
3566
+ *
3567
+ * Module: library/sha512.c
3568
+ * Caller: library/md.c
3569
+ * library/psa_crypto_hash.c
3570
+ * library/ssl_tls.c
3571
+ * library/ssl*_client.c
3572
+ * library/ssl*_server.c
3573
+ *
3574
+ * Comment to disable SHA-384
3575
+ */
3576
+ #define MBEDTLS_SHA384_C
3577
+
3578
+ /**
3579
+ * \def MBEDTLS_SHA512_C
3580
+ *
3581
+ * Enable SHA-512 cryptographic hash algorithms.
3582
+ *
3583
+ * Module: library/sha512.c
3584
+ * Caller: library/entropy.c
3585
+ * library/md.c
3586
+ * library/ssl_tls.c
3587
+ * library/ssl_cookie.c
3588
+ *
3589
+ * This module adds support for SHA-512.
3590
+ */
3591
+ #define MBEDTLS_SHA512_C
3592
+
3593
+ /**
3594
+ * \def MBEDTLS_SHA3_C
3595
+ *
3596
+ * Enable the SHA3 cryptographic hash algorithm.
3597
+ *
3598
+ * Module: library/sha3.c
3599
+ *
3600
+ * This module adds support for SHA3.
3601
+ */
3602
+ #define MBEDTLS_SHA3_C
3603
+
3604
+ /**
3605
+ * \def MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
3606
+ *
3607
+ * Enable acceleration of the SHA-512 and SHA-384 cryptographic hash algorithms
3608
+ * with the ARMv8 cryptographic extensions if they are available at runtime.
3609
+ * If not, the library will fall back to the C implementation.
3610
+ *
3611
+ * \note If MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT is defined when building
3612
+ * for a non-Aarch64 build it will be silently ignored.
3613
+ *
3614
+ * \note Minimum compiler versions for this feature are Clang 7.0,
3615
+ * armclang 6.9 or GCC 8.0.
3616
+ *
3617
+ * \note \c CFLAGS must be set to a minimum of \c -march=armv8.2-a+sha3 for
3618
+ * armclang 6.9
3619
+ *
3620
+ * \warning MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT cannot be defined at the
3621
+ * same time as MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY.
3622
+ *
3623
+ * Requires: MBEDTLS_SHA512_C.
3624
+ *
3625
+ * Module: library/sha512.c
3626
+ *
3627
+ * Uncomment to have the library check for the A64 SHA-512 crypto extensions
3628
+ * and use them if available.
3629
+ */
3630
+ //#define MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
3631
+
3632
+ /**
3633
+ * \def MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY
3634
+ *
3635
+ * Enable acceleration of the SHA-512 and SHA-384 cryptographic hash algorithms
3636
+ * with the ARMv8 cryptographic extensions, which must be available at runtime
3637
+ * or else an illegal instruction fault will occur.
3638
+ *
3639
+ * \note This allows builds with a smaller code size than with
3640
+ * MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
3641
+ *
3642
+ * \note Minimum compiler versions for this feature are Clang 7.0,
3643
+ * armclang 6.9 or GCC 8.0.
3644
+ *
3645
+ * \note \c CFLAGS must be set to a minimum of \c -march=armv8.2-a+sha3 for
3646
+ * armclang 6.9
3647
+ *
3648
+ * \warning MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY cannot be defined at the same
3649
+ * time as MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT.
3650
+ *
3651
+ * Requires: MBEDTLS_SHA512_C.
3652
+ *
3653
+ * Module: library/sha512.c
3654
+ *
3655
+ * Uncomment to have the library use the A64 SHA-512 crypto extensions
3656
+ * unconditionally.
3657
+ */
3658
+ //#define MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY
3659
+
3660
+ /**
3661
+ * \def MBEDTLS_SSL_CACHE_C
3662
+ *
3663
+ * Enable simple SSL cache implementation.
3664
+ *
3665
+ * Module: library/ssl_cache.c
3666
+ * Caller:
3667
+ *
3668
+ * Requires: MBEDTLS_SSL_CACHE_C
3669
+ */
3670
+ #define MBEDTLS_SSL_CACHE_C
3671
+
3672
+ /**
3673
+ * \def MBEDTLS_SSL_COOKIE_C
3674
+ *
3675
+ * Enable basic implementation of DTLS cookies for hello verification.
3676
+ *
3677
+ * Module: library/ssl_cookie.c
3678
+ * Caller:
3679
+ */
3680
+ #define MBEDTLS_SSL_COOKIE_C
3681
+
3682
+ /**
3683
+ * \def MBEDTLS_SSL_TICKET_C
3684
+ *
3685
+ * Enable an implementation of TLS server-side callbacks for session tickets.
3686
+ *
3687
+ * Module: library/ssl_ticket.c
3688
+ * Caller:
3689
+ *
3690
+ * Requires: (MBEDTLS_CIPHER_C || MBEDTLS_USE_PSA_CRYPTO) &&
3691
+ * (MBEDTLS_GCM_C || MBEDTLS_CCM_C || MBEDTLS_CHACHAPOLY_C)
3692
+ */
3693
+ #define MBEDTLS_SSL_TICKET_C
3694
+
3695
+ /**
3696
+ * \def MBEDTLS_SSL_CLI_C
3697
+ *
3698
+ * Enable the SSL/TLS client code.
3699
+ *
3700
+ * Module: library/ssl*_client.c
3701
+ * Caller:
3702
+ *
3703
+ * Requires: MBEDTLS_SSL_TLS_C
3704
+ *
3705
+ * This module is required for SSL/TLS client support.
3706
+ */
3707
+ #define MBEDTLS_SSL_CLI_C
3708
+
3709
+ /**
3710
+ * \def MBEDTLS_SSL_SRV_C
3711
+ *
3712
+ * Enable the SSL/TLS server code.
3713
+ *
3714
+ * Module: library/ssl*_server.c
3715
+ * Caller:
3716
+ *
3717
+ * Requires: MBEDTLS_SSL_TLS_C
3718
+ *
3719
+ * This module is required for SSL/TLS server support.
3720
+ */
3721
+ #define MBEDTLS_SSL_SRV_C
3722
+
3723
+ /**
3724
+ * \def MBEDTLS_SSL_TLS_C
3725
+ *
3726
+ * Enable the generic SSL/TLS code.
3727
+ *
3728
+ * Module: library/ssl_tls.c
3729
+ * Caller: library/ssl*_client.c
3730
+ * library/ssl*_server.c
3731
+ *
3732
+ * Requires: MBEDTLS_CIPHER_C, MBEDTLS_MD_C
3733
+ * and at least one of the MBEDTLS_SSL_PROTO_XXX defines
3734
+ *
3735
+ * This module is required for SSL/TLS.
3736
+ */
3737
+ #define MBEDTLS_SSL_TLS_C
3738
+
3739
+ /**
3740
+ * \def MBEDTLS_THREADING_C
3741
+ *
3742
+ * Enable the threading abstraction layer.
3743
+ *
3744
+ * Traditionally, Mbed TLS assumes it is used in a non-threaded environment or
3745
+ * that contexts are not shared between threads. If you do intend to use contexts
3746
+ * between threads, you will need to enable this layer to prevent race
3747
+ * conditions.
3748
+ *
3749
+ * The PSA subsystem has an implicit shared context. Therefore, you must
3750
+ * enable this option if more than one thread may use any part of
3751
+ * Mbed TLS that is implemented on top of the PSA subsystem.
3752
+ *
3753
+ * You must enable this option in multithreaded applications where more than
3754
+ * one thread performs any of the following operations:
3755
+ *
3756
+ * - Any call to a PSA function (`psa_xxx()`).
3757
+ * - Any call to a TLS, X.509 or PK function (`mbedtls_ssl_xxx()`,
3758
+ * `mbedtls_x509_xxx()`, `mbedtls_pkcs7_xxx()`, `mbedtls_pk_xxx()`)
3759
+ * if `MBEDTLS_USE_PSA_CRYPTO` is enabled (regardless of whether individual
3760
+ * TLS, X.509 or PK contexts are shared between threads).
3761
+ * - A TLS 1.3 connection, regardless of the compile-time configuration.
3762
+ * - Any library feature that calculates a hash, if `MBEDTLS_MD_C` is disabled.
3763
+ * As an exception, algorithm-specific low-level modules do not require
3764
+ * threading protection unless the contexts are shared between threads.
3765
+ * - Any library feature that performs symmetric encryption or decryption,
3766
+ * if `MBEDTLS_CIPHER_C` is disabled.
3767
+ * As an exception, algorithm-specific low-level modules do not require
3768
+ * threading protection unless the contexts are shared between threads.
3769
+ * - Any use of a cryptographic context if the same context is used in
3770
+ * multiple threads.
3771
+ * - Any call to a function where the documentation specifies that
3772
+ * psa_crypto_init() must be called prior to that function.
3773
+ *
3774
+ * See also our Knowledge Base article about threading:
3775
+ * https://mbed-tls.readthedocs.io/en/latest/kb/development/thread-safety-and-multi-threading
3776
+ *
3777
+ * Module: library/threading.c
3778
+ *
3779
+ * This allows different threading implementations (self-implemented or
3780
+ * provided).
3781
+ *
3782
+ * You will have to enable either MBEDTLS_THREADING_ALT or
3783
+ * MBEDTLS_THREADING_PTHREAD.
3784
+ *
3785
+ * Enable this layer to allow use of mutexes within Mbed TLS
3786
+ */
3787
+ //#define MBEDTLS_THREADING_C
3788
+
3789
+ /**
3790
+ * \def MBEDTLS_TIMING_C
3791
+ *
3792
+ * Enable the semi-portable timing interface.
3793
+ *
3794
+ * \note The provided implementation only works on POSIX/Unix (including Linux,
3795
+ * BSD and OS X) and Windows. On other platforms, you can either disable that
3796
+ * module and provide your own implementations of the callbacks needed by
3797
+ * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide
3798
+ * your own implementation of the whole module by setting
3799
+ * \c MBEDTLS_TIMING_ALT in the current file.
3800
+ *
3801
+ * \note The timing module will include time.h on suitable platforms
3802
+ * regardless of the setting of MBEDTLS_HAVE_TIME, unless
3803
+ * MBEDTLS_TIMING_ALT is used. See timing.c for more information.
3804
+ *
3805
+ * \note See also our Knowledge Base article about porting to a new
3806
+ * environment:
3807
+ * https://mbed-tls.readthedocs.io/en/latest/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
3808
+ *
3809
+ * Module: library/timing.c
3810
+ */
3811
+ #define MBEDTLS_TIMING_C
3812
+
3813
+ /**
3814
+ * \def MBEDTLS_VERSION_C
3815
+ *
3816
+ * Enable run-time version information.
3817
+ *
3818
+ * Module: library/version.c
3819
+ *
3820
+ * This module provides run-time version information.
3821
+ */
3822
+ #define MBEDTLS_VERSION_C
3823
+
3824
+ /**
3825
+ * \def MBEDTLS_X509_USE_C
3826
+ *
3827
+ * Enable X.509 core for using certificates.
3828
+ *
3829
+ * Module: library/x509.c
3830
+ * Caller: library/x509_crl.c
3831
+ * library/x509_crt.c
3832
+ * library/x509_csr.c
3833
+ *
3834
+ * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
3835
+ * (MBEDTLS_MD_C or MBEDTLS_USE_PSA_CRYPTO)
3836
+ *
3837
+ * \warning If building with MBEDTLS_USE_PSA_CRYPTO, you must call
3838
+ * psa_crypto_init() before doing any X.509 operation.
3839
+ *
3840
+ * This module is required for the X.509 parsing modules.
3841
+ */
3842
+ #define MBEDTLS_X509_USE_C
3843
+
3844
+ /**
3845
+ * \def MBEDTLS_X509_CRT_PARSE_C
3846
+ *
3847
+ * Enable X.509 certificate parsing.
3848
+ *
3849
+ * Module: library/x509_crt.c
3850
+ * Caller: library/ssl_tls.c
3851
+ * library/ssl*_client.c
3852
+ * library/ssl*_server.c
3853
+ *
3854
+ * Requires: MBEDTLS_X509_USE_C
3855
+ *
3856
+ * This module is required for X.509 certificate parsing.
3857
+ */
3858
+ #define MBEDTLS_X509_CRT_PARSE_C
3859
+
3860
+ /**
3861
+ * \def MBEDTLS_X509_CRL_PARSE_C
3862
+ *
3863
+ * Enable X.509 CRL parsing.
3864
+ *
3865
+ * Module: library/x509_crl.c
3866
+ * Caller: library/x509_crt.c
3867
+ *
3868
+ * Requires: MBEDTLS_X509_USE_C
3869
+ *
3870
+ * This module is required for X.509 CRL parsing.
3871
+ */
3872
+ #define MBEDTLS_X509_CRL_PARSE_C
3873
+
3874
+ /**
3875
+ * \def MBEDTLS_X509_CSR_PARSE_C
3876
+ *
3877
+ * Enable X.509 Certificate Signing Request (CSR) parsing.
3878
+ *
3879
+ * Module: library/x509_csr.c
3880
+ * Caller: library/x509_crt_write.c
3881
+ *
3882
+ * Requires: MBEDTLS_X509_USE_C
3883
+ *
3884
+ * This module is used for reading X.509 certificate request.
3885
+ */
3886
+ #define MBEDTLS_X509_CSR_PARSE_C
3887
+
3888
+ /**
3889
+ * \def MBEDTLS_X509_CREATE_C
3890
+ *
3891
+ * Enable X.509 core for creating certificates.
3892
+ *
3893
+ * Module: library/x509_create.c
3894
+ *
3895
+ * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_PARSE_C,
3896
+ * (MBEDTLS_MD_C or MBEDTLS_USE_PSA_CRYPTO)
3897
+ *
3898
+ * \warning If building with MBEDTLS_USE_PSA_CRYPTO, you must call
3899
+ * psa_crypto_init() before doing any X.509 create operation.
3900
+ *
3901
+ * This module is the basis for creating X.509 certificates and CSRs.
3902
+ */
3903
+ #define MBEDTLS_X509_CREATE_C
3904
+
3905
+ /**
3906
+ * \def MBEDTLS_X509_CRT_WRITE_C
3907
+ *
3908
+ * Enable creating X.509 certificates.
3909
+ *
3910
+ * Module: library/x509_crt_write.c
3911
+ *
3912
+ * Requires: MBEDTLS_X509_CREATE_C
3913
+ *
3914
+ * This module is required for X.509 certificate creation.
3915
+ */
3916
+ #define MBEDTLS_X509_CRT_WRITE_C
3917
+
3918
+ /**
3919
+ * \def MBEDTLS_X509_CSR_WRITE_C
3920
+ *
3921
+ * Enable creating X.509 Certificate Signing Requests (CSR).
3922
+ *
3923
+ * Module: library/x509_csr_write.c
3924
+ *
3925
+ * Requires: MBEDTLS_X509_CREATE_C
3926
+ *
3927
+ * This module is required for X.509 certificate request writing.
3928
+ */
3929
+ #define MBEDTLS_X509_CSR_WRITE_C
3930
+
3931
+ /** \} name SECTION: Mbed TLS modules */
3932
+
3933
+ /**
3934
+ * \name SECTION: General configuration options
3935
+ *
3936
+ * This section contains Mbed TLS build settings that are not associated
3937
+ * with a particular module.
3938
+ *
3939
+ * \{
3940
+ */
3941
+
3942
+ /**
3943
+ * \def MBEDTLS_CONFIG_FILE
3944
+ *
3945
+ * If defined, this is a header which will be included instead of
3946
+ * `"mbedtls/mbedtls_config.h"`.
3947
+ * This header file specifies the compile-time configuration of Mbed TLS.
3948
+ * Unlike other configuration options, this one must be defined on the
3949
+ * compiler command line: a definition in `mbedtls_config.h` would have
3950
+ * no effect.
3951
+ *
3952
+ * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
3953
+ * non-standard feature of the C language, so this feature is only available
3954
+ * with compilers that perform macro expansion on an <tt>\#include</tt> line.
3955
+ *
3956
+ * The value of this symbol is typically a path in double quotes, either
3957
+ * absolute or relative to a directory on the include search path.
3958
+ */
3959
+ //#define MBEDTLS_CONFIG_FILE "mbedtls/mbedtls_config.h"
3960
+
3961
+ /**
3962
+ * \def MBEDTLS_USER_CONFIG_FILE
3963
+ *
3964
+ * If defined, this is a header which will be included after
3965
+ * `"mbedtls/mbedtls_config.h"` or #MBEDTLS_CONFIG_FILE.
3966
+ * This allows you to modify the default configuration, including the ability
3967
+ * to undefine options that are enabled by default.
3968
+ *
3969
+ * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
3970
+ * non-standard feature of the C language, so this feature is only available
3971
+ * with compilers that perform macro expansion on an <tt>\#include</tt> line.
3972
+ *
3973
+ * The value of this symbol is typically a path in double quotes, either
3974
+ * absolute or relative to a directory on the include search path.
3975
+ */
3976
+ //#define MBEDTLS_USER_CONFIG_FILE "/dev/null"
3977
+
3978
+ /**
3979
+ * \def MBEDTLS_PSA_CRYPTO_CONFIG_FILE
3980
+ *
3981
+ * If defined, this is a header which will be included instead of
3982
+ * `"psa/crypto_config.h"`.
3983
+ * This header file specifies which cryptographic mechanisms are available
3984
+ * through the PSA API when #MBEDTLS_PSA_CRYPTO_CONFIG is enabled, and
3985
+ * is not used when #MBEDTLS_PSA_CRYPTO_CONFIG is disabled.
3986
+ *
3987
+ * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
3988
+ * non-standard feature of the C language, so this feature is only available
3989
+ * with compilers that perform macro expansion on an <tt>\#include</tt> line.
3990
+ *
3991
+ * The value of this symbol is typically a path in double quotes, either
3992
+ * absolute or relative to a directory on the include search path.
3993
+ */
3994
+ //#define MBEDTLS_PSA_CRYPTO_CONFIG_FILE "psa/crypto_config.h"
3995
+
3996
+ /**
3997
+ * \def MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE
3998
+ *
3999
+ * If defined, this is a header which will be included after
4000
+ * `"psa/crypto_config.h"` or #MBEDTLS_PSA_CRYPTO_CONFIG_FILE.
4001
+ * This allows you to modify the default configuration, including the ability
4002
+ * to undefine options that are enabled by default.
4003
+ *
4004
+ * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
4005
+ * non-standard feature of the C language, so this feature is only available
4006
+ * with compilers that perform macro expansion on an <tt>\#include</tt> line.
4007
+ *
4008
+ * The value of this symbol is typically a path in double quotes, either
4009
+ * absolute or relative to a directory on the include search path.
4010
+ */
4011
+ //#define MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE "/dev/null"
4012
+
4013
+ /**
4014
+ * \def MBEDTLS_PSA_CRYPTO_PLATFORM_FILE
4015
+ *
4016
+ * If defined, this is a header which will be included instead of
4017
+ * `"psa/crypto_platform.h"`. This file should declare the same identifiers
4018
+ * as the one in Mbed TLS, but with definitions adapted to the platform on
4019
+ * which the library code will run.
4020
+ *
4021
+ * \note The required content of this header can vary from one version of
4022
+ * Mbed TLS to the next. Integrators who provide an alternative file
4023
+ * should review the changes in the original file whenever they
4024
+ * upgrade Mbed TLS.
4025
+ *
4026
+ * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
4027
+ * non-standard feature of the C language, so this feature is only available
4028
+ * with compilers that perform macro expansion on an <tt>\#include</tt> line.
4029
+ *
4030
+ * The value of this symbol is typically a path in double quotes, either
4031
+ * absolute or relative to a directory on the include search path.
4032
+ */
4033
+ //#define MBEDTLS_PSA_CRYPTO_PLATFORM_FILE "psa/crypto_platform_alt.h"
4034
+
4035
+ /**
4036
+ * \def MBEDTLS_PSA_CRYPTO_STRUCT_FILE
4037
+ *
4038
+ * If defined, this is a header which will be included instead of
4039
+ * `"psa/crypto_struct.h"`. This file should declare the same identifiers
4040
+ * as the one in Mbed TLS, but with definitions adapted to the environment
4041
+ * in which the library code will run. The typical use for this feature
4042
+ * is to provide alternative type definitions on the client side in
4043
+ * client-server integrations of PSA crypto, where operation structures
4044
+ * contain handles instead of cryptographic data.
4045
+ *
4046
+ * \note The required content of this header can vary from one version of
4047
+ * Mbed TLS to the next. Integrators who provide an alternative file
4048
+ * should review the changes in the original file whenever they
4049
+ * upgrade Mbed TLS.
4050
+ *
4051
+ * This macro is expanded after an <tt>\#include</tt> directive. This is a popular but
4052
+ * non-standard feature of the C language, so this feature is only available
4053
+ * with compilers that perform macro expansion on an <tt>\#include</tt> line.
4054
+ *
4055
+ * The value of this symbol is typically a path in double quotes, either
4056
+ * absolute or relative to a directory on the include search path.
4057
+ */
4058
+ //#define MBEDTLS_PSA_CRYPTO_STRUCT_FILE "psa/crypto_struct_alt.h"
4059
+
4060
+ /** \} name SECTION: General configuration options */
4061
+
4062
+ /**
4063
+ * \name SECTION: Module configuration options
4064
+ *
4065
+ * This section allows for the setting of module specific sizes and
4066
+ * configuration options. The default values are already present in the
4067
+ * relevant header files and should suffice for the regular use cases.
4068
+ *
4069
+ * Our advice is to enable options and change their values here
4070
+ * only if you have a good reason and know the consequences.
4071
+ * \{
4072
+ */
4073
+ /* The Doxygen documentation here is used when a user comments out a
4074
+ * setting and runs doxygen themselves. On the other hand, when we typeset
4075
+ * the full documentation including disabled settings, the documentation
4076
+ * in specific modules' header files is used if present. When editing this
4077
+ * file, make sure that each option is documented in exactly one place,
4078
+ * plus optionally a same-line Doxygen comment here if there is a Doxygen
4079
+ * comment in the specific module. */
4080
+
4081
+ /* MPI / BIGNUM options */
4082
+ //#define MBEDTLS_MPI_WINDOW_SIZE 2 /**< Maximum window size used. */
4083
+ //#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */
4084
+
4085
+ /* CTR_DRBG options */
4086
+ //#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */
4087
+ //#define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
4088
+ //#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
4089
+ //#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
4090
+ //#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
4091
+
4092
+ /* HMAC_DRBG options */
4093
+ //#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
4094
+ //#define MBEDTLS_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
4095
+ //#define MBEDTLS_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
4096
+ //#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
4097
+
4098
+ /* ECP options */
4099
+ //#define MBEDTLS_ECP_WINDOW_SIZE 4 /**< Maximum window size used */
4100
+ //#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */
4101
+
4102
+ /* Entropy options */
4103
+ //#define MBEDTLS_ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */
4104
+ //#define MBEDTLS_ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */
4105
+ //#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Default minimum number of bytes required for the hardware entropy source mbedtls_hardware_poll() before entropy is released */
4106
+
4107
+ /* Memory buffer allocator options */
4108
+ //#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */
4109
+
4110
+ /* Platform options */
4111
+ //#define MBEDTLS_PLATFORM_STD_MEM_HDR <stdlib.h> /**< Header to include if MBEDTLS_PLATFORM_NO_STD_FUNCTIONS is defined. Don't define if no header is needed. */
4112
+
4113
+ /** \def MBEDTLS_PLATFORM_STD_CALLOC
4114
+ *
4115
+ * Default allocator to use, can be undefined.
4116
+ * It must initialize the allocated buffer memory to zeroes.
4117
+ * The size of the buffer is the product of the two parameters.
4118
+ * The calloc function returns either a null pointer or a pointer to the allocated space.
4119
+ * If the product is 0, the function may either return NULL or a valid pointer to an array of size 0 which is a valid input to the deallocation function.
4120
+ * An uninitialized #MBEDTLS_PLATFORM_STD_CALLOC always fails, returning a null pointer.
4121
+ * See the description of #MBEDTLS_PLATFORM_MEMORY for more details.
4122
+ * The corresponding deallocation function is #MBEDTLS_PLATFORM_STD_FREE.
4123
+ */
4124
+ //#define MBEDTLS_PLATFORM_STD_CALLOC calloc
4125
+
4126
+ /** \def MBEDTLS_PLATFORM_STD_FREE
4127
+ *
4128
+ * Default free to use, can be undefined.
4129
+ * NULL is a valid parameter, and the function must do nothing.
4130
+ * A non-null parameter will always be a pointer previously returned by #MBEDTLS_PLATFORM_STD_CALLOC and not yet freed.
4131
+ * An uninitialized #MBEDTLS_PLATFORM_STD_FREE does not do anything.
4132
+ * See the description of #MBEDTLS_PLATFORM_MEMORY for more details (same principles as for MBEDTLS_PLATFORM_STD_CALLOC apply).
4133
+ */
4134
+ //#define MBEDTLS_PLATFORM_STD_FREE free
4135
+ //#define MBEDTLS_PLATFORM_STD_SETBUF setbuf /**< Default setbuf to use, can be undefined */
4136
+ //#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use, can be undefined */
4137
+ //#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */
4138
+ //#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */
4139
+ //#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */
4140
+ /* Note: your snprintf must correctly zero-terminate the buffer! */
4141
+ //#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use, can be undefined */
4142
+ //#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS 0 /**< Default exit value to use, can be undefined */
4143
+ //#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE 1 /**< Default exit value to use, can be undefined */
4144
+ //#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */
4145
+ //#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */
4146
+ //#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile" /**< Seed file to read/write with default implementation */
4147
+
4148
+ /* To use the following function macros, MBEDTLS_PLATFORM_C must be enabled. */
4149
+ /* MBEDTLS_PLATFORM_XXX_MACRO and MBEDTLS_PLATFORM_XXX_ALT cannot both be defined */
4150
+ //#define MBEDTLS_PLATFORM_CALLOC_MACRO calloc /**< Default allocator macro to use, can be undefined. See MBEDTLS_PLATFORM_STD_CALLOC for requirements. */
4151
+ //#define MBEDTLS_PLATFORM_FREE_MACRO free /**< Default free macro to use, can be undefined. See MBEDTLS_PLATFORM_STD_FREE for requirements. */
4152
+ //#define MBEDTLS_PLATFORM_EXIT_MACRO exit /**< Default exit macro to use, can be undefined */
4153
+ //#define MBEDTLS_PLATFORM_SETBUF_MACRO setbuf /**< Default setbuf macro to use, can be undefined */
4154
+ //#define MBEDTLS_PLATFORM_TIME_MACRO time /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */
4155
+ //#define MBEDTLS_PLATFORM_TIME_TYPE_MACRO time_t /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */
4156
+ //#define MBEDTLS_PLATFORM_FPRINTF_MACRO fprintf /**< Default fprintf macro to use, can be undefined */
4157
+ //#define MBEDTLS_PLATFORM_PRINTF_MACRO printf /**< Default printf macro to use, can be undefined */
4158
+ /* Note: your snprintf must correctly zero-terminate the buffer! */
4159
+ //#define MBEDTLS_PLATFORM_SNPRINTF_MACRO snprintf /**< Default snprintf macro to use, can be undefined */
4160
+ //#define MBEDTLS_PLATFORM_VSNPRINTF_MACRO vsnprintf /**< Default vsnprintf macro to use, can be undefined */
4161
+ //#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */
4162
+ //#define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */
4163
+ //#define MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO int64_t //#define MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO int64_t /**< Default milliseconds time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled. It must be signed, and at least 64 bits. If it is changed from the default, MBEDTLS_PRINTF_MS_TIME must be updated to match.*/
4164
+ //#define MBEDTLS_PRINTF_MS_TIME PRId64 /**< Default fmt for printf. That's avoid compiler warning if mbedtls_ms_time_t is redefined */
4165
+
4166
+ /** \def MBEDTLS_PLATFORM_DEV_RANDOM
4167
+ *
4168
+ * Path to a special file that returns cryptographic-quality random bytes
4169
+ * when read. This is used by the default platform entropy source on
4170
+ * non-Windows platforms unless a dedicated system call is available
4171
+ * (see #MBEDTLS_NO_PLATFORM_ENTROPY).
4172
+ *
4173
+ * The default value is `/dev/random`, which is suitable on most platforms
4174
+ * other than Linux. On Linux, either `/dev/random` or `/dev/urandom`
4175
+ * may be the right choice, depending on the circumstances:
4176
+ *
4177
+ * - If possible, the library will use the getrandom() system call,
4178
+ * which is preferable, and #MBEDTLS_PLATFORM_DEV_RANDOM is not used.
4179
+ * - If there is a dedicated hardware entropy source (e.g. RDRAND on x86
4180
+ * processors), then both `/dev/random` and `/dev/urandom` are fine.
4181
+ * - `/dev/random` is always secure. However, with kernels older than 5.6,
4182
+ * `/dev/random` often blocks unnecessarily if there is no dedicated
4183
+ * hardware entropy source.
4184
+ * - `/dev/urandom` never blocks. However, it may return predictable data
4185
+ * if it is used early after the kernel boots, especially on embedded
4186
+ * devices without an interactive user.
4187
+ *
4188
+ * Thus you should change the value to `/dev/urandom` if your application
4189
+ * definitely won't be used on a device running Linux without a dedicated
4190
+ * entropy source early during or after boot.
4191
+ *
4192
+ * This is the default value of ::mbedtls_platform_dev_random, which
4193
+ * can be changed at run time.
4194
+ */
4195
+ //#define MBEDTLS_PLATFORM_DEV_RANDOM "/dev/random"
4196
+
4197
+ /** \def MBEDTLS_CHECK_RETURN
4198
+ *
4199
+ * This macro is used at the beginning of the declaration of a function
4200
+ * to indicate that its return value should be checked. It should
4201
+ * instruct the compiler to emit a warning or an error if the function
4202
+ * is called without checking its return value.
4203
+ *
4204
+ * There is a default implementation for popular compilers in platform_util.h.
4205
+ * You can override the default implementation by defining your own here.
4206
+ *
4207
+ * If the implementation here is empty, this will effectively disable the
4208
+ * checking of functions' return values.
4209
+ */
4210
+ //#define MBEDTLS_CHECK_RETURN __attribute__((__warn_unused_result__))
4211
+
4212
+ /** \def MBEDTLS_IGNORE_RETURN
4213
+ *
4214
+ * This macro requires one argument, which should be a C function call.
4215
+ * If that function call would cause a #MBEDTLS_CHECK_RETURN warning, this
4216
+ * warning is suppressed.
4217
+ */
4218
+ //#define MBEDTLS_IGNORE_RETURN( result ) ((void) !(result))
4219
+
4220
+ /* PSA options */
4221
+ /**
4222
+ * Use HMAC_DRBG with the specified hash algorithm for HMAC_DRBG for the
4223
+ * PSA crypto subsystem.
4224
+ *
4225
+ * If this option is unset, the library chooses a hash (currently between
4226
+ * #MBEDTLS_MD_SHA512 and #MBEDTLS_MD_SHA256) based on availability and
4227
+ * unspecified heuristics.
4228
+ *
4229
+ * \note The PSA crypto subsystem uses the first available mechanism amongst
4230
+ * the following:
4231
+ * - #MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG if enabled;
4232
+ * - Entropy from #MBEDTLS_ENTROPY_C plus CTR_DRBG with AES
4233
+ * if #MBEDTLS_CTR_DRBG_C is enabled;
4234
+ * - Entropy from #MBEDTLS_ENTROPY_C plus HMAC_DRBG.
4235
+ *
4236
+ * A future version may reevaluate the prioritization of DRBG mechanisms.
4237
+ */
4238
+ //#define MBEDTLS_PSA_HMAC_DRBG_MD_TYPE MBEDTLS_MD_SHA256
4239
+
4240
+ /** \def MBEDTLS_PSA_KEY_SLOT_COUNT
4241
+ *
4242
+ * When #MBEDTLS_PSA_KEY_STORE_DYNAMIC is disabled,
4243
+ * the maximum amount of PSA keys simultaneously in memory. This counts all
4244
+ * volatile keys, plus loaded persistent keys.
4245
+ *
4246
+ * When #MBEDTLS_PSA_KEY_STORE_DYNAMIC is enabled,
4247
+ * the maximum number of loaded persistent keys.
4248
+ *
4249
+ * Currently, persistent keys do not need to be loaded all the time while
4250
+ * a multipart operation is in progress, only while the operation is being
4251
+ * set up. This may change in future versions of the library.
4252
+ *
4253
+ * Currently, the library traverses of the whole table on each access to a
4254
+ * persistent key. Therefore large values may cause poor performance.
4255
+ *
4256
+ * This option has no effect when #MBEDTLS_PSA_CRYPTO_C is disabled.
4257
+ */
4258
+ //#define MBEDTLS_PSA_KEY_SLOT_COUNT 32
4259
+
4260
+ /**
4261
+ * \def MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE
4262
+ *
4263
+ * Define the size (in bytes) of each static key buffer when
4264
+ * #MBEDTLS_PSA_STATIC_KEY_SLOTS is set. If not
4265
+ * explicitly defined then it's automatically guessed from available PSA keys
4266
+ * enabled in the build through PSA_WANT_xxx symbols.
4267
+ * If required by the application this parameter can be set to higher values
4268
+ * in order to store larger objects (ex: raw keys), but please note that this
4269
+ * will increase RAM usage.
4270
+ */
4271
+ //#define MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE 256
4272
+
4273
+ /* RSA OPTIONS */
4274
+ //#define MBEDTLS_RSA_GEN_KEY_MIN_BITS 1024 /**< Minimum RSA key size that can be generated in bits (Minimum possible value is 128 bits) */
4275
+
4276
+ /* SSL Cache options */
4277
+ //#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */
4278
+ //#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */
4279
+
4280
+ /* SSL options */
4281
+
4282
+ /** \def MBEDTLS_SSL_IN_CONTENT_LEN
4283
+ *
4284
+ * Maximum length (in bytes) of incoming plaintext fragments.
4285
+ *
4286
+ * This determines the size of the incoming TLS I/O buffer in such a way
4287
+ * that it is capable of holding the specified amount of plaintext data,
4288
+ * regardless of the protection mechanism used.
4289
+ *
4290
+ * \note When using a value less than the default of 16KB on the client, it is
4291
+ * recommended to use the Maximum Fragment Length (MFL) extension to
4292
+ * inform the server about this limitation. On the server, there
4293
+ * is no supported, standardized way of informing the client about
4294
+ * restriction on the maximum size of incoming messages, and unless
4295
+ * the limitation has been communicated by other means, it is recommended
4296
+ * to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN
4297
+ * while keeping the default value of 16KB for the incoming buffer.
4298
+ *
4299
+ * Uncomment to set the maximum plaintext size of the incoming I/O buffer.
4300
+ */
4301
+ //#define MBEDTLS_SSL_IN_CONTENT_LEN 16384
4302
+
4303
+ /** \def MBEDTLS_SSL_CID_IN_LEN_MAX
4304
+ *
4305
+ * The maximum length of CIDs used for incoming DTLS messages.
4306
+ *
4307
+ */
4308
+ //#define MBEDTLS_SSL_CID_IN_LEN_MAX 32
4309
+
4310
+ /** \def MBEDTLS_SSL_CID_OUT_LEN_MAX
4311
+ *
4312
+ * The maximum length of CIDs used for outgoing DTLS messages.
4313
+ *
4314
+ */
4315
+ //#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32
4316
+
4317
+ /** \def MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY
4318
+ *
4319
+ * This option controls the use of record plaintext padding
4320
+ * in TLS 1.3 and when using the Connection ID extension in DTLS 1.2.
4321
+ *
4322
+ * The padding will always be chosen so that the length of the
4323
+ * padded plaintext is a multiple of the value of this option.
4324
+ *
4325
+ * Note: A value of \c 1 means that no padding will be used
4326
+ * for outgoing records.
4327
+ *
4328
+ * Note: On systems lacking division instructions,
4329
+ * a power of two should be preferred.
4330
+ */
4331
+ //#define MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY 16
4332
+
4333
+ /** \def MBEDTLS_SSL_OUT_CONTENT_LEN
4334
+ *
4335
+ * Maximum length (in bytes) of outgoing plaintext fragments.
4336
+ *
4337
+ * This determines the size of the outgoing TLS I/O buffer in such a way
4338
+ * that it is capable of holding the specified amount of plaintext data,
4339
+ * regardless of the protection mechanism used.
4340
+ *
4341
+ * It is possible to save RAM by setting a smaller outward buffer, while keeping
4342
+ * the default inward 16384 byte buffer to conform to the TLS specification.
4343
+ *
4344
+ * The minimum required outward buffer size is determined by the handshake
4345
+ * protocol's usage. Handshaking will fail if the outward buffer is too small.
4346
+ * The specific size requirement depends on the configured ciphers and any
4347
+ * certificate data which is sent during the handshake.
4348
+ *
4349
+ * Uncomment to set the maximum plaintext size of the outgoing I/O buffer.
4350
+ */
4351
+ //#define MBEDTLS_SSL_OUT_CONTENT_LEN 16384
4352
+
4353
+ /** \def MBEDTLS_SSL_DTLS_MAX_BUFFERING
4354
+ *
4355
+ * Maximum number of heap-allocated bytes for the purpose of
4356
+ * DTLS handshake message reassembly and future message buffering.
4357
+ *
4358
+ * This should be at least 9/8 * MBEDTLS_SSL_IN_CONTENT_LEN
4359
+ * to account for a reassembled handshake message of maximum size,
4360
+ * together with its reassembly bitmap.
4361
+ *
4362
+ * A value of 2 * MBEDTLS_SSL_IN_CONTENT_LEN (32768 by default)
4363
+ * should be sufficient for all practical situations as it allows
4364
+ * to reassembly a large handshake message (such as a certificate)
4365
+ * while buffering multiple smaller handshake messages.
4366
+ *
4367
+ */
4368
+ //#define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768
4369
+
4370
+ //#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 or 384 bits) */
4371
+ //#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */
4372
+
4373
+ /**
4374
+ * Complete list of ciphersuites to use, in order of preference.
4375
+ *
4376
+ * \warning No dependency checking is done on that field! This option can only
4377
+ * be used to restrict the set of available ciphersuites. It is your
4378
+ * responsibility to make sure the needed modules are active.
4379
+ *
4380
+ * Use this to save a few hundred bytes of ROM (default ordering of all
4381
+ * available ciphersuites) and a few to a few hundred bytes of RAM.
4382
+ *
4383
+ * The value below is only an example, not the default.
4384
+ */
4385
+ //#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
4386
+
4387
+ /**
4388
+ * \def MBEDTLS_SSL_MAX_EARLY_DATA_SIZE
4389
+ *
4390
+ * The default maximum amount of 0-RTT data. See the documentation of
4391
+ * \c mbedtls_ssl_conf_max_early_data_size() for more information.
4392
+ *
4393
+ * It must be positive and smaller than UINT32_MAX.
4394
+ *
4395
+ * If MBEDTLS_SSL_EARLY_DATA is not defined, this default value does not
4396
+ * have any impact on the build.
4397
+ */
4398
+ //#define MBEDTLS_SSL_MAX_EARLY_DATA_SIZE 1024
4399
+
4400
+ /**
4401
+ * \def MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE
4402
+ *
4403
+ * Maximum allowed ticket age difference in milliseconds tolerated between
4404
+ * server and client. Default value is 6000. This is not used in TLS 1.2.
4405
+ *
4406
+ * - The client ticket age is the time difference between the time when the
4407
+ * client proposes to the server to use the ticket and the time the client
4408
+ * received the ticket from the server.
4409
+ * - The server ticket age is the time difference between the time when the
4410
+ * server receives a proposition from the client to use the ticket and the
4411
+ * time when the ticket was created by the server.
4412
+ *
4413
+ * The ages might be different due to the client and server clocks not running
4414
+ * at the same pace. The typical accuracy of an RTC crystal is ±100 to ±20 parts
4415
+ * per million (360 to 72 milliseconds per hour). Default tolerance window is
4416
+ * 6s, thus in the worst case clients and servers must sync up their system time
4417
+ * every 6000/360/2~=8 hours.
4418
+ *
4419
+ * See section 8.3 of the TLS 1.3 specification(RFC 8446) for more information.
4420
+ */
4421
+ //#define MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE 6000
4422
+
4423
+ /**
4424
+ * \def MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH
4425
+ *
4426
+ * Size in bytes of a ticket nonce. This is not used in TLS 1.2.
4427
+ *
4428
+ * This must be less than 256.
4429
+ */
4430
+ //#define MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH 32
4431
+
4432
+ /**
4433
+ * \def MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS
4434
+ *
4435
+ * Default number of NewSessionTicket messages to be sent by a TLS 1.3 server
4436
+ * after handshake completion. This is not used in TLS 1.2 and relevant only if
4437
+ * the MBEDTLS_SSL_SESSION_TICKETS option is enabled.
4438
+ *
4439
+ */
4440
+ //#define MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS 1
4441
+
4442
+ /* X509 options */
4443
+ //#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */
4444
+ //#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */
4445
+
4446
+ /** \} name SECTION: Module configuration options */