1 /* 2 * This file is part of the openHiTLS project. 3 * 4 * openHiTLS is licensed under the Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * 8 * http://license.coscl.org.cn/MulanPSL2 9 * 10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13 * See the Mulan PSL v2 for more details. 14 */ 15 /* Check the dependency of the configuration features. The check rules are as follows: 16 * Non-deterministic feature dependency needs to be checked. 17 * For example, feature a depends on feature b or c: 18 * if feature a is defined, at least one of feature b and c must be defined. 19 */ 20 21 #ifndef HITLS_CONFIG_CHECK_H 22 #define HITLS_CONFIG_CHECK_H 23 24 #ifdef HITLS_TLS 25 #if defined(HITLS_TLS_FEATURE_PROVIDER) && !defined(HITLS_CRYPTO_PROVIDER) 26 #error "[HiTLS] The tls-provider must work with crypto-provider" 27 #endif 28 29 #if (defined(HITLS_TLS_FEATURE_PHA) || defined(HITLS_TLS_FEATURE_KEY_UPDATE)) && !defined(HITLS_TLS_PROTO_TLS13) 30 #error "[HiTLS] Integrity check must work with TLS13" 31 #endif 32 33 #if defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) 34 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) 35 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_128_GCM_SHA256 must work with sha256, gcm, aes" 36 #endif 37 #endif 38 #if defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) 39 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) 40 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_256_GCM_SHA384 must work with sha384, gcm, aes" 41 #endif 42 #endif 43 #if defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) 44 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) 45 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256 must work with sha256, chacha20poly1305, \ 46 chacha20" 47 #endif 48 #endif 49 #if defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) 50 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) 51 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_128_CCM_SHA256 must work with sha256, ccm, aes" 52 #endif 53 #endif 54 #if defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256) 55 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) 56 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_128_CCM_8_SHA256 must work with sha256, ccm, aes" 57 #endif 58 #endif 59 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA) 60 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 61 !defined(HITLS_CRYPTO_RSA) 62 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa" 63 #endif 64 #endif 65 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA) 66 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 67 !defined(HITLS_CRYPTO_RSA) 68 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa" 69 #endif 70 #endif 71 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA256) 72 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 73 !defined(HITLS_CRYPTO_RSA) 74 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa" 75 #endif 76 #endif 77 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA256) 78 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 79 !defined(HITLS_CRYPTO_RSA) 80 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, rsa" 81 #endif 82 #endif 83 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_GCM_SHA256) 84 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 85 !defined(HITLS_CRYPTO_RSA) 86 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa" 87 #endif 88 #endif 89 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_GCM_SHA384) 90 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 91 !defined(HITLS_CRYPTO_RSA) 92 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa" 93 #endif 94 #endif 95 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_GCM_SHA256) 96 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 97 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH) 98 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa, dh" 99 #endif 100 #endif 101 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_GCM_SHA384) 102 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 103 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH) 104 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa, dh" 105 #endif 106 #endif 107 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA) 108 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 109 !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA) 110 #error \ 111 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, ecdh, ecdsa" 112 #endif 113 #endif 114 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA) 115 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 116 !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA) 117 #error \ 118 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, ecdh, ecdsa" 119 #endif 120 #endif 121 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256) 122 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 123 !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA) 124 #error \ 125 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, ecdh, \ 126 ecdsa" 127 #endif 128 #endif 129 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384) 130 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 131 !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA) 132 #error \ 133 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, ecdh, \ 134 ecdsa" 135 #endif 136 #endif 137 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256) 138 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 139 !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA) 140 #error \ 141 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, ecdh, \ 142 ecdsa" 143 #endif 144 #endif 145 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384) 146 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 147 !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA) 148 #error \ 149 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, ecdh, \ 150 ecdsa" 151 #endif 152 #endif 153 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA) 154 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 155 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH) 156 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa, ecdh" 157 #endif 158 #endif 159 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA) 160 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 161 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH) 162 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa, ecdh" 163 #endif 164 #endif 165 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA256) 166 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 167 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH) 168 #error \ 169 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa, ecdh" 170 #endif 171 #endif 172 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA384) 173 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 174 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH) 175 #error \ 176 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, rsa, ecdh" 177 #endif 178 #endif 179 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_GCM_SHA256) 180 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 181 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH) 182 #error \ 183 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa, ecdh" 184 #endif 185 #endif 186 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_GCM_SHA384) 187 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 188 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH) 189 #error \ 190 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa, ecdh" 191 #endif 192 #endif 193 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256) 194 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \ 195 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH) 196 #error \ 197 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \ 198 chacha20poly1305, chacha20, rsa, ecdh" 199 #endif 200 #endif 201 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256) 202 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \ 203 !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA) 204 #error \ 205 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \ 206 chacha20poly1305, chacha20, ecdh, ecdsa" 207 #endif 208 #endif 209 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256) 210 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \ 211 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH) 212 #error \ 213 "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \ 214 chacha20poly1305, chacha20, rsa, dh" 215 #endif 216 #endif 217 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_GCM_SHA256) 218 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 219 !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH) 220 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, dsa, dh" 221 #endif 222 #endif 223 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_GCM_SHA384) 224 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 225 !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH) 226 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, dsa, dh" 227 #endif 228 #endif 229 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA) 230 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 231 !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH) 232 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dsa, dh" 233 #endif 234 #endif 235 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA) 236 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 237 !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH) 238 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dsa, dh" 239 #endif 240 #endif 241 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA256) 242 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 243 !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH) 244 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, dsa, dh" 245 #endif 246 #endif 247 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA256) 248 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 249 !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH) 250 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, dsa, dh" 251 #endif 252 #endif 253 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA) 254 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 255 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH) 256 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa, dh" 257 #endif 258 #endif 259 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA) 260 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 261 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH) 262 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa, dh" 263 #endif 264 #endif 265 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA256) 266 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 267 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH) 268 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa, dh" 269 #endif 270 #endif 271 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA256) 272 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 273 !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH) 274 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, rsa, dh" 275 #endif 276 #endif 277 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA) 278 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) 279 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes" 280 #endif 281 #endif 282 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA) 283 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) 284 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes" 285 #endif 286 #endif 287 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA) 288 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 289 !defined(HITLS_CRYPTO_DH) 290 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dh" 291 #endif 292 #endif 293 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA) 294 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 295 !defined(HITLS_CRYPTO_DH) 296 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dh" 297 #endif 298 #endif 299 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA) 300 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 301 !defined(HITLS_CRYPTO_RSA) 302 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa" 303 #endif 304 #endif 305 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA) 306 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 307 !defined(HITLS_CRYPTO_RSA) 308 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa" 309 #endif 310 #endif 311 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_GCM_SHA256) 312 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) 313 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes" 314 #endif 315 #endif 316 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_GCM_SHA384) 317 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) 318 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes" 319 #endif 320 #endif 321 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CCM) 322 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) 323 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_CCM must work with ccm, aes" 324 #endif 325 #endif 326 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_GCM_SHA256) 327 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 328 !defined(HITLS_CRYPTO_DH) 329 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, dh" 330 #endif 331 #endif 332 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_GCM_SHA384) 333 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 334 !defined(HITLS_CRYPTO_DH) 335 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, dh" 336 #endif 337 #endif 338 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CCM) 339 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_DH) 340 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CCM must work with ccm, aes, dh" 341 #endif 342 #endif 343 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CCM) 344 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_DH) 345 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CCM must work with ccm, aes, dh" 346 #endif 347 #endif 348 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256) 349 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 350 !defined(HITLS_CRYPTO_RSA) 351 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa" 352 #endif 353 #endif 354 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384) 355 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 356 !defined(HITLS_CRYPTO_RSA) 357 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa" 358 #endif 359 #endif 360 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA256) 361 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) 362 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes" 363 #endif 364 #endif 365 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA384) 366 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) 367 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes" 368 #endif 369 #endif 370 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA256) 371 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 372 !defined(HITLS_CRYPTO_DH) 373 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, dh" 374 #endif 375 #endif 376 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA384) 377 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 378 !defined(HITLS_CRYPTO_DH) 379 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, dh" 380 #endif 381 #endif 382 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256) 383 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 384 !defined(HITLS_CRYPTO_RSA) 385 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa" 386 #endif 387 #endif 388 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384) 389 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 390 !defined(HITLS_CRYPTO_RSA) 391 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, rsa" 392 #endif 393 #endif 394 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA) 395 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 396 !defined(HITLS_CRYPTO_ECDH) 397 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, ecdh" 398 #endif 399 #endif 400 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA) 401 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 402 !defined(HITLS_CRYPTO_ECDH) 403 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, ecdh" 404 #endif 405 #endif 406 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA256) 407 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 408 !defined(HITLS_CRYPTO_ECDH) 409 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, ecdh" 410 #endif 411 #endif 412 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA384) 413 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 414 !defined(HITLS_CRYPTO_ECDH) 415 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, ecdh" 416 #endif 417 #endif 418 #if defined(HITLS_TLS_SUITE_PSK_WITH_CHACHA20_POLY1305_SHA256) 419 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) 420 #error \ 421 "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, chacha20poly1305, \ 422 chacha20" 423 #endif 424 #endif 425 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256) 426 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \ 427 !defined(HITLS_CRYPTO_ECDH) 428 #error \ 429 "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \ 430 chacha20poly1305, chacha20, ecdh" 431 #endif 432 #endif 433 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256) 434 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \ 435 !defined(HITLS_CRYPTO_DH) 436 #error \ 437 "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \ 438 chacha20poly1305, chacha20, dh" 439 #endif 440 #endif 441 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256) 442 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \ 443 !defined(HITLS_CRYPTO_RSA) 444 #error \ 445 "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \ 446 chacha20poly1305, chacha20, rsa" 447 #endif 448 #endif 449 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CCM_SHA256) 450 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || \ 451 !defined(HITLS_CRYPTO_ECDH) 452 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CCM_SHA256 must work with sha256, ccm, aes, ecdh" 453 #endif 454 #endif 455 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_GCM_SHA256) 456 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 457 !defined(HITLS_CRYPTO_ECDH) 458 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, ecdh" 459 #endif 460 #endif 461 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_GCM_SHA384) 462 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 463 !defined(HITLS_CRYPTO_ECDH) 464 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, ecdh" 465 #endif 466 #endif 467 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA) 468 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 469 !defined(HITLS_CRYPTO_DH) 470 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dh" 471 #endif 472 #endif 473 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA) 474 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 475 !defined(HITLS_CRYPTO_DH) 476 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dh" 477 #endif 478 #endif 479 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA256) 480 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 481 !defined(HITLS_CRYPTO_DH) 482 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, dh" 483 #endif 484 #endif 485 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA256) 486 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 487 !defined(HITLS_CRYPTO_DH) 488 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, dh" 489 #endif 490 #endif 491 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_GCM_SHA256) 492 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 493 !defined(HITLS_CRYPTO_DH) 494 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, dh" 495 #endif 496 #endif 497 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_GCM_SHA384) 498 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \ 499 !defined(HITLS_CRYPTO_DH) 500 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, dh" 501 #endif 502 #endif 503 #if defined(HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_128_CBC_SHA) 504 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 505 !defined(HITLS_CRYPTO_DH) || !defined(HITLS_CRYPTO_ECDH) 506 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dh, ecdh" 507 #endif 508 #endif 509 #if defined(HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_256_CBC_SHA) 510 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \ 511 !defined(HITLS_CRYPTO_DH) || !defined(HITLS_CRYPTO_ECDH) 512 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dh, ecdh" 513 #endif 514 #endif 515 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CCM) 516 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_ECDH) || \ 517 !defined(HITLS_CRYPTO_ECDSA) 518 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CCM must work with ccm, aes, ecdh, ecdsa" 519 #endif 520 #endif 521 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CCM) 522 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_ECDH) || \ 523 !defined(HITLS_CRYPTO_ECDSA) 524 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CCM must work with ccm, aes, ecdh, ecdsa" 525 #endif 526 #endif 527 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CCM) 528 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) || \ 529 !defined(HITLS_CRYPTO_DH) 530 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CCM must work with ccm, aes, rsa, dh" 531 #endif 532 #endif 533 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CCM) 534 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) || \ 535 !defined(HITLS_CRYPTO_DH) 536 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CCM must work with ccm, aes, rsa, dh" 537 #endif 538 #endif 539 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM) 540 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) 541 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM must work with ccm, aes, rsa" 542 #endif 543 #endif 544 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM_8) 545 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) 546 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM_8 must work with ccm, aes, rsa" 547 #endif 548 #endif 549 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM) 550 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) 551 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM must work with ccm, aes, rsa" 552 #endif 553 #endif 554 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM_8) 555 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) 556 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM_8 must work with ccm, aes, rsa" 557 #endif 558 #endif 559 #if defined(HITLS_TLS_SUITE_ECDHE_SM4_CBC_SM3) 560 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_SM4) || \ 561 !defined(HITLS_CRYPTO_SM2) || !defined(HITLS_CRYPTO_ECDH) 562 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_SM4_CBC_SM3 must work with sm3, cbc, sm4, sm2, ecdh" 563 #endif 564 #endif 565 #if defined(HITLS_TLS_SUITE_ECC_SM4_CBC_SM3) 566 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_SM4) || \ 567 !defined(HITLS_CRYPTO_SM2) 568 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECC_SM4_CBC_SM3 must work with sm3, cbc, sm4, sm2" 569 #endif 570 #endif 571 #if defined(HITLS_TLS_SUITE_ECDHE_SM4_GCM_SM3) 572 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_SM4) || \ 573 !defined(HITLS_CRYPTO_SM2) || !defined(HITLS_CRYPTO_ECDH) 574 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_SM4_GCM_SM3 must work with sm3, gcm, sm4, sm2, ecdh" 575 #endif 576 #endif 577 #if defined(HITLS_TLS_SUITE_ECC_SM4_GCM_SM3) 578 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_SM4) || \ 579 !defined(HITLS_CRYPTO_SM2) 580 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECC_SM4_GCM_SM3 must work with sm3, gcm, sm4, sm2" 581 #endif 582 #endif 583 584 #if defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) || defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) || \ 585 defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) || defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) || \ 586 defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256) 587 #if (!defined(HITLS_TLS_SUITE_AUTH_RSA) && !defined(HITLS_TLS_SUITE_AUTH_ECDSA) && \ 588 !defined(HITLS_TLS_SUITE_AUTH_PSK)) 589 #error "[HiTLS] tls13 ciphersuite must work with suite_auth_rsa or suite_auth_ecdsa or suite_auth_psk" 590 #endif 591 #endif 592 #endif /* HITLS_TLS */ 593 594 #ifdef HITLS_CRYPTO 595 #if defined(HITLS_CRYPTO_HMAC) && !defined(HITLS_CRYPTO_MD) 596 #error "[HiTLS] The hmac must work with hash" 597 #endif 598 599 #if defined(HITLS_CRYPTO_DRBG_HASH) && !defined(HITLS_CRYPTO_MD) 600 #error "[HiTLS] The drbg_hash must work with hash" 601 #endif 602 603 #if defined(HITLS_CRYPTO_DRBG_CTR) && !defined(HITLS_CRYPTO_AES) && !defined(HITLS_CRYPTO_SM4) 604 #error "[HiTLS] AES or SM4 must be enabled for DRBG-CTR" 605 #endif 606 607 #if defined(HITLS_CRYPTO_ENTROPY) && !defined(HITLS_CRYPTO_DRBG) 608 #error "[HiTLS] The entropy must work with at leaset one drbg algorithm." 609 #endif 610 611 #if defined(HITLS_CRYPTO_DRBG_GM) && !defined(HITLS_CRYPTO_DRBG_CTR) && !defined(HITLS_CRYPTO_DRBG_HASH) 612 #error "[HiTLS]DRBG-HASH or DRBG-CTR must be enabled for DRBG-GM" 613 #endif 614 615 #if defined(HITLS_CRYPTO_ENTROPY_HARDWARE) && !defined(HITLS_CRYPTO_EALINIT) 616 #error "[HiTLS] ealinit must be enabled when the hardware entropy source is enabled." 617 #endif 618 619 #if defined(HITLS_CRYPTO_ENTROPY) && defined(HITLS_CRYPTO_DRBG_CTR) && !defined(HITLS_CRYPTO_DRBG_GM) 620 #if !defined(HITLS_CRYPTO_CMAC_AES) 621 #error "[HiTLS] Configure the conditioning function. Currently, CRYPT_MAC_CMAC_AES is supported. \ 622 others may be supported in the future." 623 #endif 624 #endif 625 626 #if defined(HITLS_CRYPTO_BN) && !(defined(HITLS_THIRTY_TWO_BITS) || defined(HITLS_SIXTY_FOUR_BITS)) 627 #error "[HiTLS] To use bn, the number of system bits must be specified first." 628 #endif 629 630 #if defined(HITLS_CRYPTO_HPKE) 631 #if !defined(HITLS_CRYPTO_AES) && !defined(HITLS_CRYPTO_CHACHA20POLY1305) 632 #error "[HiTLS] The hpke must work with aes or chacha20poly1305." 633 #endif 634 635 #if !defined(HITLS_CRYPTO_CHACHA20POLY1305) && defined(HITLS_CRYPTO_AES) && !defined(HITLS_CRYPTO_GCM) 636 #error "[HiTLS] The hpke must work with aes-gcm." 637 #endif 638 639 #if !defined(HITLS_CRYPTO_CURVE_NISTP256) && !defined(HITLS_CRYPTO_CURVE_NISTP384) && \ 640 !defined(HITLS_CRYPTO_CURVE_NISTP521) && !defined(HITLS_CRYPTO_X25519) 641 #error "[HiTLS] The hpke must work with p256 or p384 or p521 or x25519." 642 #endif 643 #endif /* HITLS_CRYPTO_HPKE */ 644 645 #if defined(HITLS_CRYPTO_RSA_BLINDING) && !(defined(HITLS_CRYPTO_BN_RAND)) 646 #error "[HiTLS] The blind must work with bn_rand" 647 #endif 648 649 #if defined(HITLS_CRYPTO_RSA_SIGN) || defined(HITLS_CRYPTO_RSA_VERIFY) 650 #if !defined(HITLS_CRYPTO_RSA_EMSA_PSS) && !defined(HITLS_CRYPTO_RSA_EMSA_PKCSV15) 651 #error "[HiTLS] The rsa_sign/rsa_verify must work with rsa_emsa_pss/rsa_emsa_pkcsv15" 652 #endif 653 #endif 654 655 #if defined(HITLS_CRYPTO_RSA_ENCRYPT) || defined(HITLS_CRYPTO_RSA_DECRYPT) 656 #if !defined(HITLS_CRYPTO_RSAES_OAEP) && !defined(HITLS_CRYPTO_RSAES_PKCSV15) && \ 657 !defined(HITLS_CRYPTO_RSAES_PKCSV15_TLS) && !defined(HITLS_CRYPTO_RSA_NO_PAD) 658 #error "[HiTLS] The rsa_encrypt/rsa_decrypt must work with rsaes_oaep/rsaes_pkcsv15/rsaes_pkcsv15_tls/rsa_no_pad" 659 #endif 660 #endif 661 662 #if defined(HITLS_CRYPTO_RSA_NO_PAD) || defined(HITLS_CRYPTO_RSAES_OAEP) || defined(HITLS_CRYPTO_RSAES_PKCSV15) || \ 663 defined(HITLS_CRYPTO_RSAES_PKCSV15_TLS) 664 #if !defined(HITLS_CRYPTO_RSA_ENCRYPT) && !defined(HITLS_CRYPTO_RSA_DECRYPT) 665 #error "[HiTLS] The rsaes_oaep/rsaes_pkcsv15/rsaes_pkcsv15_tls/rsa_no_pad must work with rsa_encrypt/rsa_decrypt" 666 #endif 667 #endif 668 669 #if defined(HITLS_CRYPTO_RSA_EMSA_PSS) || defined(HITLS_CRYPTO_RSA_EMSA_PKCSV15) 670 #if !defined(HITLS_CRYPTO_RSA_SIGN) && !defined(HITLS_CRYPTO_RSA_VERIFY) 671 #error "[HiTLS] The rsa_emsa_pss/rsa_emsa_pkcsv15 must work with rsa_sign/rsa_verify" 672 #endif 673 #endif 674 675 #if defined(HITLS_CRYPTO_RSA_BLINDING) && !defined(HITLS_CRYPTO_RSA_SIGN) && !defined(HITLS_CRYPTO_RSA_DECRYPT) 676 #error "[HiTLS] The rsa_blinding must work with rsa_sign or rsa_decrypt" 677 #endif 678 679 #if defined(HITLS_CRYPTO_RSA_ENCRYPT) && (defined(HITLS_CRYPTO_RSAES_OAEP) || defined(HITLS_CRYPTO_RSAES_PKCSV15)) 680 #ifndef HITLS_CRYPTO_DRBG 681 #error "[HiTLS] The rsa_encrypt+rsaes_oaep/rsa_pkcsv15 must work with a drbg algorithm." 682 #endif 683 #endif 684 685 #if defined(HITLS_CRYPTO_RSA_SIGN) && defined(HITLS_CRYPTO_RSA_EMSA_PSS) && !defined(HITLS_CRYPTO_DRBG) 686 #error "[HiTLS] The rsa_sign+rsa_emsa_pss must work with a drbg algorithm." 687 #endif 688 689 #if defined(HITLS_CRYPTO_RSA_GEN) && !(defined(HITLS_CRYPTO_BN_RAND) && defined(HITLS_CRYPTO_BN_PRIME)) 690 #error "[HiTLS] The rsa_gen must work with bn_rand and bn_prime" 691 #endif 692 693 #if defined(HITLS_CRYPTO_ECDSA) 694 #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \ 695 !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \ 696 !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \ 697 !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI) 698 #error "[HiTLS] Nist curves or brainpool curves or 192Wapi curve must be enabled for ECDSA." 699 #endif 700 #endif 701 702 #if defined(HITLS_CRYPTO_ECDH) 703 #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \ 704 !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \ 705 !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \ 706 !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI) 707 #error "[HiTLS] Nist curves or brainpool curves must be enabled for ECDH." 708 #endif 709 #endif 710 711 #if defined(HITLS_CRYPTO_CMVP_INTEGRITY) && !defined(HITLS_CRYPTO_CMVP) 712 #error "[HiTLS] Integrity check must work with CMVP" 713 #endif 714 715 #if (defined(HITLS_CRYPTO_SHA1_ARMV8) || \ 716 defined(HITLS_CRYPTO_SHA256_ARMV8) || defined(HITLS_CRYPTO_SHA224_ARMV8) || defined(HITLS_CRYPTO_SHA2_ARMV8) || \ 717 defined(HITLS_CRYPTO_SM4_X8664)) && !defined(HITLS_CRYPTO_EALINIT) 718 #error "[HiTLS] ealinit must be enabled for sha1_armv8 or sha256_armv8 or sha224_armv8 or sm4_x8664." 719 #endif 720 721 #if defined(HITLS_CRYPTO_HYBRIDKEM) 722 #if !defined(HITLS_CRYPTO_X25519) && !defined(HITLS_CRYPTO_ECDH) 723 #error "[HiTLS] The hybrid must work with x25519 or ecdh." 724 #endif 725 #endif 726 727 #if defined(HITLS_CRYPTO_HMAC) && !defined(HITLS_CRYPTO_MD) 728 #error "[HiTLS] The hmac must work with hash." 729 #endif 730 731 #if defined(HITLS_CRYPTO_DRBG_HASH) && !defined(HITLS_CRYPTO_MD) 732 #error "[HiTLS] The drbg_hash must work with hash." 733 #endif 734 735 #if defined(HITLS_CRYPTO_ENTROPY) && !defined(HITLS_CRYPTO_DRBG) 736 #error "[HiTLS] The entropy must work with at leaset one drbg algorithm." 737 #endif 738 739 #if defined(HITLS_CRYPTO_PKEY) && !defined(HITLS_CRYPTO_MD) 740 #error "[HiTLS] The pkey must work with hash." 741 #endif 742 743 #if defined(HITLS_CRYPTO_BN) && !(defined(HITLS_THIRTY_TWO_BITS) || defined(HITLS_SIXTY_FOUR_BITS)) 744 #error "[HiTLS] To use bn, the number of system bits must be specified first." 745 #endif 746 747 #ifdef HITLS_CRYPTO_KEY_EPKI 748 #if !defined(HITLS_CRYPTO_KEY_ENCODE) && !defined(HITLS_CRYPTO_KEY_DECODE) 749 #error "[HiTLS] The key encrypt must work with key gen or key parse." 750 #endif 751 #if !defined(HITLS_CRYPTO_DRBG) 752 #error "[HiTLS] The key encrypt must work with a drbg algorithm." 753 #endif 754 #if !defined(HITLS_CRYPTO_CIPHER) 755 #error "[HiTLS] The key encrypt must work with a symmetric algorithm." 756 #endif 757 #endif 758 759 #if defined(HITLS_CRYPTO_CODECSKEY) && (!defined(HITLS_CRYPTO_ECDSA) && !defined(HITLS_CRYPTO_SM2_SIGN) && \ 760 !defined(HITLS_CRYPTO_SM2_CRYPT) && !defined(HITLS_CRYPTO_ED25519) && !defined(HITLS_CRYPTO_RSA_SIGN)) && \ 761 !defined(HITLS_CRYPTO_RSA_VERIFY) 762 #error "[HiTLS] The encode must work with ecdsa or sm2_sign or sm2_crypt or ed25519 or rsa_sign or rsa_verify." 763 #endif 764 765 #endif /* HITLS_CRYPTO */ 766 767 #ifdef HITLS_PKI 768 769 #if defined(HITLS_PKI_INFO) && !defined(HITLS_PKI_X509_CRT) 770 #error "[HiTLS] The info must work with x509_crt_gen or x509_crt_parse." 771 #endif 772 773 #endif /* HITLS_PKI */ 774 775 #if defined(HITLS_TLS_FEATURE_ETM) && !defined(HITLS_TLS_SUITE_CIPHER_CBC) 776 #error "[HiTLS] The etm must work with cbc" 777 #endif 778 779 #endif /* HITLS_CONFIG_CHECK_H */ 780