blob: b60acdc5f88ae238069c391667e78da18495485e [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);
Valerio Settid9291062024-01-17 09:48:06 +010017psa_algorithm_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_alg(const mbedtls_ssl_ciphersuite_t *info);
18psa_key_usage_t mbedtls_ssl_get_ciphersuite_sig_pk_psa_usage(const mbedtls_ssl_ciphersuite_t *info);
Valerio Settid9291062024-01-17 09:48:06 +010019mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg(const mbedtls_ssl_ciphersuite_t *info);
20#endif /* MBEDTLS_PK_C */
21
22int mbedtls_ssl_ciphersuite_uses_ec(const mbedtls_ssl_ciphersuite_t *info);
23int mbedtls_ssl_ciphersuite_uses_psk(const mbedtls_ssl_ciphersuite_t *info);
24
25#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED)
26static inline int mbedtls_ssl_ciphersuite_has_pfs(const mbedtls_ssl_ciphersuite_t *info)
27{
28 switch (info->MBEDTLS_PRIVATE(key_exchange)) {
Valerio Settid9291062024-01-17 09:48:06 +010029 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
35 default:
36 return 0;
37 }
38}
39#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED */
40
41#if defined(MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED)
42static inline int mbedtls_ssl_ciphersuite_no_pfs(const mbedtls_ssl_ciphersuite_t *info)
43{
44 switch (info->MBEDTLS_PRIVATE(key_exchange)) {
45 case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
46 case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
47 case MBEDTLS_KEY_EXCHANGE_RSA:
48 case MBEDTLS_KEY_EXCHANGE_PSK:
Valerio Settid9291062024-01-17 09:48:06 +010049 return 1;
50
51 default:
52 return 0;
53 }
54}
55#endif /* MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED */
56
57#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED)
58static inline int mbedtls_ssl_ciphersuite_uses_ecdh(const mbedtls_ssl_ciphersuite_t *info)
59{
60 switch (info->MBEDTLS_PRIVATE(key_exchange)) {
61 case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
62 case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
63 return 1;
64
65 default:
66 return 0;
67 }
68}
69#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED */
70
71static inline int mbedtls_ssl_ciphersuite_cert_req_allowed(const mbedtls_ssl_ciphersuite_t *info)
72{
73 switch (info->MBEDTLS_PRIVATE(key_exchange)) {
74 case MBEDTLS_KEY_EXCHANGE_RSA:
Valerio Settid9291062024-01-17 09:48:06 +010075 case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
76 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
77 case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
78 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
79 return 1;
80
81 default:
82 return 0;
83 }
84}
85
86static inline int mbedtls_ssl_ciphersuite_uses_srv_cert(const mbedtls_ssl_ciphersuite_t *info)
87{
88 switch (info->MBEDTLS_PRIVATE(key_exchange)) {
89 case MBEDTLS_KEY_EXCHANGE_RSA:
Valerio Settid9291062024-01-17 09:48:06 +010090 case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
91 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
92 case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
93 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
94 return 1;
95
96 default:
97 return 0;
98 }
99}
100
Valerio Settid9291062024-01-17 09:48:06 +0100101#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED)
102static inline int mbedtls_ssl_ciphersuite_uses_ecdhe(const mbedtls_ssl_ciphersuite_t *info)
103{
104 switch (info->MBEDTLS_PRIVATE(key_exchange)) {
105 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
106 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
107 case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK:
108 return 1;
109
110 default:
111 return 0;
112 }
113}
114#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) */
115
116#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED)
117static inline int mbedtls_ssl_ciphersuite_uses_server_signature(
118 const mbedtls_ssl_ciphersuite_t *info)
119{
120 switch (info->MBEDTLS_PRIVATE(key_exchange)) {
Valerio Settid9291062024-01-17 09:48:06 +0100121 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
122 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
123 return 1;
124
125 default:
126 return 0;
127 }
128}
129#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */
130
131#endif /* MBEDTLS_SSL_CIPHERSUITES_INTERNAL_H */