ssl_ciphersuites_internal.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. /**
  2. * \file ssl_ciphersuites_internal.h
  3. *
  4. * \brief Internal part of the public "ssl_ciphersuites.h".
  5. */
  6. /*
  7. * Copyright The Mbed TLS Contributors
  8. * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
  9. */
  10. #ifndef MBEDTLS_SSL_CIPHERSUITES_INTERNAL_H
  11. #define MBEDTLS_SSL_CIPHERSUITES_INTERNAL_H
  12. #include "mbedtls/pk.h"
  13. #if defined(MBEDTLS_PK_C)
  14. mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_pk_alg(const mbedtls_ssl_ciphersuite_t *info);
  15. #if defined(MBEDTLS_USE_PSA_CRYPTO)
  16. psa_algorithm_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_alg(const mbedtls_ssl_ciphersuite_t *info);
  17. psa_key_usage_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_usage(const mbedtls_ssl_ciphersuite_t *info);
  18. #endif /* MBEDTLS_USE_PSA_CRYPTO */
  19. mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg(const mbedtls_ssl_ciphersuite_t *info);
  20. #endif /* MBEDTLS_PK_C */
  21. int mbedtls_ssl_ciphersuite_uses_ec(const mbedtls_ssl_ciphersuite_t *info);
  22. int mbedtls_ssl_ciphersuite_uses_psk(const mbedtls_ssl_ciphersuite_t *info);
  23. #if defined(MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED)
  24. static inline int mbedtls_ssl_ciphersuite_has_pfs(const mbedtls_ssl_ciphersuite_t *info)
  25. {
  26. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  27. case MBEDTLS_KEY_EXCHANGE_DHE_RSA:
  28. case MBEDTLS_KEY_EXCHANGE_DHE_PSK:
  29. case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
  30. case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK:
  31. case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
  32. case MBEDTLS_KEY_EXCHANGE_ECJPAKE:
  33. return 1;
  34. default:
  35. return 0;
  36. }
  37. }
  38. #endif /* MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED */
  39. #if defined(MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED)
  40. static inline int mbedtls_ssl_ciphersuite_no_pfs(const mbedtls_ssl_ciphersuite_t *info)
  41. {
  42. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  43. case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
  44. case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
  45. case MBEDTLS_KEY_EXCHANGE_RSA:
  46. case MBEDTLS_KEY_EXCHANGE_PSK:
  47. case MBEDTLS_KEY_EXCHANGE_RSA_PSK:
  48. return 1;
  49. default:
  50. return 0;
  51. }
  52. }
  53. #endif /* MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED */
  54. #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED)
  55. static inline int mbedtls_ssl_ciphersuite_uses_ecdh(const mbedtls_ssl_ciphersuite_t *info)
  56. {
  57. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  58. case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
  59. case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
  60. return 1;
  61. default:
  62. return 0;
  63. }
  64. }
  65. #endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED */
  66. static inline int mbedtls_ssl_ciphersuite_cert_req_allowed(const mbedtls_ssl_ciphersuite_t *info)
  67. {
  68. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  69. case MBEDTLS_KEY_EXCHANGE_RSA:
  70. case MBEDTLS_KEY_EXCHANGE_DHE_RSA:
  71. case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
  72. case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
  73. case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
  74. case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
  75. return 1;
  76. default:
  77. return 0;
  78. }
  79. }
  80. static inline int mbedtls_ssl_ciphersuite_uses_srv_cert(const mbedtls_ssl_ciphersuite_t *info)
  81. {
  82. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  83. case MBEDTLS_KEY_EXCHANGE_RSA:
  84. case MBEDTLS_KEY_EXCHANGE_RSA_PSK:
  85. case MBEDTLS_KEY_EXCHANGE_DHE_RSA:
  86. case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
  87. case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
  88. case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
  89. case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
  90. return 1;
  91. default:
  92. return 0;
  93. }
  94. }
  95. #if defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED)
  96. static inline int mbedtls_ssl_ciphersuite_uses_dhe(const mbedtls_ssl_ciphersuite_t *info)
  97. {
  98. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  99. case MBEDTLS_KEY_EXCHANGE_DHE_RSA:
  100. case MBEDTLS_KEY_EXCHANGE_DHE_PSK:
  101. return 1;
  102. default:
  103. return 0;
  104. }
  105. }
  106. #endif /* MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) */
  107. #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED)
  108. static inline int mbedtls_ssl_ciphersuite_uses_ecdhe(const mbedtls_ssl_ciphersuite_t *info)
  109. {
  110. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  111. case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
  112. case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
  113. case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK:
  114. return 1;
  115. default:
  116. return 0;
  117. }
  118. }
  119. #endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) */
  120. #if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED)
  121. static inline int mbedtls_ssl_ciphersuite_uses_server_signature(
  122. const mbedtls_ssl_ciphersuite_t *info)
  123. {
  124. switch (info->MBEDTLS_PRIVATE(key_exchange)) {
  125. case MBEDTLS_KEY_EXCHANGE_DHE_RSA:
  126. case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
  127. case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
  128. return 1;
  129. default:
  130. return 0;
  131. }
  132. }
  133. #endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */
  134. #endif /* MBEDTLS_SSL_CIPHERSUITES_INTERNAL_H */