embedtls.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. /*
  2. embedtls.h - MbedTLS customization Header
  3. Override mbedtls-config.h settings
  4. */
  5. #ifndef _h_EMBEDTLS
  6. #define _h_EMBEDTLS 1
  7. #include "osdep.h"
  8. #if ME_UNIX_LIKE
  9. #define MBEDTLS_DEPRECATED_WARNING
  10. #endif
  11. #define MBEDTLS_DEPRECATED_REMOVED
  12. #undef MBEDTLS_SELF_TEST
  13. #if ME_COM_MPR || ME_MPR_PRODUCT || ME_MULTITHREAD
  14. #define MBEDTLS_THREADING_C
  15. #define MBEDTLS_THREADING_ALT
  16. typedef struct MprMutex* mbedtls_threading_mutex_t;
  17. #endif
  18. #if ME_DEBUG
  19. #define MBEDTLS_SSL_DEBUG_ALL
  20. #define MBEDTLS_DEBUG_C
  21. #endif
  22. #if ME_CPU_ARCH == ME_CPU_X86 || ME_CPU_ARCH == ME_CPU_X64
  23. #define MBEDTLS_HAVE_SSE2
  24. #endif
  25. /*
  26. Map MakeMe configuration into MbedTLS defines.
  27. If mbedtls.NAME is defined, then override the MbedTLS definition from config.h
  28. mbedtls.compact defines an optimized general compact/embedded configuration.
  29. */
  30. #if ME_MBEDTLS_COMPACT
  31. #undef MBEDTLS_ARC4_C
  32. #undef MBEDTLS_AES_ROM_TABLES
  33. #undef MBEDTLS_BLOWFISH_C
  34. #undef MBEDTLS_CAMELLIA_C
  35. #undef MBEDTLS_DES_C
  36. #undef MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
  37. #undef MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
  38. #undef MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
  39. #undef MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
  40. #undef MBEDTLS_PADLOCK_C
  41. #undef MBEDTLS_PEM_WRITE_C
  42. #undef MBEDTLS_RIPEMD160_C
  43. #undef MBEDTLS_SSL3
  44. #undef MBEDTLS_SSL_PROTO_DTLS
  45. #undef MBEDTLS_SSL_DTLS_ANTI_REPLAY
  46. #undef MBEDTLS_SSL_DTLS_HELLO_VERIFY
  47. #undef MBEDTLS_SSL_DTLS_BADMAC_LIMIT
  48. #undef MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
  49. #undef MBEDTLS_TIMING_C
  50. #undef MBEDTLS_VERSION_C
  51. #undef MBEDTLS_VERSION_FEATURES
  52. #undef MBEDTLS_XTEA_C
  53. #define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
  54. #define MBEDTLS_REMOVE_ARC4_CIPHERSUITES
  55. #endif
  56. /*
  57. Feature selection based on main.me settings.mbedtls configuration.
  58. */
  59. #if ME_MBEDTLS_AES_ROM_TABLES
  60. #define MBEDTLS_AES_ROM_TABLES
  61. #elif defined(ME_MBEDTLS_AES_ROM_TABLES) && ME_MBEDTLS_AES_ROM_TABLES == 0
  62. #undef MBEDTLS_AES_ROM_TABLES
  63. #endif
  64. #if ME_MBEDTLS_ARC4
  65. #define MBEDTLS_ARC4_C
  66. #elif defined(ME_MBEDTLS_ARC4) && ME_MBEDTLS_ARC4 == 0
  67. #undef MBEDTLS_ARC4_C
  68. #define MBEDTLS_REMOVE_ARC4_CIPHERSUITES
  69. #endif
  70. #if ME_MBEDTLS_CAMELLIA
  71. #define MBEDTLS_CAMELLIA_C
  72. #elif defined(ME_MBEDTLS_CAMELLIA) && ME_MBEDTLS_CAMELLIA == 0
  73. #undef MBEDTLS_CAMELLIA_C
  74. #endif
  75. #if ME_MBEDTLS_CBC
  76. #define MBEDTLS_CIPHER_MODE_CBC
  77. #elif defined(ME_MBEDTLS_CBC) && ME_MBEDTLS_CBC == 0
  78. #undef MBEDTLS_CIPHER_MODE_CBC
  79. #endif
  80. #if ME_MBEDTLS_CCM
  81. #define MBEDTLS_CCM_C
  82. #elif defined(ME_MBEDTLS_CCM) && ME_MBEDTLS_CCM == 0
  83. #undef MBEDTLS_CCM_C
  84. #endif
  85. #if ME_MBEDTLS_DES
  86. #define MBEDTLS_DES_C
  87. #elif defined(ME_MBEDTLS_DES) && ME_MBEDTLS_DES == 0
  88. #undef MBEDTLS_DES_C
  89. #endif
  90. #if ME_MBEDTLS_PADLOCK
  91. #define MBEDTLS_PADLOCK_C
  92. #elif defined(ME_MBEDTLS_PADLOCK) && ME_MBEDTLS_PADLOCK == 0
  93. #undef MBEDTLS_PADLOCK_C
  94. #endif
  95. #if ME_MBEDTLS_PSK
  96. #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
  97. #define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
  98. #define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
  99. #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
  100. #elif defined(ME_MBEDTLS_PSK) && ME_MBEDTLS_PSK == 0
  101. #undef MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
  102. #undef MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
  103. #undef MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
  104. #undef MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
  105. #endif
  106. #if ME_MBEDTLS_XTEA
  107. #define MBEDTLS_XTEA_C
  108. #elif defined(ME_MBEDTLS_XTEA) && ME_MBEDTLS_XTEA == 0
  109. #undef MBEDTLS_XTEA_C
  110. #endif
  111. /*
  112. This is needed for some old clients (baiduspider)
  113. Default to enabled.
  114. */
  115. #if ME_MBEDTLS_SSLV2_HELLO
  116. #define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
  117. #elif defined(ME_MBEDTLS_SSLV2_HELLO) && ME_MBEDTLS_SSLV2_HELLO == 0
  118. #undef MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
  119. #endif
  120. #ifndef MBEDTLS_SSL_CIPHERSUITES
  121. /*
  122. Modified to push down to remove obsolete SHA-1 ciphers
  123. */
  124. #define MBEDTLS_SSL_CIPHERSUITES \
  125. \
  126. /* All AES-256 ephemeral suites */ \
  127. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, \
  128. MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, \
  129. MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, \
  130. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM, \
  131. MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM, \
  132. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, \
  133. MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, \
  134. MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, \
  135. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8, \
  136. MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8, \
  137. \
  138. /* All AES-128 ephemeral suites */ \
  139. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, \
  140. MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, \
  141. MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, \
  142. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM, \
  143. MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM, \
  144. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, \
  145. MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, \
  146. MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, \
  147. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, \
  148. MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8, \
  149. \
  150. /* All AES-256 suites */ \
  151. MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384, \
  152. MBEDTLS_TLS_RSA_WITH_AES_256_CCM, \
  153. MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256, \
  154. MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, \
  155. MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, \
  156. MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, \
  157. MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, \
  158. MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8, \
  159. \
  160. /* All AES-128 suites */ \
  161. MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256, \
  162. MBEDTLS_TLS_RSA_WITH_AES_128_CCM, \
  163. MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256, \
  164. MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, \
  165. MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, \
  166. MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, \
  167. MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, \
  168. MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8, \
  169. \
  170. /* Obsolete Compatibility suites */ \
  171. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, \
  172. MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, \
  173. MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA, \
  174. MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, \
  175. MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, \
  176. MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA, \
  177. MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA, \
  178. MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, \
  179. MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, \
  180. MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA, \
  181. MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, \
  182. MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
  183. #endif
  184. #endif /* _h_EMBEDTLS */