blob: 5c7e7f9b939a6f3badde9c1a501986091925b996 [file] [log] [blame]
Valerio Settid9291062024-01-17 09:48:06 +01001/**
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)
16mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_pk_alg(const mbedtls_ssl_ciphersuite_t *info);
17#if defined(MBEDTLS_USE_PSA_CRYPTO)
18psa_algorithm_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_alg(const mbedtls_ssl_ciphersuite_t *info);
19psa_key_usage_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_usage(const mbedtls_ssl_ciphersuite_t *info);
20#endif /* MBEDTLS_USE_PSA_CRYPTO */
21mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg(const mbedtls_ssl_ciphersuite_t *info);
22#endif /* MBEDTLS_PK_C */
23
24int mbedtls_ssl_ciphersuite_uses_ec(const mbedtls_ssl_ciphersuite_t *info);
25int mbedtls_ssl_ciphersuite_uses_psk(const mbedtls_ssl_ciphersuite_t *info);
26
27#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED)
28static 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 Settid9291062024-01-17 09:48:06 +010032 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)
45static 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 Settid9291062024-01-17 09:48:06 +010052 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)
61static 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
74static 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
90static 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 Settid9291062024-01-17 09:48:06 +010094 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)
107static 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 Settid9291062024-01-17 09:48:06 +0100111 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)
120static 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)
135static 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 */