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 /* Derivation of configuration features. 16 * The derivation type (rule) and sequence are as follows: 17 * 1. Parent features derive child features. 18 * 2. Derive the features of dependencies. 19 * For example, if feature a depends on features b and c, you need to derive features b and c. 20 * 3. Child features derive parent features. 21 * The high-level interfaces of the crypto module is controlled by the parent feature macro, 22 * if there is no parent feature, such interfaces will be unavailable. 23 */ 24 25 #ifndef HITLS_CONFIG_LAYER_CRYPTO_H 26 #define HITLS_CONFIG_LAYER_CRYPTO_H 27 28 #ifdef HITLS_CRYPTO_CODECS 29 #ifndef HITLS_CRYPTO_PROVIDER 30 #define HITLS_CRYPTO_PROVIDER 31 #endif 32 #endif 33 34 #if defined(HITLS_CRYPTO_CODECSKEY) && defined(HITLS_CRYPTO_PROVIDER) 35 #ifndef HITLS_CRYPTO_CODECS 36 #define HITLS_CRYPTO_CODECS 37 #endif 38 #endif 39 40 41 #ifdef HITLS_CRYPTO_CODECSKEY 42 #ifndef HITLS_CRYPTO_KEY_ENCODE 43 #define HITLS_CRYPTO_KEY_ENCODE 44 #endif 45 #ifndef HITLS_CRYPTO_KEY_DECODE 46 #define HITLS_CRYPTO_KEY_DECODE 47 #endif 48 #ifndef HITLS_CRYPTO_KEY_EPKI 49 #define HITLS_CRYPTO_KEY_EPKI 50 #endif 51 #endif 52 53 #ifdef HITLS_CRYPTO_KEY_EPKI 54 #ifndef HITLS_CRYPTO_PBKDF2 55 #define HITLS_CRYPTO_PBKDF2 56 #endif 57 #endif 58 59 #if defined(HITLS_CRYPTO_KEY_ENCODE) || defined(HITLS_CRYPTO_KEY_DECODE) || defined(HITLS_CRYPTO_KEY_EPKI) 60 #ifndef HITLS_CRYPTO_CODECSKEY 61 #define HITLS_CRYPTO_CODECSKEY 62 #endif 63 #ifndef HITLS_BSL_ASN1 64 #define HITLS_BSL_ASN1 65 #endif 66 #ifndef HITLS_BSL_OBJ 67 #define HITLS_BSL_OBJ 68 #endif 69 #endif 70 71 #ifdef HITLS_CRYPTO_PROVIDER 72 #ifndef HITLS_BSL_PARAMS 73 #define HITLS_BSL_PARAMS 74 #endif 75 #endif 76 77 /* kdf */ 78 #ifdef HITLS_CRYPTO_KDF 79 #ifndef HITLS_CRYPTO_PBKDF2 80 #define HITLS_CRYPTO_PBKDF2 81 #endif 82 #ifndef HITLS_CRYPTO_HKDF 83 #define HITLS_CRYPTO_HKDF 84 #endif 85 #ifndef HITLS_CRYPTO_KDFTLS12 86 #define HITLS_CRYPTO_KDFTLS12 87 #endif 88 #ifndef HITLS_CRYPTO_SCRYPT 89 #define HITLS_CRYPTO_SCRYPT 90 #endif 91 #endif 92 93 #ifdef HITLS_CRYPTO_HPKE 94 #ifndef HITLS_CRYPTO_HKDF 95 #define HITLS_CRYPTO_HKDF 96 #endif 97 #ifndef HITLS_BSL_PARAMS 98 #define HITLS_BSL_PARAMS 99 #endif 100 #endif 101 102 #ifdef HITLS_CRYPTO_SCRYPT 103 #ifndef HITLS_CRYPTO_SHA256 104 #define HITLS_CRYPTO_SHA256 105 #endif 106 #ifndef HITLS_CRYPTO_PBKDF2 107 #define HITLS_CRYPTO_PBKDF2 108 #endif 109 #endif 110 111 #if defined(HITLS_CRYPTO_PBKDF2) || defined(HITLS_CRYPTO_HKDF) || defined(HITLS_CRYPTO_KDFTLS12) || \ 112 defined(HITLS_CRYPTO_SCRYPT) 113 #ifndef HITLS_CRYPTO_KDF 114 #define HITLS_CRYPTO_KDF 115 #endif 116 #ifndef HITLS_CRYPTO_HMAC 117 #define HITLS_CRYPTO_HMAC 118 #endif 119 #ifndef HITLS_BSL_PARAMS 120 #define HITLS_BSL_PARAMS 121 #endif 122 #endif 123 124 /* DRBG */ 125 #if defined(HITLS_CRYPTO_ENTROPY) && !defined(HITLS_BSL_LIST) 126 #define HITLS_BSL_LIST 127 #endif 128 129 #if defined(HITLS_CRYPTO_ENTROPY) && !defined(HITLS_CRYPTO_ENTROPY_GETENTROPY) && \ 130 !defined(HITLS_CRYPTO_ENTROPY_DEVRANDOM) && !defined(HITLS_CRYPTO_ENTROPY_SYS) && \ 131 !defined(HITLS_CRYPTO_ENTROPY_HARDWARE) 132 #define HITLS_CRYPTO_ENTROPY_DEVRANDOM 133 #endif 134 135 #ifdef HITLS_CRYPTO_DRBG 136 #ifndef HITLS_CRYPTO_DRBG_HASH 137 #define HITLS_CRYPTO_DRBG_HASH 138 #endif 139 #ifndef HITLS_CRYPTO_DRBG_HMAC 140 #define HITLS_CRYPTO_DRBG_HMAC 141 #endif 142 #ifndef HITLS_CRYPTO_DRBG_CTR 143 #define HITLS_CRYPTO_DRBG_CTR 144 #endif 145 #endif 146 147 #if defined(HITLS_CRYPTO_DRBG_HMAC) && !defined(HITLS_CRYPTO_HMAC) 148 #define HITLS_CRYPTO_HMAC 149 #endif 150 151 #if defined(HITLS_CRYPTO_DRBG_HASH) || defined(HITLS_CRYPTO_DRBG_HMAC) || defined(HITLS_CRYPTO_DRBG_CTR) 152 #ifndef HITLS_CRYPTO_DRBG 153 #define HITLS_CRYPTO_DRBG 154 #endif 155 #ifndef HITLS_BSL_PARAMS 156 #define HITLS_BSL_PARAMS 157 #endif 158 #endif 159 160 #if defined(HITLS_CRYPTO_DRBG_GM) 161 #ifndef HITLS_BSL_SAL_TIME 162 #define HITLS_BSL_SAL_TIME 163 #endif 164 #endif 165 /* MAC */ 166 #ifdef HITLS_CRYPTO_MAC 167 #ifndef HITLS_CRYPTO_HMAC 168 #define HITLS_CRYPTO_HMAC 169 #endif 170 #ifndef HITLS_CRYPTO_CMAC 171 #define HITLS_CRYPTO_CMAC 172 #endif 173 #ifndef HITLS_CRYPTO_GMAC 174 #define HITLS_CRYPTO_GMAC 175 #endif 176 #ifndef HITLS_CRYPTO_SIPHASH 177 #define HITLS_CRYPTO_SIPHASH 178 #endif 179 #ifndef HITLS_CRYPTO_CBC_MAC 180 #define HITLS_CRYPTO_CBC_MAC 181 #endif 182 #endif 183 184 #if defined(HITLS_CRYPTO_CBC_MAC) && !defined(HITLS_CRYPTO_SM4) 185 #define HITLS_CRYPTO_SM4 186 #endif 187 188 #ifdef HITLS_CRYPTO_GMAC 189 #ifndef HITLS_CRYPTO_EAL 190 #define HITLS_CRYPTO_EAL 191 #endif 192 #ifndef HITLS_CRYPTO_AES 193 #define HITLS_CRYPTO_AES 194 #endif 195 #ifndef HITLS_CRYPTO_GCM 196 #define HITLS_CRYPTO_GCM 197 #endif 198 #endif 199 200 #ifdef HITLS_CRYPTO_CMAC 201 #ifndef HITLS_CRYPTO_CMAC_AES 202 #define HITLS_CRYPTO_CMAC_AES 203 #endif 204 #ifndef HITLS_CRYPTO_CMAC_SM4 205 #define HITLS_CRYPTO_CMAC_SM4 206 #endif 207 #endif 208 #if defined(HITLS_CRYPTO_CMAC_AES) && !defined(HITLS_CRYPTO_AES) 209 #define HITLS_CRYPTO_AES 210 #endif 211 #if defined(HITLS_CRYPTO_CMAC_SM4) && !defined(HITLS_CRYPTO_SM4) 212 #define HITLS_CRYPTO_SM4 213 #endif 214 #if defined(HITLS_CRYPTO_CMAC_AES) || defined(HITLS_CRYPTO_CMAC_SM4) 215 #ifndef HITLS_CRYPTO_CMAC 216 #define HITLS_CRYPTO_CMAC 217 #endif 218 #endif 219 220 #if defined(HITLS_CRYPTO_HMAC) || defined(HITLS_CRYPTO_CMAC) || defined(HITLS_CRYPTO_GMAC) || \ 221 defined(HITLS_CRYPTO_SIPHASH) || defined(HITLS_CRYPTO_CBC_MAC) 222 #ifndef HITLS_CRYPTO_MAC 223 #define HITLS_CRYPTO_MAC 224 #endif 225 #endif 226 227 /* CIPHER */ 228 #ifdef HITLS_CRYPTO_CIPHER 229 #ifndef HITLS_CRYPTO_AES 230 #define HITLS_CRYPTO_AES 231 #endif 232 #ifndef HITLS_CRYPTO_SM4 233 #define HITLS_CRYPTO_SM4 234 #endif 235 #ifndef HITLS_CRYPTO_CHACHA20 236 #define HITLS_CRYPTO_CHACHA20 237 #endif 238 #endif 239 240 #if defined(HITLS_CRYPTO_CHACHA20) && !defined(HITLS_CRYPTO_CHACHA20POLY1305) 241 #define HITLS_CRYPTO_CHACHA20POLY1305 242 #endif 243 244 #if defined(HITLS_CRYPTO_AES) || defined(HITLS_CRYPTO_SM4) || defined(HITLS_CRYPTO_CHACHA20) 245 #ifndef HITLS_CRYPTO_CIPHER 246 #define HITLS_CRYPTO_CIPHER 247 #endif 248 #endif 249 250 /* MODES */ 251 #ifdef HITLS_CRYPTO_MODES 252 #ifndef HITLS_CRYPTO_CTR 253 #define HITLS_CRYPTO_CTR 254 #endif 255 #ifndef HITLS_CRYPTO_CBC 256 #define HITLS_CRYPTO_CBC 257 #endif 258 #ifndef HITLS_CRYPTO_ECB 259 #define HITLS_CRYPTO_ECB 260 #endif 261 #ifndef HITLS_CRYPTO_GCM 262 #define HITLS_CRYPTO_GCM 263 #endif 264 #ifndef HITLS_CRYPTO_CCM 265 #define HITLS_CRYPTO_CCM 266 #endif 267 #ifndef HITLS_CRYPTO_XTS 268 #define HITLS_CRYPTO_XTS 269 #endif 270 #ifndef HITLS_CRYPTO_CFB 271 #define HITLS_CRYPTO_CFB 272 #endif 273 #ifndef HITLS_CRYPTO_OFB 274 #define HITLS_CRYPTO_OFB 275 #endif 276 #ifndef HITLS_CRYPTO_CHACHA20POLY1305 277 #define HITLS_CRYPTO_CHACHA20POLY1305 278 #endif 279 #endif 280 281 #if defined(HITLS_CRYPTO_CTR) || defined(HITLS_CRYPTO_CBC) || defined(HITLS_CRYPTO_ECB) || \ 282 defined(HITLS_CRYPTO_GCM) || defined(HITLS_CRYPTO_CCM) || defined(HITLS_CRYPTO_XTS) || \ 283 defined(HITLS_CRYPTO_CFB) || defined(HITLS_CRYPTO_OFB) || defined(HITLS_CRYPTO_CHACHA20POLY1305) 284 #ifndef HITLS_CRYPTO_MODES 285 #define HITLS_CRYPTO_MODES 286 #endif 287 #endif 288 289 /* PKEY */ 290 #ifdef HITLS_CRYPTO_PKEY 291 #ifndef HITLS_CRYPTO_ECC 292 #define HITLS_CRYPTO_ECC 293 #endif 294 #ifndef HITLS_CRYPTO_DSA 295 #define HITLS_CRYPTO_DSA 296 #endif 297 #ifndef HITLS_CRYPTO_RSA 298 #define HITLS_CRYPTO_RSA 299 #endif 300 #ifndef HITLS_CRYPTO_DH 301 #define HITLS_CRYPTO_DH 302 #endif 303 #ifndef HITLS_CRYPTO_ECDSA 304 #define HITLS_CRYPTO_ECDSA 305 #endif 306 #ifndef HITLS_CRYPTO_ECDH 307 #define HITLS_CRYPTO_ECDH 308 #endif 309 #ifndef HITLS_CRYPTO_SM2 310 #define HITLS_CRYPTO_SM2 311 #endif 312 #ifndef HITLS_CRYPTO_CURVE25519 313 #define HITLS_CRYPTO_CURVE25519 314 #endif 315 #ifndef HITLS_CRYPTO_MLKEM 316 #define HITLS_CRYPTO_MLKEM 317 #endif 318 #ifndef HITLS_CRYPTO_MLDSA 319 #define HITLS_CRYPTO_MLDSA 320 #endif 321 #ifndef HITLS_CRYPTO_HYBRIDKEM 322 #define HITLS_CRYPTO_HYBRIDKEM 323 #endif 324 #ifndef HITLS_CRYPTO_PAILLIER 325 #define HITLS_CRYPTO_PAILLIER 326 #endif 327 #ifndef HITLS_CRYPTO_ELGAMAL 328 #define HITLS_CRYPTO_ELGAMAL 329 #endif 330 #ifndef HITLS_CRYPTO_SLH_DSA 331 #define HITLS_CRYPTO_SLH_DSA 332 #endif 333 #endif 334 335 #ifdef HITLS_CRYPTO_RSA 336 #ifndef HITLS_CRYPTO_RSA_SIGN 337 #define HITLS_CRYPTO_RSA_SIGN 338 #endif 339 #ifndef HITLS_CRYPTO_RSA_VERIFY 340 #define HITLS_CRYPTO_RSA_VERIFY 341 #endif 342 #ifndef HITLS_CRYPTO_RSA_ENCRYPT 343 #define HITLS_CRYPTO_RSA_ENCRYPT 344 #endif 345 #ifndef HITLS_CRYPTO_RSA_DECRYPT 346 #define HITLS_CRYPTO_RSA_DECRYPT 347 #endif 348 #ifndef HITLS_CRYPTO_RSA_BLINDING 349 #define HITLS_CRYPTO_RSA_BLINDING 350 #endif 351 #ifndef HITLS_CRYPTO_RSA_GEN 352 #define HITLS_CRYPTO_RSA_GEN 353 #endif 354 #ifndef HITLS_CRYPTO_RSA_PAD 355 #define HITLS_CRYPTO_RSA_PAD 356 #endif 357 #ifndef HITLS_CRYPTO_RSA_BSSA 358 #define HITLS_CRYPTO_RSA_BSSA 359 #endif 360 #endif 361 362 #ifdef HITLS_CRYPTO_RSA_BSSA 363 #ifndef HITLS_CRYPTO_RSA_EMSA_PSS 364 #define HITLS_CRYPTO_RSA_EMSA_PSS 365 #endif 366 #ifndef HITLS_CRYPTO_RSA_BLINDING 367 #define HITLS_CRYPTO_RSA_BLINDING 368 #endif 369 #endif 370 371 #ifdef HITLS_CRYPTO_RSA_GEN 372 #ifndef HITLS_CRYPTO_BN_RAND 373 #define HITLS_CRYPTO_BN_RAND 374 #endif 375 #ifndef HITLS_CRYPTO_BN_PRIME 376 #define HITLS_CRYPTO_BN_PRIME 377 #endif 378 #endif 379 380 #ifdef HITLS_CRYPTO_RSA_BLINDING 381 #ifndef HITLS_CRYPTO_BN_RAND 382 #define HITLS_CRYPTO_BN_RAND 383 #endif 384 #endif 385 386 #ifdef HITLS_CRYPTO_RSA_PAD 387 #ifndef HITLS_CRYPTO_RSA_EMSA_PSS 388 #define HITLS_CRYPTO_RSA_EMSA_PSS 389 #endif 390 #ifndef HITLS_CRYPTO_RSA_EMSA_PKCSV15 391 #define HITLS_CRYPTO_RSA_EMSA_PKCSV15 392 #endif 393 #ifndef HITLS_CRYPTO_RSAES_OAEP 394 #define HITLS_CRYPTO_RSAES_OAEP 395 #endif 396 #ifndef HITLS_CRYPTO_RSAES_PKCSV15 397 #define HITLS_CRYPTO_RSAES_PKCSV15 398 #endif 399 #ifndef HITLS_CRYPTO_RSAES_PKCSV15_TLS 400 #define HITLS_CRYPTO_RSAES_PKCSV15_TLS 401 #endif 402 #ifndef HITLS_CRYPTO_RSA_NO_PAD 403 #define HITLS_CRYPTO_RSA_NO_PAD 404 #endif 405 #endif 406 407 #if defined(HITLS_CRYPTO_RSA_EMSA_PSS) || defined(HITLS_CRYPTO_RSA_EMSA_PKCSV15) || \ 408 defined(HITLS_CRYPTO_RSAES_OAEP) || defined(HITLS_CRYPTO_RSAES_PKCSV15) || \ 409 defined(HITLS_CRYPTO_RSAES_PKCSV15_TLS) || defined(HITLS_CRYPTO_RSA_NO_PAD) 410 #ifndef HITLS_CRYPTO_RSA_PAD 411 #define HITLS_CRYPTO_RSA_PAD 412 #endif 413 #endif 414 415 #if defined(HITLS_CRYPTO_RSA_SIGN) || defined(HITLS_CRYPTO_RSA_VERIFY) || \ 416 defined(HITLS_CRYPTO_RSA_ENCRYPT) || defined(HITLS_CRYPTO_RSA_DECRYPT) || \ 417 defined(HITLS_CRYPTO_RSA_BLINDING) || defined(HITLS_CRYPTO_RSA_PAD) || defined(HITLS_CRYPTO_RSA_GEN) 418 #ifndef HITLS_CRYPTO_RSA 419 #define HITLS_CRYPTO_RSA 420 #endif 421 422 // rsa common dependency 423 #ifndef HITLS_CRYPTO_BN_BASIC 424 #define HITLS_CRYPTO_BN_BASIC 425 #endif 426 #endif 427 428 #ifdef HITLS_CRYPTO_CURVE25519 429 #ifndef HITLS_CRYPTO_X25519 430 #define HITLS_CRYPTO_X25519 431 #endif 432 #ifndef HITLS_CRYPTO_ED25519 433 #define HITLS_CRYPTO_ED25519 434 #endif 435 #endif 436 437 #if defined(HITLS_CRYPTO_ED25519) && !defined(HITLS_CRYPTO_SHA512) 438 #define HITLS_CRYPTO_SHA512 439 #endif 440 441 #if defined(HITLS_CRYPTO_X25519) || defined(HITLS_CRYPTO_ED25519) 442 #ifndef HITLS_CRYPTO_CURVE25519 443 #define HITLS_CRYPTO_CURVE25519 444 #endif 445 #endif 446 447 #ifdef HITLS_CRYPTO_SM2 448 #ifndef HITLS_CRYPTO_SM2_SIGN 449 #define HITLS_CRYPTO_SM2_SIGN 450 #endif 451 #ifndef HITLS_CRYPTO_SM2_CRYPT 452 #define HITLS_CRYPTO_SM2_CRYPT 453 #endif 454 #ifndef HITLS_CRYPTO_SM2_EXCH 455 #define HITLS_CRYPTO_SM2_EXCH 456 #endif 457 #endif 458 459 #if defined(HITLS_CRYPTO_SM2_SIGN) || defined(HITLS_CRYPTO_SM2_CRYPT) || defined(HITLS_CRYPTO_SM2_EXCH) 460 #ifndef HITLS_CRYPTO_SM2 461 #define HITLS_CRYPTO_SM2 462 #endif 463 #endif 464 465 #ifdef HITLS_CRYPTO_SM2 466 #ifndef HITLS_CRYPTO_SM3 467 #define HITLS_CRYPTO_SM3 468 #endif 469 #ifndef HITLS_CRYPTO_CURVE_SM2 470 #define HITLS_CRYPTO_CURVE_SM2 471 #endif 472 #endif 473 474 #ifdef HITLS_CRYPTO_SLH_DSA 475 #ifndef HITLS_CRYPTO_SHA2 476 #define HITLS_CRYPTO_SHA2 477 #endif 478 #ifndef HITLS_CRYPTO_SHA3 479 #define HITLS_CRYPTO_SHA3 480 #endif 481 #ifndef HITLS_BSL_OBJ 482 #define HITLS_BSL_OBJ 483 #endif 484 #ifndef HITLS_CRYPTO_EAL 485 #define HITLS_CRYPTO_EAL 486 #endif 487 #ifndef HITLS_CRYPTO_HMAC 488 #define HITLS_CRYPTO_HMAC 489 #endif 490 #ifndef HITLS_CRYPTO_SHA256 491 #define HITLS_CRYPTO_SHA256 492 #endif 493 #ifndef HITLS_CRYPTO_SHA512 494 #define HITLS_CRYPTO_SHA512 495 #endif 496 #endif 497 498 #if defined(HITLS_CRYPTO_MLDSA) || defined(HITLS_CRYPTO_ELGAMAL) 499 #ifndef HITLS_CRYPTO_BN_RAND 500 #define HITLS_CRYPTO_BN_RAND 501 #endif 502 #ifndef HITLS_CRYPTO_BN_PRIME 503 #define HITLS_CRYPTO_BN_PRIME 504 #endif 505 #endif 506 507 #ifdef HITLS_CRYPTO_HYBRIDKEM 508 #ifndef HITLS_CRYPTO_MLKEM 509 #define HITLS_CRYPTO_MLKEM 510 #endif 511 #endif 512 513 #ifdef HITLS_CRYPTO_MLKEM 514 #ifndef HITLS_CRYPTO_SHA3 515 #define HITLS_CRYPTO_SHA3 516 #endif 517 #ifndef HITLS_CRYPTO_KEM 518 #define HITLS_CRYPTO_KEM 519 #endif 520 #endif 521 522 #ifdef HITLS_CRYPTO_MLDSA 523 #ifndef HITLS_CRYPTO_SHA3 524 #define HITLS_CRYPTO_SHA3 525 #endif 526 #ifndef HITLS_BSL_OBJ 527 #define HITLS_BSL_OBJ 528 #endif 529 #endif 530 531 #ifdef HITLS_CRYPTO_ECC 532 #ifndef HITLS_CRYPTO_CURVE_NISTP224 533 #define HITLS_CRYPTO_CURVE_NISTP224 534 #endif 535 #ifndef HITLS_CRYPTO_CURVE_NISTP256 536 #define HITLS_CRYPTO_CURVE_NISTP256 537 #endif 538 #ifndef HITLS_CRYPTO_CURVE_NISTP384 539 #define HITLS_CRYPTO_CURVE_NISTP384 540 #endif 541 #ifndef HITLS_CRYPTO_CURVE_NISTP521 542 #define HITLS_CRYPTO_CURVE_NISTP521 543 #endif 544 #ifndef HITLS_CRYPTO_CURVE_BP256R1 545 #define HITLS_CRYPTO_CURVE_BP256R1 546 #endif 547 #ifndef HITLS_CRYPTO_CURVE_BP384R1 548 #define HITLS_CRYPTO_CURVE_BP384R1 549 #endif 550 #ifndef HITLS_CRYPTO_CURVE_BP512R1 551 #define HITLS_CRYPTO_CURVE_BP512R1 552 #endif 553 #ifndef HITLS_CRYPTO_CURVE_SM2 554 #define HITLS_CRYPTO_CURVE_SM2 555 #endif 556 #endif 557 558 #if defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP256) || \ 559 defined(HITLS_CRYPTO_CURVE_NISTP384) || defined(HITLS_CRYPTO_CURVE_NISTP521) || \ 560 defined(HITLS_CRYPTO_CURVE_BP256R1) || defined(HITLS_CRYPTO_CURVE_BP384R1) || \ 561 defined(HITLS_CRYPTO_CURVE_BP512R1) || defined(HITLS_CRYPTO_CURVE_SM2) 562 #ifndef HITLS_CRYPTO_ECC 563 #define HITLS_CRYPTO_ECC 564 #endif 565 #ifndef HITLS_CRYPTO_BN_RAND 566 #define HITLS_CRYPTO_BN_RAND 567 #endif 568 #endif 569 570 #if defined(HITLS_CRYPTO_NIST_ECC_ACCELERATE) && !defined(HITLS_CRYPTO_ECC) 571 #undef HITLS_CRYPTO_NIST_ECC_ACCELERATE // Avoid turning on unnecessary functions. 572 #endif 573 574 #if defined(HITLS_CRYPTO_NIST_ECC_ACCELERATE) && defined(__SIZEOF_INT128__) && (__SIZEOF_INT128__ == 16) 575 #define HITLS_CRYPTO_NIST_USE_ACCEL 576 #endif 577 578 #if defined(HITLS_CRYPTO_DSA) || defined(HITLS_CRYPTO_CURVE25519) || defined(HITLS_CRYPTO_RSA) || \ 579 defined(HITLS_CRYPTO_DH) || defined(HITLS_CRYPTO_ECDSA) || defined(HITLS_CRYPTO_ECDH) || \ 580 defined(HITLS_CRYPTO_SM2) || defined(HITLS_CRYPTO_PAILLIER)|| defined(HITLS_CRYPTO_ELGAMAL) || \ 581 defined(HITLS_CRYPTO_MLDSA) || defined(HITLS_CRYPTO_MLKEM) || defined(HITLS_CRYPTO_HYBRIDKEM) || \ 582 defined(HITLS_CRYPTO_SLH_DSA) 583 #ifndef HITLS_CRYPTO_PKEY 584 #define HITLS_CRYPTO_PKEY 585 #endif 586 #ifndef HITLS_BSL_PARAMS 587 #define HITLS_BSL_PARAMS 588 #endif 589 #endif 590 591 /* bn */ 592 #ifdef HITLS_CRYPTO_BN 593 #ifndef HITLS_CRYPTO_BN_BASIC 594 #define HITLS_CRYPTO_BN_BASIC 595 #endif 596 #ifndef HITLS_CRYPTO_BN_RAND 597 #define HITLS_CRYPTO_BN_RAND 598 #endif 599 #ifndef HITLS_CRYPTO_EAL_BN 600 #define HITLS_CRYPTO_EAL_BN 601 #endif 602 #ifndef HITLS_CRYPTO_BN_PRIME 603 #define HITLS_CRYPTO_BN_PRIME 604 #endif 605 #ifndef HITLS_CRYPTO_BN_STR_CONV 606 #define HITLS_CRYPTO_BN_STR_CONV 607 #endif 608 #ifndef HITLS_CRYPTO_BN_CB 609 #define HITLS_CRYPTO_BN_CB 610 #endif 611 #ifndef HITLS_CRYPTO_BN_PRIME_RFC3526 612 #define HITLS_CRYPTO_BN_PRIME_RFC3526 613 #endif 614 #endif 615 616 #if defined(HITLS_CRYPTO_BN_PRIME) && !defined(HITLS_CRYPTO_BN_RAND) 617 #define HITLS_CRYPTO_BN_RAND 618 #endif 619 620 #if defined(HITLS_CRYPTO_BN_RAND) || defined(HITLS_CRYPTO_EAL_BN) || defined(HITLS_CRYPTO_BN_PRIME) || \ 621 defined(HITLS_CRYPTO_BN_STR_CONV) || defined(HITLS_CRYPTO_BN_CB) || defined(HITLS_CRYPTO_BN_PRIME_RFC3526) || \ 622 defined(HITLS_CRYPTO_BN_BASIC) 623 #ifndef HITLS_CRYPTO_BN 624 #define HITLS_CRYPTO_BN 625 #endif 626 #endif 627 628 /* MD */ 629 #ifdef HITLS_CRYPTO_MD 630 #ifndef HITLS_CRYPTO_MD5 631 #define HITLS_CRYPTO_MD5 632 #endif 633 #ifndef HITLS_CRYPTO_SM3 634 #define HITLS_CRYPTO_SM3 635 #endif 636 #ifndef HITLS_CRYPTO_SHA1 637 #define HITLS_CRYPTO_SHA1 638 #endif 639 #ifndef HITLS_CRYPTO_SHA2 640 #define HITLS_CRYPTO_SHA2 641 #endif 642 #ifndef HITLS_CRYPTO_SHA3 643 #define HITLS_CRYPTO_SHA3 644 #endif 645 #endif 646 647 #ifdef HITLS_CRYPTO_SHA2 648 #ifndef HITLS_CRYPTO_SHA224 649 #define HITLS_CRYPTO_SHA224 650 #endif 651 #ifndef HITLS_CRYPTO_SHA256 652 #define HITLS_CRYPTO_SHA256 653 #endif 654 #ifndef HITLS_CRYPTO_SHA384 655 #define HITLS_CRYPTO_SHA384 656 #endif 657 #ifndef HITLS_CRYPTO_SHA512 658 #define HITLS_CRYPTO_SHA512 659 #endif 660 #endif 661 662 #if defined(HITLS_CRYPTO_SHA224) && !defined(HITLS_CRYPTO_SHA256) 663 #define HITLS_CRYPTO_SHA256 664 #endif 665 #if defined(HITLS_CRYPTO_SHA384) && !defined(HITLS_CRYPTO_SHA512) 666 #define HITLS_CRYPTO_SHA512 667 #endif 668 669 #if defined(HITLS_CRYPTO_SHA256) || defined(HITLS_CRYPTO_SHA512) 670 #ifndef HITLS_CRYPTO_SHA2 671 #define HITLS_CRYPTO_SHA2 672 #endif 673 #endif 674 675 #if defined(HITLS_CRYPTO_MD5) || defined(HITLS_CRYPTO_SM3) || defined(HITLS_CRYPTO_SHA1) || \ 676 defined(HITLS_CRYPTO_SHA2) || defined(HITLS_CRYPTO_SHA3) 677 #ifndef HITLS_CRYPTO_MD 678 #define HITLS_CRYPTO_MD 679 #endif 680 #endif 681 682 /* Assembling Macros */ 683 #if defined(HITLS_CRYPTO_AES_X8664) || defined(HITLS_CRYPTO_AES_ARMV8) 684 #define HITLS_CRYPTO_AES_ASM 685 #endif 686 687 #if defined(HITLS_CRYPTO_CHACHA20_X8664) || defined(HITLS_CRYPTO_CHACHA20_ARMV8) 688 #define HITLS_CRYPTO_CHACHA20_ASM 689 #endif 690 691 #if defined(HITLS_CRYPTO_SM4_X8664) || defined(HITLS_CRYPTO_SM4_ARMV8) 692 #define HITLS_CRYPTO_SM4_ASM 693 #endif 694 695 #if defined(HITLS_CRYPTO_MODES_X8664) 696 #define HITLS_CRYPTO_CHACHA20POLY1305_X8664 697 #define HITLS_CRYPTO_GCM_X8664 698 #endif 699 700 #if defined(HITLS_CRYPTO_MODES_ARMV8) 701 #define HITLS_CRYPTO_CHACHA20POLY1305_ARMV8 702 #define HITLS_CRYPTO_GCM_ARMV8 703 #endif 704 705 #if defined(HITLS_CRYPTO_MODES_X8664) || defined(HITLS_CRYPTO_MODES_ARMV8) 706 #define HITLS_CRYPTO_MODES_ASM 707 #endif 708 709 #if defined(HITLS_CRYPTO_CHACHA20POLY1305_X8664) || defined(HITLS_CRYPTO_CHACHA20POLY1305_ARMV8) 710 #define HITLS_CRYPTO_CHACHA20POLY1305_ASM 711 #endif 712 713 #if defined(HITLS_CRYPTO_GCM_X8664) || defined(HITLS_CRYPTO_GCM_ARMV8) 714 #define HITLS_CRYPTO_GCM_ASM 715 #endif 716 717 #if defined(HITLS_CRYPTO_MD5_X8664) 718 #define HITLS_CRYPTO_MD5_ASM 719 #endif 720 721 #if defined(HITLS_CRYPTO_SHA1_X8664) || defined(HITLS_CRYPTO_SHA1_ARMV8) 722 #define HITLS_CRYPTO_SHA1_ASM 723 #endif 724 725 #if defined(HITLS_CRYPTO_SHA224_X8664) || defined(HITLS_CRYPTO_SHA224_ARMV8) || \ 726 defined(HITLS_CRYPTO_SHA256_X8664) || defined(HITLS_CRYPTO_SHA256_ARMV8) || \ 727 defined(HITLS_CRYPTO_SHA384_X8664) || defined(HITLS_CRYPTO_SHA384_ARMV8) || \ 728 defined(HITLS_CRYPTO_SHA512_X8664) || defined(HITLS_CRYPTO_SHA512_ARMV8) || \ 729 defined(HITLS_CRYPTO_SHA2_X8664) || defined(HITLS_CRYPTO_SHA2_ARMV8) 730 #define HITLS_CRYPTO_SHA2_ASM 731 #endif 732 733 #if defined(HITLS_CRYPTO_SM3_X8664) || defined(HITLS_CRYPTO_SM3_ARMV8) 734 #define HITLS_CRYPTO_SM3_ASM 735 #endif 736 737 #if defined(HITLS_CRYPTO_BN_X8664) || defined(HITLS_CRYPTO_BN_ARMV8) 738 #define HITLS_CRYPTO_BN_ASM 739 #endif 740 741 #if defined(HITLS_CRYPTO_ECC_X8664) 742 #define HITLS_CRYPTO_CURVE_NISTP256_X8664 743 #define HITLS_CRYPTO_CURVE_SM2_X8664 744 #endif 745 746 #if defined(HITLS_CRYPTO_ECC_ARMV8) 747 #define HITLS_CRYPTO_CURVE_NISTP256_ARMV8 748 #define HITLS_CRYPTO_CURVE_SM2_ARMV8 749 #endif 750 751 #if defined(HITLS_CRYPTO_ECC_X8664) || defined(HITLS_CRYPTO_ECC_ARMV8) 752 #define HITLS_CRYPTO_ECC_ASM 753 #endif 754 755 #if defined(HITLS_CRYPTO_CURVE_NISTP256_X8664) || defined(HITLS_CRYPTO_CURVE_NISTP256_ARMV8) 756 #define HITLS_CRYPTO_CURVE_NISTP256_ASM 757 #endif 758 759 #if defined(HITLS_CRYPTO_CURVE_NISTP384_X8664) || defined(HITLS_CRYPTO_CURVE_NISTP384_ARMV8) 760 #define HITLS_CRYPTO_CURVE_NISTP384_ASM 761 #endif 762 763 #if defined(HITLS_CRYPTO_CURVE_SM2_X8664) || defined(HITLS_CRYPTO_CURVE_SM2_ARMV8) 764 #define HITLS_CRYPTO_CURVE_SM2_ASM 765 #endif 766 767 #if (!defined(HITLS_SIXTY_FOUR_BITS)) 768 #if (((defined(HITLS_CRYPTO_CURVE_NISTP224) || defined(HITLS_CRYPTO_CURVE_NISTP521)) && \ 769 !defined(HITLS_CRYPTO_NIST_USE_ACCEL)) || \ 770 defined(HITLS_CRYPTO_CURVE_NISTP384) || \ 771 (defined(HITLS_CRYPTO_CURVE_NISTP256) && !defined(HITLS_CRYPTO_CURVE_NISTP256_ASM) && \ 772 (!defined(HITLS_CRYPTO_NIST_ECC_ACCELERATE)) && (!defined(HITLS_CRYPTO_NIST_USE_ACCEL))) || \ 773 (defined(HITLS_CRYPTO_CURVE_SM2) && !defined(HITLS_CRYPTO_CURVE_SM2_ASM))) 774 #define HITLS_CRYPTO_CURVE_MONT_NIST 775 #endif 776 #endif 777 778 #if defined(HITLS_CRYPTO_CURVE_BP256R1) || defined(HITLS_CRYPTO_CURVE_BP384R1) || \ 779 defined(HITLS_CRYPTO_CURVE_BP512R1) 780 #define HITLS_CRYPTO_CURVE_MONT_PRIME 781 #endif 782 783 #if defined(HITLS_CRYPTO_CURVE_MONT_PRIME) || defined(HITLS_CRYPTO_CURVE_MONT_NIST) 784 #define HITLS_CRYPTO_CURVE_MONT 785 #endif 786 787 #endif /* HITLS_CONFIG_LAYER_CRYPTO_H */ 788