check_crypto_config.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /**
  2. * \file check_crypto_config.h
  3. *
  4. * \brief Consistency checks for PSA configuration options
  5. */
  6. /*
  7. * Copyright The Mbed TLS Contributors
  8. * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
  9. */
  10. /*
  11. * It is recommended to include this file from your crypto_config.h
  12. * in order to catch dependency issues early.
  13. */
  14. #ifndef MBEDTLS_CHECK_CRYPTO_CONFIG_H
  15. #define MBEDTLS_CHECK_CRYPTO_CONFIG_H
  16. #if defined(PSA_WANT_ALG_CCM) && \
  17. !(defined(PSA_WANT_KEY_TYPE_AES) || \
  18. defined(PSA_WANT_KEY_TYPE_CAMELLIA))
  19. #error "PSA_WANT_ALG_CCM defined, but not all prerequisites"
  20. #endif
  21. #if defined(PSA_WANT_ALG_CMAC) && \
  22. !(defined(PSA_WANT_KEY_TYPE_AES) || \
  23. defined(PSA_WANT_KEY_TYPE_CAMELLIA) || \
  24. defined(PSA_WANT_KEY_TYPE_DES))
  25. #error "PSA_WANT_ALG_CMAC defined, but not all prerequisites"
  26. #endif
  27. #if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) && \
  28. !(defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \
  29. defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY))
  30. #error "PSA_WANT_ALG_DETERMINISTIC_ECDSA defined, but not all prerequisites"
  31. #endif
  32. #if defined(PSA_WANT_ALG_ECDSA) && \
  33. !(defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \
  34. defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY))
  35. #error "PSA_WANT_ALG_ECDSA defined, but not all prerequisites"
  36. #endif
  37. #if defined(PSA_WANT_ALG_GCM) && \
  38. !(defined(PSA_WANT_KEY_TYPE_AES) || \
  39. defined(PSA_WANT_KEY_TYPE_CAMELLIA))
  40. #error "PSA_WANT_ALG_GCM defined, but not all prerequisites"
  41. #endif
  42. #if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT) && \
  43. !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \
  44. defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY))
  45. #error "PSA_WANT_ALG_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
  46. #endif
  47. #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) && \
  48. !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \
  49. defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY))
  50. #error "PSA_WANT_ALG_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
  51. #endif
  52. #if defined(PSA_WANT_ALG_RSA_OAEP) && \
  53. !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \
  54. defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY))
  55. #error "PSA_WANT_ALG_RSA_OAEP defined, but not all prerequisites"
  56. #endif
  57. #if defined(PSA_WANT_ALG_RSA_PSS) && \
  58. !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \
  59. defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY))
  60. #error "PSA_WANT_ALG_RSA_PSS defined, but not all prerequisites"
  61. #endif
  62. #if (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \
  63. defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT) || \
  64. defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT) || \
  65. defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE) || \
  66. defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE)) && \
  67. !defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
  68. #error "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_xxx defined, but not all prerequisites"
  69. #endif
  70. #if (defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \
  71. defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT) || \
  72. defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT) || \
  73. defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE)) && \
  74. !defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
  75. #error "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_xxx defined, but not all prerequisites"
  76. #endif
  77. #if (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC) || \
  78. defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT) || \
  79. defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT) || \
  80. defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE)) && \
  81. !defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY)
  82. #error "PSA_WANT_KEY_TYPE_DH_KEY_PAIR_xxx defined, but not all prerequisites"
  83. #endif
  84. #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR)
  85. #if defined(MBEDTLS_DEPRECATED_REMOVED)
  86. #error "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR is deprecated and will be removed in a \
  87. future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_xxx \
  88. symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE"
  89. #elif defined(MBEDTLS_DEPRECATED_WARNING)
  90. #warning "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR is deprecated and will be removed in a \
  91. future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_xxx \
  92. symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE"
  93. #endif /* MBEDTLS_DEPRECATED_WARNING */
  94. #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR */
  95. #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR)
  96. #if defined(MBEDTLS_DEPRECATED_REMOVED)
  97. #error "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR is deprecated and will be removed in a \
  98. future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_xxx \
  99. symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE"
  100. #elif defined(MBEDTLS_DEPRECATED_WARNING)
  101. #warning "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR is deprecated and will be removed in a \
  102. future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_xxx \
  103. symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE"
  104. #endif /* MBEDTLS_DEPRECATED_WARNING */
  105. #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR */
  106. #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE)
  107. #error "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE defined, but feature is not supported"
  108. #endif
  109. #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE)
  110. #error "PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE defined, but feature is not supported"
  111. #endif
  112. #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_USE_PSA_CRYPTO) && \
  113. !(defined(PSA_WANT_ALG_SHA_1) || defined(PSA_WANT_ALG_SHA_256) || defined(PSA_WANT_ALG_SHA_512))
  114. #error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites"
  115. #endif
  116. #if defined(PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS) && \
  117. !defined(PSA_WANT_ALG_SHA_256)
  118. #error "PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS defined, but not all prerequisites"
  119. #endif
  120. #endif /* MBEDTLS_CHECK_CRYPTO_CONFIG_H */