| Valerio Setti | d929106 | 2024-01-17 09:48:06 +0100 | [diff] [blame] | 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 |  | 
|  | 13 | #include "mbedtls/pk.h" | 
|  | 14 |  | 
|  | 15 | #if defined(MBEDTLS_PK_C) | 
|  | 16 | mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_pk_alg(const mbedtls_ssl_ciphersuite_t *info); | 
|  | 17 | #if defined(MBEDTLS_USE_PSA_CRYPTO) | 
|  | 18 | psa_algorithm_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_alg(const mbedtls_ssl_ciphersuite_t *info); | 
|  | 19 | psa_key_usage_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_usage(const mbedtls_ssl_ciphersuite_t *info); | 
|  | 20 | #endif /* MBEDTLS_USE_PSA_CRYPTO */ | 
|  | 21 | mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg(const mbedtls_ssl_ciphersuite_t *info); | 
|  | 22 | #endif /* MBEDTLS_PK_C */ | 
|  | 23 |  | 
|  | 24 | int mbedtls_ssl_ciphersuite_uses_ec(const mbedtls_ssl_ciphersuite_t *info); | 
|  | 25 | int mbedtls_ssl_ciphersuite_uses_psk(const mbedtls_ssl_ciphersuite_t *info); | 
|  | 26 |  | 
|  | 27 | #if defined(MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED) | 
|  | 28 | static inline int mbedtls_ssl_ciphersuite_has_pfs(const mbedtls_ssl_ciphersuite_t *info) | 
|  | 29 | { | 
|  | 30 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 31 | case MBEDTLS_KEY_EXCHANGE_DHE_RSA: | 
| Valerio Setti | d929106 | 2024-01-17 09:48:06 +0100 | [diff] [blame] | 32 | case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: | 
|  | 33 | case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK: | 
|  | 34 | case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: | 
|  | 35 | case MBEDTLS_KEY_EXCHANGE_ECJPAKE: | 
|  | 36 | return 1; | 
|  | 37 |  | 
|  | 38 | default: | 
|  | 39 | return 0; | 
|  | 40 | } | 
|  | 41 | } | 
|  | 42 | #endif /* MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED */ | 
|  | 43 |  | 
|  | 44 | #if defined(MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED) | 
|  | 45 | static inline int mbedtls_ssl_ciphersuite_no_pfs(const mbedtls_ssl_ciphersuite_t *info) | 
|  | 46 | { | 
|  | 47 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 48 | case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: | 
|  | 49 | case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: | 
|  | 50 | case MBEDTLS_KEY_EXCHANGE_RSA: | 
|  | 51 | case MBEDTLS_KEY_EXCHANGE_PSK: | 
| Valerio Setti | d929106 | 2024-01-17 09:48:06 +0100 | [diff] [blame] | 52 | return 1; | 
|  | 53 |  | 
|  | 54 | default: | 
|  | 55 | return 0; | 
|  | 56 | } | 
|  | 57 | } | 
|  | 58 | #endif /* MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED */ | 
|  | 59 |  | 
|  | 60 | #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) | 
|  | 61 | static inline int mbedtls_ssl_ciphersuite_uses_ecdh(const mbedtls_ssl_ciphersuite_t *info) | 
|  | 62 | { | 
|  | 63 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 64 | case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: | 
|  | 65 | case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: | 
|  | 66 | return 1; | 
|  | 67 |  | 
|  | 68 | default: | 
|  | 69 | return 0; | 
|  | 70 | } | 
|  | 71 | } | 
|  | 72 | #endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED */ | 
|  | 73 |  | 
|  | 74 | static inline int mbedtls_ssl_ciphersuite_cert_req_allowed(const mbedtls_ssl_ciphersuite_t *info) | 
|  | 75 | { | 
|  | 76 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 77 | case MBEDTLS_KEY_EXCHANGE_RSA: | 
|  | 78 | case MBEDTLS_KEY_EXCHANGE_DHE_RSA: | 
|  | 79 | case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: | 
|  | 80 | case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: | 
|  | 81 | case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: | 
|  | 82 | case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: | 
|  | 83 | return 1; | 
|  | 84 |  | 
|  | 85 | default: | 
|  | 86 | return 0; | 
|  | 87 | } | 
|  | 88 | } | 
|  | 89 |  | 
|  | 90 | static inline int mbedtls_ssl_ciphersuite_uses_srv_cert(const mbedtls_ssl_ciphersuite_t *info) | 
|  | 91 | { | 
|  | 92 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 93 | case MBEDTLS_KEY_EXCHANGE_RSA: | 
| Valerio Setti | d929106 | 2024-01-17 09:48:06 +0100 | [diff] [blame] | 94 | case MBEDTLS_KEY_EXCHANGE_DHE_RSA: | 
|  | 95 | case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: | 
|  | 96 | case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: | 
|  | 97 | case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: | 
|  | 98 | case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: | 
|  | 99 | return 1; | 
|  | 100 |  | 
|  | 101 | default: | 
|  | 102 | return 0; | 
|  | 103 | } | 
|  | 104 | } | 
|  | 105 |  | 
|  | 106 | #if defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) | 
|  | 107 | static inline int mbedtls_ssl_ciphersuite_uses_dhe(const mbedtls_ssl_ciphersuite_t *info) | 
|  | 108 | { | 
|  | 109 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 110 | case MBEDTLS_KEY_EXCHANGE_DHE_RSA: | 
| Valerio Setti | d929106 | 2024-01-17 09:48:06 +0100 | [diff] [blame] | 111 | return 1; | 
|  | 112 |  | 
|  | 113 | default: | 
|  | 114 | return 0; | 
|  | 115 | } | 
|  | 116 | } | 
|  | 117 | #endif /* MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) */ | 
|  | 118 |  | 
|  | 119 | #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) | 
|  | 120 | static inline int mbedtls_ssl_ciphersuite_uses_ecdhe(const mbedtls_ssl_ciphersuite_t *info) | 
|  | 121 | { | 
|  | 122 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 123 | case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: | 
|  | 124 | case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: | 
|  | 125 | case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK: | 
|  | 126 | return 1; | 
|  | 127 |  | 
|  | 128 | default: | 
|  | 129 | return 0; | 
|  | 130 | } | 
|  | 131 | } | 
|  | 132 | #endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) */ | 
|  | 133 |  | 
|  | 134 | #if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) | 
|  | 135 | static inline int mbedtls_ssl_ciphersuite_uses_server_signature( | 
|  | 136 | const mbedtls_ssl_ciphersuite_t *info) | 
|  | 137 | { | 
|  | 138 | switch (info->MBEDTLS_PRIVATE(key_exchange)) { | 
|  | 139 | case MBEDTLS_KEY_EXCHANGE_DHE_RSA: | 
|  | 140 | case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: | 
|  | 141 | case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: | 
|  | 142 | return 1; | 
|  | 143 |  | 
|  | 144 | default: | 
|  | 145 | return 0; | 
|  | 146 | } | 
|  | 147 | } | 
|  | 148 | #endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ | 
|  | 149 |  | 
|  | 150 | #endif /* MBEDTLS_SSL_CIPHERSUITES_INTERNAL_H */ |