]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Source/mbedtls/library/ssl_ciphersuites.c
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Source / mbedtls / library / ssl_ciphersuites.c
1 /**\r
2  * \file ssl_ciphersuites.c\r
3  *\r
4  * \brief SSL ciphersuites for mbed TLS\r
5  *\r
6  *  Copyright (C) 2006-2015, ARM Limited, All Rights Reserved\r
7  *  SPDX-License-Identifier: Apache-2.0\r
8  *\r
9  *  Licensed under the Apache License, Version 2.0 (the "License"); you may\r
10  *  not use this file except in compliance with the License.\r
11  *  You may obtain a copy of the License at\r
12  *\r
13  *  http://www.apache.org/licenses/LICENSE-2.0\r
14  *\r
15  *  Unless required by applicable law or agreed to in writing, software\r
16  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
17  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
18  *  See the License for the specific language governing permissions and\r
19  *  limitations under the License.\r
20  *\r
21  *  This file is part of mbed TLS (https://tls.mbed.org)\r
22  */\r
23 \r
24 #if !defined(MBEDTLS_CONFIG_FILE)\r
25 #include "mbedtls/config.h"\r
26 #else\r
27 #include MBEDTLS_CONFIG_FILE\r
28 #endif\r
29 \r
30 #if defined(MBEDTLS_SSL_TLS_C)\r
31 \r
32 #if defined(MBEDTLS_PLATFORM_C)\r
33 #include "mbedtls/platform.h"\r
34 #else\r
35 #include <stdlib.h>\r
36 #endif\r
37 \r
38 #include "mbedtls/ssl_ciphersuites.h"\r
39 #include "mbedtls/ssl.h"\r
40 \r
41 #include <string.h>\r
42 \r
43 /*\r
44  * Ordered from most preferred to least preferred in terms of security.\r
45  *\r
46  * Current rule (except RC4 and 3DES, weak and null which come last):\r
47  * 1. By key exchange:\r
48  *    Forward-secure non-PSK > forward-secure PSK > ECJPAKE > other non-PSK > other PSK\r
49  * 2. By key length and cipher:\r
50  *    ChaCha > AES-256 > Camellia-256 > ARIA-256 > AES-128 > Camellia-128 > ARIA-128\r
51  * 3. By cipher mode when relevant GCM > CCM > CBC > CCM_8\r
52  * 4. By hash function used when relevant\r
53  * 5. By key exchange/auth again: EC > non-EC\r
54  */\r
55 static const int ciphersuite_preference[] =\r
56 {\r
57 #if defined(MBEDTLS_SSL_CIPHERSUITES)\r
58     MBEDTLS_SSL_CIPHERSUITES,\r
59 #else\r
60     /* Chacha-Poly ephemeral suites */\r
61     MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,\r
62     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,\r
63     MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,\r
64 \r
65     /* All AES-256 ephemeral suites */\r
66     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,\r
67     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,\r
68     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,\r
69     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM,\r
70     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM,\r
71     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,\r
72     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,\r
73     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,\r
74     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,\r
75     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,\r
76     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA,\r
77     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8,\r
78     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8,\r
79 \r
80     /* All CAMELLIA-256 ephemeral suites */\r
81     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,\r
82     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,\r
83     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,\r
84     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,\r
85     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,\r
86     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,\r
87     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,\r
88 \r
89     /* All ARIA-256 ephemeral suites */\r
90     MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,\r
91     MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,\r
92     MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384,\r
93     MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384,\r
94     MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384,\r
95     MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384,\r
96 \r
97     /* All AES-128 ephemeral suites */\r
98     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,\r
99     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\r
100     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,\r
101     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM,\r
102     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM,\r
103     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,\r
104     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,\r
105     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,\r
106     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,\r
107     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,\r
108     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA,\r
109     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8,\r
110     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8,\r
111 \r
112     /* All CAMELLIA-128 ephemeral suites */\r
113     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,\r
114     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,\r
115     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,\r
116     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,\r
117     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,\r
118     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,\r
119     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,\r
120 \r
121     /* All ARIA-128 ephemeral suites */\r
122     MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,\r
123     MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,\r
124     MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256,\r
125     MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256,\r
126     MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256,\r
127     MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256,\r
128 \r
129     /* The PSK ephemeral suites */\r
130     MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
131     MBEDTLS_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
132     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,\r
133     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM,\r
134     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,\r
135     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,\r
136     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,\r
137     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA,\r
138     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,\r
139     MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,\r
140     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,\r
141     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8,\r
142     MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384,\r
143     MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384,\r
144     MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384,\r
145 \r
146     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,\r
147     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM,\r
148     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,\r
149     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,\r
150     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,\r
151     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA,\r
152     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,\r
153     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,\r
154     MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,\r
155     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8,\r
156     MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256,\r
157     MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256,\r
158     MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256,\r
159 \r
160     /* The ECJPAKE suite */\r
161     MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8,\r
162 \r
163     /* All AES-256 suites */\r
164     MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384,\r
165     MBEDTLS_TLS_RSA_WITH_AES_256_CCM,\r
166     MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256,\r
167     MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA,\r
168     MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,\r
169     MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,\r
170     MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,\r
171     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,\r
172     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,\r
173     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,\r
174     MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8,\r
175 \r
176     /* All CAMELLIA-256 suites */\r
177     MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,\r
178     MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,\r
179     MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,\r
180     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384,\r
181     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,\r
182     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,\r
183     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,\r
184 \r
185     /* All ARIA-256 suites */\r
186     MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384,\r
187     MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384,\r
188     MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384,\r
189     MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384,\r
190     MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384,\r
191     MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384,\r
192 \r
193     /* All AES-128 suites */\r
194     MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256,\r
195     MBEDTLS_TLS_RSA_WITH_AES_128_CCM,\r
196     MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256,\r
197     MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA,\r
198     MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,\r
199     MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,\r
200     MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,\r
201     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,\r
202     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,\r
203     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,\r
204     MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8,\r
205 \r
206     /* All CAMELLIA-128 suites */\r
207     MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,\r
208     MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,\r
209     MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,\r
210     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256,\r
211     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,\r
212     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,\r
213     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,\r
214 \r
215     /* All ARIA-128 suites */\r
216     MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256,\r
217     MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256,\r
218     MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256,\r
219     MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256,\r
220     MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256,\r
221     MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256,\r
222 \r
223     /* The RSA PSK suites */\r
224     MBEDTLS_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
225     MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,\r
226     MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,\r
227     MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA,\r
228     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,\r
229     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,\r
230     MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384,\r
231     MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384,\r
232 \r
233     MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,\r
234     MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,\r
235     MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA,\r
236     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,\r
237     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,\r
238     MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256,\r
239     MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256,\r
240 \r
241     /* The PSK suites */\r
242     MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
243     MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384,\r
244     MBEDTLS_TLS_PSK_WITH_AES_256_CCM,\r
245     MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384,\r
246     MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA,\r
247     MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,\r
248     MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,\r
249     MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8,\r
250     MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384,\r
251     MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384,\r
252 \r
253     MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256,\r
254     MBEDTLS_TLS_PSK_WITH_AES_128_CCM,\r
255     MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256,\r
256     MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA,\r
257     MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,\r
258     MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,\r
259     MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8,\r
260     MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256,\r
261     MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256,\r
262 \r
263     /* 3DES suites */\r
264     MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,\r
265     MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,\r
266     MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,\r
267     MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,\r
268     MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,\r
269     MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA,\r
270     MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,\r
271     MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,\r
272     MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,\r
273     MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA,\r
274 \r
275     /* RC4 suites */\r
276     MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,\r
277     MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA,\r
278     MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA,\r
279     MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA,\r
280     MBEDTLS_TLS_RSA_WITH_RC4_128_SHA,\r
281     MBEDTLS_TLS_RSA_WITH_RC4_128_MD5,\r
282     MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA,\r
283     MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA,\r
284     MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA,\r
285     MBEDTLS_TLS_PSK_WITH_RC4_128_SHA,\r
286 \r
287     /* Weak suites */\r
288     MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA,\r
289     MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA,\r
290 \r
291     /* NULL suites */\r
292     MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA,\r
293     MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA,\r
294     MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384,\r
295     MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256,\r
296     MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA,\r
297     MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384,\r
298     MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256,\r
299     MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA,\r
300 \r
301     MBEDTLS_TLS_RSA_WITH_NULL_SHA256,\r
302     MBEDTLS_TLS_RSA_WITH_NULL_SHA,\r
303     MBEDTLS_TLS_RSA_WITH_NULL_MD5,\r
304     MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA,\r
305     MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA,\r
306     MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384,\r
307     MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256,\r
308     MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA,\r
309     MBEDTLS_TLS_PSK_WITH_NULL_SHA384,\r
310     MBEDTLS_TLS_PSK_WITH_NULL_SHA256,\r
311     MBEDTLS_TLS_PSK_WITH_NULL_SHA,\r
312 \r
313 #endif /* MBEDTLS_SSL_CIPHERSUITES */\r
314     0\r
315 };\r
316 \r
317 static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] =\r
318 {\r
319 #if defined(MBEDTLS_CHACHAPOLY_C) && \\r
320     defined(MBEDTLS_SHA256_C) && \\r
321     defined(MBEDTLS_SSL_PROTO_TLS1_2)\r
322 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED)\r
323     { MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,\r
324       "TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256",\r
325       MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256,\r
326       MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
327       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
328       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
329       0 },\r
330 #endif\r
331 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)\r
332     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,\r
333       "TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256",\r
334       MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256,\r
335       MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
336       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
337       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
338       0 },\r
339 #endif\r
340 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)\r
341     { MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,\r
342       "TLS-DHE-RSA-WITH-CHACHA20-POLY1305-SHA256",\r
343       MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256,\r
344       MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
345       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
346       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
347       0 },\r
348 #endif\r
349 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)\r
350     { MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
351       "TLS-PSK-WITH-CHACHA20-POLY1305-SHA256",\r
352       MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256,\r
353       MBEDTLS_KEY_EXCHANGE_PSK,\r
354       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
355       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
356       0 },\r
357 #endif\r
358 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)\r
359     { MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
360       "TLS-ECDHE-PSK-WITH-CHACHA20-POLY1305-SHA256",\r
361       MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256,\r
362       MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
363       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
364       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
365       0 },\r
366 #endif\r
367 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)\r
368     { MBEDTLS_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
369       "TLS-DHE-PSK-WITH-CHACHA20-POLY1305-SHA256",\r
370       MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256,\r
371       MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
372       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
373       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
374       0 },\r
375 #endif\r
376 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)\r
377     { MBEDTLS_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256,\r
378       "TLS-RSA-PSK-WITH-CHACHA20-POLY1305-SHA256",\r
379       MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256,\r
380       MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
381       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
382       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
383       0 },\r
384 #endif\r
385 #endif /* MBEDTLS_CHACHAPOLY_C &&\r
386           MBEDTLS_SHA256_C &&\r
387           MBEDTLS_SSL_PROTO_TLS1_2 */\r
388 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)\r
389 #if defined(MBEDTLS_AES_C)\r
390 #if defined(MBEDTLS_SHA1_C)\r
391 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
392     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",\r
393       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
394       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
395       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
396       0 },\r
397     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",\r
398       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
399       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
400       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
401       0 },\r
402 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
403 #endif /* MBEDTLS_SHA1_C */\r
404 #if defined(MBEDTLS_SHA256_C)\r
405 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
406     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",\r
407       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
408       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
409       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
410       0 },\r
411 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
412 #if defined(MBEDTLS_GCM_C)\r
413     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",\r
414       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
415       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
416       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
417       0 },\r
418 #endif /* MBEDTLS_GCM_C */\r
419 #endif /* MBEDTLS_SHA256_C */\r
420 #if defined(MBEDTLS_SHA512_C)\r
421 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
422     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",\r
423       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
424       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
425       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
426       0 },\r
427 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
428 #if defined(MBEDTLS_GCM_C)\r
429     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",\r
430       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
431       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
432       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
433       0 },\r
434 #endif /* MBEDTLS_GCM_C */\r
435 #endif /* MBEDTLS_SHA512_C */\r
436 #if defined(MBEDTLS_CCM_C)\r
437     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM",\r
438       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
439       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
440       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
441       0 },\r
442     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8",\r
443       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
444       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
445       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
446       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
447     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM",\r
448       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
449       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
450       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
451       0 },\r
452     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8",\r
453       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
454       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
455       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
456       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
457 #endif /* MBEDTLS_CCM_C */\r
458 #endif /* MBEDTLS_AES_C */\r
459 \r
460 #if defined(MBEDTLS_CAMELLIA_C)\r
461 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
462 #if defined(MBEDTLS_SHA256_C)\r
463     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",\r
464       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
465       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
466       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
467       0 },\r
468 #endif /* MBEDTLS_SHA256_C */\r
469 #if defined(MBEDTLS_SHA512_C)\r
470     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",\r
471       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
472       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
473       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
474       0 },\r
475 #endif /* MBEDTLS_SHA512_C */\r
476 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
477 \r
478 #if defined(MBEDTLS_GCM_C)\r
479 #if defined(MBEDTLS_SHA256_C)\r
480     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",\r
481       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
482       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
483       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
484       0 },\r
485 #endif /* MBEDTLS_SHA256_C */\r
486 #if defined(MBEDTLS_SHA512_C)\r
487     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",\r
488       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
489       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
490       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
491       0 },\r
492 #endif /* MBEDTLS_SHA512_C */\r
493 #endif /* MBEDTLS_GCM_C */\r
494 #endif /* MBEDTLS_CAMELLIA_C */\r
495 \r
496 #if defined(MBEDTLS_DES_C)\r
497 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
498 #if defined(MBEDTLS_SHA1_C)\r
499     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",\r
500       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
501       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
502       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
503       0 },\r
504 #endif /* MBEDTLS_SHA1_C */\r
505 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
506 #endif /* MBEDTLS_DES_C */\r
507 \r
508 #if defined(MBEDTLS_ARC4_C)\r
509 #if defined(MBEDTLS_SHA1_C)\r
510     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",\r
511       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
512       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
513       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
514       MBEDTLS_CIPHERSUITE_NODTLS },\r
515 #endif /* MBEDTLS_SHA1_C */\r
516 #endif /* MBEDTLS_ARC4_C */\r
517 \r
518 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)\r
519 #if defined(MBEDTLS_SHA1_C)\r
520     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",\r
521       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
522       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
523       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
524       MBEDTLS_CIPHERSUITE_WEAK },\r
525 #endif /* MBEDTLS_SHA1_C */\r
526 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */\r
527 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */\r
528 \r
529 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED)\r
530 #if defined(MBEDTLS_AES_C)\r
531 #if defined(MBEDTLS_SHA1_C)\r
532 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
533     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",\r
534       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
535       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
536       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
537       0 },\r
538     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",\r
539       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
540       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
541       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
542       0 },\r
543 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
544 #endif /* MBEDTLS_SHA1_C */\r
545 #if defined(MBEDTLS_SHA256_C)\r
546 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
547     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",\r
548       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
549       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
550       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
551       0 },\r
552 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
553 #if defined(MBEDTLS_GCM_C)\r
554     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",\r
555       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
556       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
557       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
558       0 },\r
559 #endif /* MBEDTLS_GCM_C */\r
560 #endif /* MBEDTLS_SHA256_C */\r
561 #if defined(MBEDTLS_SHA512_C)\r
562 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
563     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",\r
564       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
565       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
566       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
567       0 },\r
568 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
569 #if defined(MBEDTLS_GCM_C)\r
570     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",\r
571       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
572       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
573       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
574       0 },\r
575 #endif /* MBEDTLS_GCM_C */\r
576 #endif /* MBEDTLS_SHA512_C */\r
577 #endif /* MBEDTLS_AES_C */\r
578 \r
579 #if defined(MBEDTLS_CAMELLIA_C)\r
580 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
581 #if defined(MBEDTLS_SHA256_C)\r
582     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",\r
583       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
584       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
585       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
586       0 },\r
587 #endif /* MBEDTLS_SHA256_C */\r
588 #if defined(MBEDTLS_SHA512_C)\r
589     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",\r
590       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
591       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
592       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
593       0 },\r
594 #endif /* MBEDTLS_SHA512_C */\r
595 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
596 \r
597 #if defined(MBEDTLS_GCM_C)\r
598 #if defined(MBEDTLS_SHA256_C)\r
599     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",\r
600       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
601       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
602       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
603       0 },\r
604 #endif /* MBEDTLS_SHA256_C */\r
605 #if defined(MBEDTLS_SHA512_C)\r
606     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",\r
607       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
608       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
609       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
610       0 },\r
611 #endif /* MBEDTLS_SHA512_C */\r
612 #endif /* MBEDTLS_GCM_C */\r
613 #endif /* MBEDTLS_CAMELLIA_C */\r
614 \r
615 #if defined(MBEDTLS_DES_C)\r
616 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
617 #if defined(MBEDTLS_SHA1_C)\r
618     { MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",\r
619       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
620       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
621       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
622       0 },\r
623 #endif /* MBEDTLS_SHA1_C */\r
624 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
625 #endif /* MBEDTLS_DES_C */\r
626 \r
627 #if defined(MBEDTLS_ARC4_C)\r
628 #if defined(MBEDTLS_SHA1_C)\r
629     { MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",\r
630       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
631       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
632       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
633       MBEDTLS_CIPHERSUITE_NODTLS },\r
634 #endif /* MBEDTLS_SHA1_C */\r
635 #endif /* MBEDTLS_ARC4_C */\r
636 \r
637 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)\r
638 #if defined(MBEDTLS_SHA1_C)\r
639     { MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",\r
640       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
641       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
642       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
643       MBEDTLS_CIPHERSUITE_WEAK },\r
644 #endif /* MBEDTLS_SHA1_C */\r
645 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */\r
646 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */\r
647 \r
648 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)\r
649 #if defined(MBEDTLS_AES_C)\r
650 #if defined(MBEDTLS_SHA512_C) && defined(MBEDTLS_GCM_C)\r
651     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",\r
652       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
653       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
654       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
655       0 },\r
656 #endif /* MBEDTLS_SHA512_C && MBEDTLS_GCM_C */\r
657 \r
658 #if defined(MBEDTLS_SHA256_C)\r
659 #if defined(MBEDTLS_GCM_C)\r
660     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",\r
661       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
662       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
663       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
664       0 },\r
665 #endif /* MBEDTLS_GCM_C */\r
666 \r
667 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
668     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",\r
669       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
670       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
671       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
672       0 },\r
673 \r
674     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",\r
675       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
676       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
677       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
678       0 },\r
679 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
680 #endif /* MBEDTLS_SHA256_C */\r
681 \r
682 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
683 #if defined(MBEDTLS_SHA1_C)\r
684     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",\r
685       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
686       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
687       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
688       0 },\r
689 \r
690     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",\r
691       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
692       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
693       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
694       0 },\r
695 #endif /* MBEDTLS_SHA1_C */\r
696 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
697 #if defined(MBEDTLS_CCM_C)\r
698     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM, "TLS-DHE-RSA-WITH-AES-256-CCM",\r
699       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
700       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
701       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
702       0 },\r
703     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8, "TLS-DHE-RSA-WITH-AES-256-CCM-8",\r
704       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
705       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
706       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
707       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
708     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM, "TLS-DHE-RSA-WITH-AES-128-CCM",\r
709       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
710       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
711       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
712       0 },\r
713     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8, "TLS-DHE-RSA-WITH-AES-128-CCM-8",\r
714       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
715       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
716       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
717       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
718 #endif /* MBEDTLS_CCM_C */\r
719 #endif /* MBEDTLS_AES_C */\r
720 \r
721 #if defined(MBEDTLS_CAMELLIA_C)\r
722 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
723 #if defined(MBEDTLS_SHA256_C)\r
724     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",\r
725       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
726       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
727       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
728       0 },\r
729 \r
730     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",\r
731       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
732       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
733       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
734       0 },\r
735 #endif /* MBEDTLS_SHA256_C */\r
736 \r
737 #if defined(MBEDTLS_SHA1_C)\r
738     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",\r
739       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
740       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
741       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
742       0 },\r
743 \r
744     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",\r
745       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
746       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
747       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
748       0 },\r
749 #endif /* MBEDTLS_SHA1_C */\r
750 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
751 #if defined(MBEDTLS_GCM_C)\r
752 #if defined(MBEDTLS_SHA256_C)\r
753     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",\r
754       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
755       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
756       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
757       0 },\r
758 #endif /* MBEDTLS_SHA256_C */\r
759 \r
760 #if defined(MBEDTLS_SHA512_C)\r
761     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",\r
762       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
763       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
764       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
765       0 },\r
766 #endif /* MBEDTLS_SHA512_C */\r
767 #endif /* MBEDTLS_GCM_C */\r
768 #endif /* MBEDTLS_CAMELLIA_C */\r
769 \r
770 #if defined(MBEDTLS_DES_C)\r
771 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
772 #if defined(MBEDTLS_SHA1_C)\r
773     { MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",\r
774       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
775       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
776       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
777       0 },\r
778 #endif /* MBEDTLS_SHA1_C */\r
779 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
780 #endif /* MBEDTLS_DES_C */\r
781 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */\r
782 \r
783 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)\r
784 #if defined(MBEDTLS_AES_C)\r
785 #if defined(MBEDTLS_SHA512_C) && defined(MBEDTLS_GCM_C)\r
786     { MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",\r
787       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA,\r
788       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
789       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
790       0 },\r
791 #endif /* MBEDTLS_SHA512_C && MBEDTLS_GCM_C */\r
792 \r
793 #if defined(MBEDTLS_SHA256_C)\r
794 #if defined(MBEDTLS_GCM_C)\r
795     { MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",\r
796       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
797       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
798       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
799       0 },\r
800 #endif /* MBEDTLS_GCM_C */\r
801 \r
802 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
803     { MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",\r
804       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
805       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
806       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
807       0 },\r
808 \r
809     { MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",\r
810       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
811       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
812       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
813       0 },\r
814 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
815 #endif /* MBEDTLS_SHA256_C */\r
816 \r
817 #if defined(MBEDTLS_SHA1_C)\r
818 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
819     { MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",\r
820       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
821       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
822       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
823       0 },\r
824 \r
825     { MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",\r
826       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
827       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
828       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
829       0 },\r
830 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
831 #endif /* MBEDTLS_SHA1_C */\r
832 #if defined(MBEDTLS_CCM_C)\r
833     { MBEDTLS_TLS_RSA_WITH_AES_256_CCM, "TLS-RSA-WITH-AES-256-CCM",\r
834       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
835       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
836       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
837       0 },\r
838     { MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8, "TLS-RSA-WITH-AES-256-CCM-8",\r
839       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
840       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
841       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
842       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
843     { MBEDTLS_TLS_RSA_WITH_AES_128_CCM, "TLS-RSA-WITH-AES-128-CCM",\r
844       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
845       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
846       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
847       0 },\r
848     { MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8, "TLS-RSA-WITH-AES-128-CCM-8",\r
849       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
850       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
851       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
852       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
853 #endif /* MBEDTLS_CCM_C */\r
854 #endif /* MBEDTLS_AES_C */\r
855 \r
856 #if defined(MBEDTLS_CAMELLIA_C)\r
857 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
858 #if defined(MBEDTLS_SHA256_C)\r
859     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",\r
860       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
861       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
862       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
863       0 },\r
864 \r
865     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",\r
866       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
867       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
868       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
869       0 },\r
870 #endif /* MBEDTLS_SHA256_C */\r
871 \r
872 #if defined(MBEDTLS_SHA1_C)\r
873     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",\r
874       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
875       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
876       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
877       0 },\r
878 \r
879     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",\r
880       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
881       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
882       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
883       0 },\r
884 #endif /* MBEDTLS_SHA1_C */\r
885 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
886 \r
887 #if defined(MBEDTLS_GCM_C)\r
888 #if defined(MBEDTLS_SHA256_C)\r
889     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",\r
890       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
891       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
892       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
893       0 },\r
894 #endif /* MBEDTLS_SHA256_C */\r
895 \r
896 #if defined(MBEDTLS_SHA1_C)\r
897     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",\r
898       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA,\r
899       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
900       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
901       0 },\r
902 #endif /* MBEDTLS_SHA1_C */\r
903 #endif /* MBEDTLS_GCM_C */\r
904 #endif /* MBEDTLS_CAMELLIA_C */\r
905 \r
906 #if defined(MBEDTLS_DES_C)\r
907 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
908 #if defined(MBEDTLS_SHA1_C)\r
909     { MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",\r
910       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
911       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
912       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
913       0 },\r
914 #endif /* MBEDTLS_SHA1_C */\r
915 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
916 #endif /* MBEDTLS_DES_C */\r
917 \r
918 #if defined(MBEDTLS_ARC4_C)\r
919 #if defined(MBEDTLS_MD5_C)\r
920     { MBEDTLS_TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",\r
921       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_MD5, MBEDTLS_KEY_EXCHANGE_RSA,\r
922       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
923       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
924       MBEDTLS_CIPHERSUITE_NODTLS },\r
925 #endif\r
926 \r
927 #if defined(MBEDTLS_SHA1_C)\r
928     { MBEDTLS_TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",\r
929       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
930       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
931       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
932       MBEDTLS_CIPHERSUITE_NODTLS },\r
933 #endif\r
934 #endif /* MBEDTLS_ARC4_C */\r
935 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */\r
936 \r
937 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED)\r
938 #if defined(MBEDTLS_AES_C)\r
939 #if defined(MBEDTLS_SHA1_C)\r
940 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
941     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA",\r
942       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
943       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
944       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
945       0 },\r
946     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA",\r
947       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
948       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
949       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
950       0 },\r
951 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
952 #endif /* MBEDTLS_SHA1_C */\r
953 #if defined(MBEDTLS_SHA256_C)\r
954 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
955     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA256",\r
956       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
957       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
958       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
959       0 },\r
960 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
961 #if defined(MBEDTLS_GCM_C)\r
962     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256",\r
963       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
964       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
965       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
966       0 },\r
967 #endif /* MBEDTLS_GCM_C */\r
968 #endif /* MBEDTLS_SHA256_C */\r
969 #if defined(MBEDTLS_SHA512_C)\r
970 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
971     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA384",\r
972       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
973       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
974       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
975       0 },\r
976 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
977 #if defined(MBEDTLS_GCM_C)\r
978     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-AES-256-GCM-SHA384",\r
979       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
980       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
981       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
982       0 },\r
983 #endif /* MBEDTLS_GCM_C */\r
984 #endif /* MBEDTLS_SHA512_C */\r
985 #endif /* MBEDTLS_AES_C */\r
986 \r
987 #if defined(MBEDTLS_CAMELLIA_C)\r
988 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
989 #if defined(MBEDTLS_SHA256_C)\r
990     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-CBC-SHA256",\r
991       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
992       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
993       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
994       0 },\r
995 #endif /* MBEDTLS_SHA256_C */\r
996 #if defined(MBEDTLS_SHA512_C)\r
997     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-CBC-SHA384",\r
998       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
999       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1000       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1001       0 },\r
1002 #endif /* MBEDTLS_SHA512_C */\r
1003 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1004 \r
1005 #if defined(MBEDTLS_GCM_C)\r
1006 #if defined(MBEDTLS_SHA256_C)\r
1007     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-GCM-SHA256",\r
1008       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1009       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1010       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1011       0 },\r
1012 #endif /* MBEDTLS_SHA256_C */\r
1013 #if defined(MBEDTLS_SHA512_C)\r
1014     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-GCM-SHA384",\r
1015       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1016       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1017       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1018       0 },\r
1019 #endif /* MBEDTLS_SHA512_C */\r
1020 #endif /* MBEDTLS_GCM_C */\r
1021 #endif /* MBEDTLS_CAMELLIA_C */\r
1022 \r
1023 #if defined(MBEDTLS_DES_C)\r
1024 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1025 #if defined(MBEDTLS_SHA1_C)\r
1026     { MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-RSA-WITH-3DES-EDE-CBC-SHA",\r
1027       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1028       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1029       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1030       0 },\r
1031 #endif /* MBEDTLS_SHA1_C */\r
1032 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1033 #endif /* MBEDTLS_DES_C */\r
1034 \r
1035 #if defined(MBEDTLS_ARC4_C)\r
1036 #if defined(MBEDTLS_SHA1_C)\r
1037     { MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA, "TLS-ECDH-RSA-WITH-RC4-128-SHA",\r
1038       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1039       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1040       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1041       MBEDTLS_CIPHERSUITE_NODTLS },\r
1042 #endif /* MBEDTLS_SHA1_C */\r
1043 #endif /* MBEDTLS_ARC4_C */\r
1044 \r
1045 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)\r
1046 #if defined(MBEDTLS_SHA1_C)\r
1047     { MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA, "TLS-ECDH-RSA-WITH-NULL-SHA",\r
1048       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1049       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1050       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1051       MBEDTLS_CIPHERSUITE_WEAK },\r
1052 #endif /* MBEDTLS_SHA1_C */\r
1053 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */\r
1054 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */\r
1055 \r
1056 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)\r
1057 #if defined(MBEDTLS_AES_C)\r
1058 #if defined(MBEDTLS_SHA1_C)\r
1059 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1060     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA",\r
1061       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1062       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1063       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1064       0 },\r
1065     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA",\r
1066       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1067       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1068       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1069       0 },\r
1070 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1071 #endif /* MBEDTLS_SHA1_C */\r
1072 #if defined(MBEDTLS_SHA256_C)\r
1073 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1074     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA256",\r
1075       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1076       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1077       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1078       0 },\r
1079 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1080 #if defined(MBEDTLS_GCM_C)\r
1081     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256",\r
1082       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1083       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1084       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1085       0 },\r
1086 #endif /* MBEDTLS_GCM_C */\r
1087 #endif /* MBEDTLS_SHA256_C */\r
1088 #if defined(MBEDTLS_SHA512_C)\r
1089 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1090     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384",\r
1091       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1092       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1093       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1094       0 },\r
1095 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1096 #if defined(MBEDTLS_GCM_C)\r
1097     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384",\r
1098       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1099       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1100       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1101       0 },\r
1102 #endif /* MBEDTLS_GCM_C */\r
1103 #endif /* MBEDTLS_SHA512_C */\r
1104 #endif /* MBEDTLS_AES_C */\r
1105 \r
1106 #if defined(MBEDTLS_CAMELLIA_C)\r
1107 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1108 #if defined(MBEDTLS_SHA256_C)\r
1109     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",\r
1110       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1111       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1112       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1113       0 },\r
1114 #endif /* MBEDTLS_SHA256_C */\r
1115 #if defined(MBEDTLS_SHA512_C)\r
1116     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",\r
1117       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1118       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1119       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1120       0 },\r
1121 #endif /* MBEDTLS_SHA512_C */\r
1122 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1123 \r
1124 #if defined(MBEDTLS_GCM_C)\r
1125 #if defined(MBEDTLS_SHA256_C)\r
1126     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",\r
1127       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1128       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1129       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1130       0 },\r
1131 #endif /* MBEDTLS_SHA256_C */\r
1132 #if defined(MBEDTLS_SHA512_C)\r
1133     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",\r
1134       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1135       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1136       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1137       0 },\r
1138 #endif /* MBEDTLS_SHA512_C */\r
1139 #endif /* MBEDTLS_GCM_C */\r
1140 #endif /* MBEDTLS_CAMELLIA_C */\r
1141 \r
1142 #if defined(MBEDTLS_DES_C)\r
1143 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1144 #if defined(MBEDTLS_SHA1_C)\r
1145     { MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-ECDSA-WITH-3DES-EDE-CBC-SHA",\r
1146       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1147       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1148       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1149       0 },\r
1150 #endif /* MBEDTLS_SHA1_C */\r
1151 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1152 #endif /* MBEDTLS_DES_C */\r
1153 \r
1154 #if defined(MBEDTLS_ARC4_C)\r
1155 #if defined(MBEDTLS_SHA1_C)\r
1156     { MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA, "TLS-ECDH-ECDSA-WITH-RC4-128-SHA",\r
1157       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1158       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1159       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1160       MBEDTLS_CIPHERSUITE_NODTLS },\r
1161 #endif /* MBEDTLS_SHA1_C */\r
1162 #endif /* MBEDTLS_ARC4_C */\r
1163 \r
1164 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)\r
1165 #if defined(MBEDTLS_SHA1_C)\r
1166     { MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA, "TLS-ECDH-ECDSA-WITH-NULL-SHA",\r
1167       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
1168       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1169       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1170       MBEDTLS_CIPHERSUITE_WEAK },\r
1171 #endif /* MBEDTLS_SHA1_C */\r
1172 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */\r
1173 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */\r
1174 \r
1175 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)\r
1176 #if defined(MBEDTLS_AES_C)\r
1177 #if defined(MBEDTLS_GCM_C)\r
1178 #if defined(MBEDTLS_SHA256_C)\r
1179     { MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",\r
1180       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1181       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1182       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1183       0 },\r
1184 #endif /* MBEDTLS_SHA256_C */\r
1185 \r
1186 #if defined(MBEDTLS_SHA512_C)\r
1187     { MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",\r
1188       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,\r
1189       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1190       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1191       0 },\r
1192 #endif /* MBEDTLS_SHA512_C */\r
1193 #endif /* MBEDTLS_GCM_C */\r
1194 \r
1195 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1196 #if defined(MBEDTLS_SHA256_C)\r
1197     { MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",\r
1198       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1199       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1200       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1201       0 },\r
1202 #endif /* MBEDTLS_SHA256_C */\r
1203 \r
1204 #if defined(MBEDTLS_SHA512_C)\r
1205     { MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",\r
1206       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,\r
1207       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1208       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1209       0 },\r
1210 #endif /* MBEDTLS_SHA512_C */\r
1211 \r
1212 #if defined(MBEDTLS_SHA1_C)\r
1213     { MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",\r
1214       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,\r
1215       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1216       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1217       0 },\r
1218 \r
1219     { MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",\r
1220       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,\r
1221       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1222       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1223       0 },\r
1224 #endif /* MBEDTLS_SHA1_C */\r
1225 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1226 #if defined(MBEDTLS_CCM_C)\r
1227     { MBEDTLS_TLS_PSK_WITH_AES_256_CCM, "TLS-PSK-WITH-AES-256-CCM",\r
1228       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1229       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1230       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1231       0 },\r
1232     { MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8, "TLS-PSK-WITH-AES-256-CCM-8",\r
1233       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1234       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1235       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1236       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
1237     { MBEDTLS_TLS_PSK_WITH_AES_128_CCM, "TLS-PSK-WITH-AES-128-CCM",\r
1238       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1239       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1240       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1241       0 },\r
1242     { MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8, "TLS-PSK-WITH-AES-128-CCM-8",\r
1243       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1244       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1245       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1246       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
1247 #endif /* MBEDTLS_CCM_C */\r
1248 #endif /* MBEDTLS_AES_C */\r
1249 \r
1250 #if defined(MBEDTLS_CAMELLIA_C)\r
1251 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1252 #if defined(MBEDTLS_SHA256_C)\r
1253     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",\r
1254       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1255       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1256       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1257       0 },\r
1258 #endif /* MBEDTLS_SHA256_C */\r
1259 \r
1260 #if defined(MBEDTLS_SHA512_C)\r
1261     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",\r
1262       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,\r
1263       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1264       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1265       0 },\r
1266 #endif /* MBEDTLS_SHA512_C */\r
1267 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1268 \r
1269 #if defined(MBEDTLS_GCM_C)\r
1270 #if defined(MBEDTLS_SHA256_C)\r
1271     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",\r
1272       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1273       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1274       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1275       0 },\r
1276 #endif /* MBEDTLS_SHA256_C */\r
1277 \r
1278 #if defined(MBEDTLS_SHA512_C)\r
1279     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",\r
1280       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,\r
1281       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1282       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1283       0 },\r
1284 #endif /* MBEDTLS_SHA512_C */\r
1285 #endif /* MBEDTLS_GCM_C */\r
1286 #endif /* MBEDTLS_CAMELLIA_C */\r
1287 \r
1288 #if defined(MBEDTLS_DES_C)\r
1289 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1290 #if defined(MBEDTLS_SHA1_C)\r
1291     { MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",\r
1292       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,\r
1293       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1294       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1295       0 },\r
1296 #endif /* MBEDTLS_SHA1_C */\r
1297 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1298 #endif /* MBEDTLS_DES_C */\r
1299 \r
1300 #if defined(MBEDTLS_ARC4_C)\r
1301 #if defined(MBEDTLS_SHA1_C)\r
1302     { MBEDTLS_TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",\r
1303       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,\r
1304       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1305       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1306       MBEDTLS_CIPHERSUITE_NODTLS },\r
1307 #endif /* MBEDTLS_SHA1_C */\r
1308 #endif /* MBEDTLS_ARC4_C */\r
1309 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */\r
1310 \r
1311 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)\r
1312 #if defined(MBEDTLS_AES_C)\r
1313 #if defined(MBEDTLS_GCM_C)\r
1314 #if defined(MBEDTLS_SHA256_C)\r
1315     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",\r
1316       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1317       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1318       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1319       0 },\r
1320 #endif /* MBEDTLS_SHA256_C */\r
1321 \r
1322 #if defined(MBEDTLS_SHA512_C)\r
1323     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",\r
1324       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1325       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1326       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1327       0 },\r
1328 #endif /* MBEDTLS_SHA512_C */\r
1329 #endif /* MBEDTLS_GCM_C */\r
1330 \r
1331 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1332 #if defined(MBEDTLS_SHA256_C)\r
1333     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",\r
1334       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1335       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1336       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1337       0 },\r
1338 #endif /* MBEDTLS_SHA256_C */\r
1339 \r
1340 #if defined(MBEDTLS_SHA512_C)\r
1341     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",\r
1342       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1343       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1344       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1345       0 },\r
1346 #endif /* MBEDTLS_SHA512_C */\r
1347 \r
1348 #if defined(MBEDTLS_SHA1_C)\r
1349     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",\r
1350       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1351       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1352       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1353       0 },\r
1354 \r
1355     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",\r
1356       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1357       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1358       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1359       0 },\r
1360 #endif /* MBEDTLS_SHA1_C */\r
1361 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1362 #if defined(MBEDTLS_CCM_C)\r
1363     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM, "TLS-DHE-PSK-WITH-AES-256-CCM",\r
1364       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1365       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1366       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1367       0 },\r
1368     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8, "TLS-DHE-PSK-WITH-AES-256-CCM-8",\r
1369       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1370       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1371       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1372       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
1373     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM, "TLS-DHE-PSK-WITH-AES-128-CCM",\r
1374       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1375       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1376       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1377       0 },\r
1378     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8, "TLS-DHE-PSK-WITH-AES-128-CCM-8",\r
1379       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1380       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1381       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1382       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
1383 #endif /* MBEDTLS_CCM_C */\r
1384 #endif /* MBEDTLS_AES_C */\r
1385 \r
1386 #if defined(MBEDTLS_CAMELLIA_C)\r
1387 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1388 #if defined(MBEDTLS_SHA256_C)\r
1389     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",\r
1390       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1391       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1392       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1393       0 },\r
1394 #endif /* MBEDTLS_SHA256_C */\r
1395 \r
1396 #if defined(MBEDTLS_SHA512_C)\r
1397     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",\r
1398       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1399       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1400       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1401       0 },\r
1402 #endif /* MBEDTLS_SHA512_C */\r
1403 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1404 \r
1405 #if defined(MBEDTLS_GCM_C)\r
1406 #if defined(MBEDTLS_SHA256_C)\r
1407     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",\r
1408       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1409       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1410       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1411       0 },\r
1412 #endif /* MBEDTLS_SHA256_C */\r
1413 \r
1414 #if defined(MBEDTLS_SHA512_C)\r
1415     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",\r
1416       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1417       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1418       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1419       0 },\r
1420 #endif /* MBEDTLS_SHA512_C */\r
1421 #endif /* MBEDTLS_GCM_C */\r
1422 #endif /* MBEDTLS_CAMELLIA_C */\r
1423 \r
1424 #if defined(MBEDTLS_DES_C)\r
1425 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1426 #if defined(MBEDTLS_SHA1_C)\r
1427     { MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",\r
1428       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1429       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1430       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1431       0 },\r
1432 #endif /* MBEDTLS_SHA1_C */\r
1433 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1434 #endif /* MBEDTLS_DES_C */\r
1435 \r
1436 #if defined(MBEDTLS_ARC4_C)\r
1437 #if defined(MBEDTLS_SHA1_C)\r
1438     { MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",\r
1439       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1440       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1441       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1442       MBEDTLS_CIPHERSUITE_NODTLS },\r
1443 #endif /* MBEDTLS_SHA1_C */\r
1444 #endif /* MBEDTLS_ARC4_C */\r
1445 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */\r
1446 \r
1447 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)\r
1448 #if defined(MBEDTLS_AES_C)\r
1449 \r
1450 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1451 #if defined(MBEDTLS_SHA256_C)\r
1452     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",\r
1453       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1454       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1455       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1456       0 },\r
1457 #endif /* MBEDTLS_SHA256_C */\r
1458 \r
1459 #if defined(MBEDTLS_SHA512_C)\r
1460     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",\r
1461       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1462       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1463       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1464       0 },\r
1465 #endif /* MBEDTLS_SHA512_C */\r
1466 \r
1467 #if defined(MBEDTLS_SHA1_C)\r
1468     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",\r
1469       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1470       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1471       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1472       0 },\r
1473 \r
1474     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",\r
1475       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1476       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1477       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1478       0 },\r
1479 #endif /* MBEDTLS_SHA1_C */\r
1480 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1481 #endif /* MBEDTLS_AES_C */\r
1482 \r
1483 #if defined(MBEDTLS_CAMELLIA_C)\r
1484 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1485 #if defined(MBEDTLS_SHA256_C)\r
1486     { MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",\r
1487       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1488       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1489       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1490       0 },\r
1491 #endif /* MBEDTLS_SHA256_C */\r
1492 \r
1493 #if defined(MBEDTLS_SHA512_C)\r
1494     { MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",\r
1495       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1496       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1497       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1498       0 },\r
1499 #endif /* MBEDTLS_SHA512_C */\r
1500 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1501 #endif /* MBEDTLS_CAMELLIA_C */\r
1502 \r
1503 #if defined(MBEDTLS_DES_C)\r
1504 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1505 #if defined(MBEDTLS_SHA1_C)\r
1506     { MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",\r
1507       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1508       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1509       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1510       0 },\r
1511 #endif /* MBEDTLS_SHA1_C */\r
1512 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1513 #endif /* MBEDTLS_DES_C */\r
1514 \r
1515 #if defined(MBEDTLS_ARC4_C)\r
1516 #if defined(MBEDTLS_SHA1_C)\r
1517     { MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",\r
1518       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1519       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1520       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1521       MBEDTLS_CIPHERSUITE_NODTLS },\r
1522 #endif /* MBEDTLS_SHA1_C */\r
1523 #endif /* MBEDTLS_ARC4_C */\r
1524 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */\r
1525 \r
1526 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)\r
1527 #if defined(MBEDTLS_AES_C)\r
1528 #if defined(MBEDTLS_GCM_C)\r
1529 #if defined(MBEDTLS_SHA256_C)\r
1530     { MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",\r
1531       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1532       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1533       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1534       0 },\r
1535 #endif /* MBEDTLS_SHA256_C */\r
1536 \r
1537 #if defined(MBEDTLS_SHA512_C)\r
1538     { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",\r
1539       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1540       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1541       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1542       0 },\r
1543 #endif /* MBEDTLS_SHA512_C */\r
1544 #endif /* MBEDTLS_GCM_C */\r
1545 \r
1546 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1547 #if defined(MBEDTLS_SHA256_C)\r
1548     { MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",\r
1549       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1550       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1551       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1552       0 },\r
1553 #endif /* MBEDTLS_SHA256_C */\r
1554 \r
1555 #if defined(MBEDTLS_SHA512_C)\r
1556     { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",\r
1557       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1558       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1559       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1560       0 },\r
1561 #endif /* MBEDTLS_SHA512_C */\r
1562 \r
1563 #if defined(MBEDTLS_SHA1_C)\r
1564     { MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",\r
1565       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1566       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1567       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1568       0 },\r
1569 \r
1570     { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",\r
1571       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1572       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1573       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1574       0 },\r
1575 #endif /* MBEDTLS_SHA1_C */\r
1576 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1577 #endif /* MBEDTLS_AES_C */\r
1578 \r
1579 #if defined(MBEDTLS_CAMELLIA_C)\r
1580 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1581 #if defined(MBEDTLS_SHA256_C)\r
1582     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",\r
1583       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1584       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1585       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1586       0 },\r
1587 #endif /* MBEDTLS_SHA256_C */\r
1588 \r
1589 #if defined(MBEDTLS_SHA512_C)\r
1590     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",\r
1591       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1592       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1593       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1594       0 },\r
1595 #endif /* MBEDTLS_SHA512_C */\r
1596 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1597 \r
1598 #if defined(MBEDTLS_GCM_C)\r
1599 #if defined(MBEDTLS_SHA256_C)\r
1600     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",\r
1601       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1602       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1603       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1604       0 },\r
1605 #endif /* MBEDTLS_SHA256_C */\r
1606 \r
1607 #if defined(MBEDTLS_SHA512_C)\r
1608     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",\r
1609       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1610       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1611       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1612       0 },\r
1613 #endif /* MBEDTLS_SHA512_C */\r
1614 #endif /* MBEDTLS_GCM_C */\r
1615 #endif /* MBEDTLS_CAMELLIA_C */\r
1616 \r
1617 #if defined(MBEDTLS_DES_C)\r
1618 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1619 #if defined(MBEDTLS_SHA1_C)\r
1620     { MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",\r
1621       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1622       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1623       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1624       0 },\r
1625 #endif /* MBEDTLS_SHA1_C */\r
1626 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1627 #endif /* MBEDTLS_DES_C */\r
1628 \r
1629 #if defined(MBEDTLS_ARC4_C)\r
1630 #if defined(MBEDTLS_SHA1_C)\r
1631     { MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",\r
1632       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1633       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1634       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1635       MBEDTLS_CIPHERSUITE_NODTLS },\r
1636 #endif /* MBEDTLS_SHA1_C */\r
1637 #endif /* MBEDTLS_ARC4_C */\r
1638 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */\r
1639 \r
1640 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)\r
1641 #if defined(MBEDTLS_AES_C)\r
1642 #if defined(MBEDTLS_CCM_C)\r
1643     { MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8, "TLS-ECJPAKE-WITH-AES-128-CCM-8",\r
1644       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECJPAKE,\r
1645       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1646       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1647       MBEDTLS_CIPHERSUITE_SHORT_TAG },\r
1648 #endif /* MBEDTLS_CCM_C */\r
1649 #endif /* MBEDTLS_AES_C */\r
1650 #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */\r
1651 \r
1652 #if defined(MBEDTLS_ENABLE_WEAK_CIPHERSUITES)\r
1653 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)\r
1654 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)\r
1655 #if defined(MBEDTLS_MD5_C)\r
1656     { MBEDTLS_TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",\r
1657       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_MD5, MBEDTLS_KEY_EXCHANGE_RSA,\r
1658       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1659       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1660       MBEDTLS_CIPHERSUITE_WEAK },\r
1661 #endif\r
1662 \r
1663 #if defined(MBEDTLS_SHA1_C)\r
1664     { MBEDTLS_TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",\r
1665       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
1666       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1667       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1668       MBEDTLS_CIPHERSUITE_WEAK },\r
1669 #endif\r
1670 \r
1671 #if defined(MBEDTLS_SHA256_C)\r
1672     { MBEDTLS_TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",\r
1673       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
1674       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1675       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1676       MBEDTLS_CIPHERSUITE_WEAK },\r
1677 #endif\r
1678 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */\r
1679 \r
1680 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)\r
1681 #if defined(MBEDTLS_SHA1_C)\r
1682     { MBEDTLS_TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",\r
1683       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,\r
1684       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1685       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1686       MBEDTLS_CIPHERSUITE_WEAK },\r
1687 #endif /* MBEDTLS_SHA1_C */\r
1688 \r
1689 #if defined(MBEDTLS_SHA256_C)\r
1690     { MBEDTLS_TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",\r
1691       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1692       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1693       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1694       MBEDTLS_CIPHERSUITE_WEAK },\r
1695 #endif\r
1696 \r
1697 #if defined(MBEDTLS_SHA512_C)\r
1698     { MBEDTLS_TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",\r
1699       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,\r
1700       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1701       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1702       MBEDTLS_CIPHERSUITE_WEAK },\r
1703 #endif\r
1704 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */\r
1705 \r
1706 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)\r
1707 #if defined(MBEDTLS_SHA1_C)\r
1708     { MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",\r
1709       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1710       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1711       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1712       MBEDTLS_CIPHERSUITE_WEAK },\r
1713 #endif /* MBEDTLS_SHA1_C */\r
1714 \r
1715 #if defined(MBEDTLS_SHA256_C)\r
1716     { MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",\r
1717       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1718       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1719       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1720       MBEDTLS_CIPHERSUITE_WEAK },\r
1721 #endif\r
1722 \r
1723 #if defined(MBEDTLS_SHA512_C)\r
1724     { MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",\r
1725       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
1726       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1727       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1728       MBEDTLS_CIPHERSUITE_WEAK },\r
1729 #endif\r
1730 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */\r
1731 \r
1732 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)\r
1733 #if defined(MBEDTLS_SHA1_C)\r
1734     { MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",\r
1735       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1736       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1737       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1738       MBEDTLS_CIPHERSUITE_WEAK },\r
1739 #endif /* MBEDTLS_SHA1_C */\r
1740 \r
1741 #if defined(MBEDTLS_SHA256_C)\r
1742     { MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",\r
1743       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1744       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1745       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1746       MBEDTLS_CIPHERSUITE_WEAK },\r
1747 #endif\r
1748 \r
1749 #if defined(MBEDTLS_SHA512_C)\r
1750     { MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",\r
1751       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
1752       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1753       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1754       MBEDTLS_CIPHERSUITE_WEAK },\r
1755 #endif\r
1756 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */\r
1757 \r
1758 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)\r
1759 #if defined(MBEDTLS_SHA1_C)\r
1760     { MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",\r
1761       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1762       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1763       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1764       MBEDTLS_CIPHERSUITE_WEAK },\r
1765 #endif /* MBEDTLS_SHA1_C */\r
1766 \r
1767 #if defined(MBEDTLS_SHA256_C)\r
1768     { MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",\r
1769       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1770       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1771       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1772       MBEDTLS_CIPHERSUITE_WEAK },\r
1773 #endif\r
1774 \r
1775 #if defined(MBEDTLS_SHA512_C)\r
1776     { MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",\r
1777       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1778       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,\r
1779       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1780       MBEDTLS_CIPHERSUITE_WEAK },\r
1781 #endif\r
1782 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */\r
1783 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */\r
1784 \r
1785 #if defined(MBEDTLS_DES_C)\r
1786 #if defined(MBEDTLS_CIPHER_MODE_CBC)\r
1787 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)\r
1788 #if defined(MBEDTLS_SHA1_C)\r
1789     { MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",\r
1790       MBEDTLS_CIPHER_DES_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
1791       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1792       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1793       MBEDTLS_CIPHERSUITE_WEAK },\r
1794 #endif /* MBEDTLS_SHA1_C */\r
1795 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */\r
1796 \r
1797 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)\r
1798 #if defined(MBEDTLS_SHA1_C)\r
1799     { MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",\r
1800       MBEDTLS_CIPHER_DES_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,\r
1801       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,\r
1802       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1803       MBEDTLS_CIPHERSUITE_WEAK },\r
1804 #endif /* MBEDTLS_SHA1_C */\r
1805 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */\r
1806 #endif /* MBEDTLS_CIPHER_MODE_CBC */\r
1807 #endif /* MBEDTLS_DES_C */\r
1808 #endif /* MBEDTLS_ENABLE_WEAK_CIPHERSUITES */\r
1809 \r
1810 #if defined(MBEDTLS_ARIA_C)\r
1811 \r
1812 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)\r
1813 \r
1814 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
1815     { MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384,\r
1816              "TLS-RSA-WITH-ARIA-256-GCM-SHA384",\r
1817       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA,\r
1818       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1819       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1820       0 },\r
1821 #endif\r
1822 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
1823     { MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384,\r
1824              "TLS-RSA-WITH-ARIA-256-CBC-SHA384",\r
1825       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA,\r
1826       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1827       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1828       0 },\r
1829 #endif\r
1830 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
1831     { MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256,\r
1832              "TLS-RSA-WITH-ARIA-128-GCM-SHA256",\r
1833       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
1834       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1835       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1836       0 },\r
1837 #endif\r
1838 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
1839     { MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256,\r
1840              "TLS-RSA-WITH-ARIA-128-CBC-SHA256",\r
1841       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,\r
1842       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1843       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1844       0 },\r
1845 #endif\r
1846 \r
1847 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */\r
1848 \r
1849 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)\r
1850 \r
1851 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
1852     { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384,\r
1853              "TLS-RSA-PSK-WITH-ARIA-256-GCM-SHA384",\r
1854       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1855       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1856       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1857       0 },\r
1858 #endif\r
1859 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
1860     { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384,\r
1861              "TLS-RSA-PSK-WITH-ARIA-256-CBC-SHA384",\r
1862       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1863       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1864       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1865       0 },\r
1866 #endif\r
1867 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
1868     { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256,\r
1869              "TLS-RSA-PSK-WITH-ARIA-128-GCM-SHA256",\r
1870       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1871       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1872       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1873       0 },\r
1874 #endif\r
1875 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
1876     { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256,\r
1877              "TLS-RSA-PSK-WITH-ARIA-128-CBC-SHA256",\r
1878       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,\r
1879       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1880       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1881       0 },\r
1882 #endif\r
1883 \r
1884 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */\r
1885 \r
1886 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)\r
1887 \r
1888 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
1889     { MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384,\r
1890              "TLS-PSK-WITH-ARIA-256-GCM-SHA384",\r
1891       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384,MBEDTLS_KEY_EXCHANGE_PSK,\r
1892       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1893       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1894       0 },\r
1895 #endif\r
1896 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
1897     { MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384,\r
1898              "TLS-PSK-WITH-ARIA-256-CBC-SHA384",\r
1899       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,\r
1900       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1901       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1902       0 },\r
1903 #endif\r
1904 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
1905     { MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256,\r
1906              "TLS-PSK-WITH-ARIA-128-GCM-SHA256",\r
1907       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1908       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1909       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1910       0 },\r
1911 #endif\r
1912 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
1913     { MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256,\r
1914              "TLS-PSK-WITH-ARIA-128-CBC-SHA256",\r
1915       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,\r
1916       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1917       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1918       0 },\r
1919 #endif\r
1920 \r
1921 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */\r
1922 \r
1923 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED)\r
1924 \r
1925 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
1926     { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384,\r
1927              "TLS-ECDH-RSA-WITH-ARIA-256-GCM-SHA384",\r
1928       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1929       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1930       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1931       0 },\r
1932 #endif\r
1933 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
1934     { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384,\r
1935              "TLS-ECDH-RSA-WITH-ARIA-256-CBC-SHA384",\r
1936       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1937       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1938       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1939       0 },\r
1940 #endif\r
1941 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
1942     { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256,\r
1943              "TLS-ECDH-RSA-WITH-ARIA-128-GCM-SHA256",\r
1944       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1945       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1946       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1947       0 },\r
1948 #endif\r
1949 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
1950     { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256,\r
1951              "TLS-ECDH-RSA-WITH-ARIA-128-CBC-SHA256",\r
1952       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,\r
1953       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1954       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1955       0 },\r
1956 #endif\r
1957 \r
1958 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */\r
1959 \r
1960 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED)\r
1961 \r
1962 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
1963     { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,\r
1964              "TLS-ECDHE-RSA-WITH-ARIA-256-GCM-SHA384",\r
1965       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
1966       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1967       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1968       0 },\r
1969 #endif\r
1970 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
1971     { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384,\r
1972              "TLS-ECDHE-RSA-WITH-ARIA-256-CBC-SHA384",\r
1973       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
1974       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1975       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1976       0 },\r
1977 #endif\r
1978 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
1979     { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,\r
1980              "TLS-ECDHE-RSA-WITH-ARIA-128-GCM-SHA256",\r
1981       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
1982       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1983       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1984       0 },\r
1985 #endif\r
1986 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
1987     { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256,\r
1988              "TLS-ECDHE-RSA-WITH-ARIA-128-CBC-SHA256",\r
1989       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,\r
1990       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1991       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
1992       0 },\r
1993 #endif\r
1994 \r
1995 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */\r
1996 \r
1997 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)\r
1998 \r
1999 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
2000     { MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384,\r
2001              "TLS-ECDHE-PSK-WITH-ARIA-256-CBC-SHA384",\r
2002       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
2003       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2004       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2005       0 },\r
2006 #endif\r
2007 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
2008     { MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256,\r
2009              "TLS-ECDHE-PSK-WITH-ARIA-128-CBC-SHA256",\r
2010       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,\r
2011       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2012       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2013       0 },\r
2014 #endif\r
2015 \r
2016 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */\r
2017 \r
2018 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)\r
2019 \r
2020 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
2021     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,\r
2022              "TLS-ECDHE-ECDSA-WITH-ARIA-256-GCM-SHA384",\r
2023       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
2024       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2025       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2026       0 },\r
2027 #endif\r
2028 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
2029     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384,\r
2030              "TLS-ECDHE-ECDSA-WITH-ARIA-256-CBC-SHA384",\r
2031       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
2032       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2033       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2034       0 },\r
2035 #endif\r
2036 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
2037     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,\r
2038              "TLS-ECDHE-ECDSA-WITH-ARIA-128-GCM-SHA256",\r
2039       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
2040       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2041       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2042       0 },\r
2043 #endif\r
2044 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
2045     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256,\r
2046              "TLS-ECDHE-ECDSA-WITH-ARIA-128-CBC-SHA256",\r
2047       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,\r
2048       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2049       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2050       0 },\r
2051 #endif\r
2052 \r
2053 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */\r
2054 \r
2055 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)\r
2056 \r
2057 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
2058     { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384,\r
2059              "TLS-ECDH-ECDSA-WITH-ARIA-256-GCM-SHA384",\r
2060       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
2061       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2062       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2063       0 },\r
2064 #endif\r
2065 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
2066     { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384,\r
2067              "TLS-ECDH-ECDSA-WITH-ARIA-256-CBC-SHA384",\r
2068       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
2069       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2070       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2071       0 },\r
2072 #endif\r
2073 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
2074     { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256,\r
2075              "TLS-ECDH-ECDSA-WITH-ARIA-128-GCM-SHA256",\r
2076       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
2077       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2078       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2079       0 },\r
2080 #endif\r
2081 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
2082     { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256,\r
2083              "TLS-ECDH-ECDSA-WITH-ARIA-128-CBC-SHA256",\r
2084       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,\r
2085       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2086       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2087       0 },\r
2088 #endif\r
2089 \r
2090 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */\r
2091 \r
2092 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)\r
2093 \r
2094 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
2095     { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384,\r
2096              "TLS-DHE-RSA-WITH-ARIA-256-GCM-SHA384",\r
2097       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
2098       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2099       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2100       0 },\r
2101 #endif\r
2102 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
2103     { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384,\r
2104              "TLS-DHE-RSA-WITH-ARIA-256-CBC-SHA384",\r
2105       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
2106       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2107       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2108       0 },\r
2109 #endif\r
2110 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
2111     { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256,\r
2112              "TLS-DHE-RSA-WITH-ARIA-128-GCM-SHA256",\r
2113       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
2114       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2115       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2116       0 },\r
2117 #endif\r
2118 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
2119     { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256,\r
2120              "TLS-DHE-RSA-WITH-ARIA-128-CBC-SHA256",\r
2121       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,\r
2122       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2123       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2124       0 },\r
2125 #endif\r
2126 \r
2127 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */\r
2128 \r
2129 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)\r
2130 \r
2131 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C))\r
2132     { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384,\r
2133              "TLS-DHE-PSK-WITH-ARIA-256-GCM-SHA384",\r
2134       MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
2135       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2136       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2137       0 },\r
2138 #endif\r
2139 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C))\r
2140     { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384,\r
2141              "TLS-DHE-PSK-WITH-ARIA-256-CBC-SHA384",\r
2142       MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
2143       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2144       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2145       0 },\r
2146 #endif\r
2147 #if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C))\r
2148     { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256,\r
2149              "TLS-DHE-PSK-WITH-ARIA-128-GCM-SHA256",\r
2150       MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
2151       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2152       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2153       0 },\r
2154 #endif\r
2155 #if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C))\r
2156     { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256,\r
2157              "TLS-DHE-PSK-WITH-ARIA-128-CBC-SHA256",\r
2158       MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,\r
2159       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2160       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,\r
2161       0 },\r
2162 #endif\r
2163 \r
2164 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */\r
2165 \r
2166 #endif /* MBEDTLS_ARIA_C */\r
2167 \r
2168 \r
2169     { 0, "",\r
2170       MBEDTLS_CIPHER_NONE, MBEDTLS_MD_NONE, MBEDTLS_KEY_EXCHANGE_NONE,\r
2171       0, 0, 0, 0, 0 }\r
2172 };\r
2173 \r
2174 #if defined(MBEDTLS_SSL_CIPHERSUITES)\r
2175 const int *mbedtls_ssl_list_ciphersuites( void )\r
2176 {\r
2177     return( ciphersuite_preference );\r
2178 }\r
2179 #else\r
2180 #define MAX_CIPHERSUITES    sizeof( ciphersuite_definitions     ) /         \\r
2181                             sizeof( ciphersuite_definitions[0]  )\r
2182 static int supported_ciphersuites[MAX_CIPHERSUITES];\r
2183 static int supported_init = 0;\r
2184 \r
2185 static int ciphersuite_is_removed( const mbedtls_ssl_ciphersuite_t *cs_info )\r
2186 {\r
2187     (void)cs_info;\r
2188 \r
2189 #if defined(MBEDTLS_REMOVE_ARC4_CIPHERSUITES)\r
2190     if( cs_info->cipher == MBEDTLS_CIPHER_ARC4_128 )\r
2191         return( 1 );\r
2192 #endif /* MBEDTLS_REMOVE_ARC4_CIPHERSUITES */\r
2193 \r
2194 #if defined(MBEDTLS_REMOVE_3DES_CIPHERSUITES)\r
2195     if( cs_info->cipher == MBEDTLS_CIPHER_DES_EDE3_ECB ||\r
2196         cs_info->cipher == MBEDTLS_CIPHER_DES_EDE3_CBC )\r
2197     {\r
2198         return( 1 );\r
2199     }\r
2200 #endif /* MBEDTLS_REMOVE_3DES_CIPHERSUITES */\r
2201 \r
2202     return( 0 );\r
2203 }\r
2204 \r
2205 const int *mbedtls_ssl_list_ciphersuites( void )\r
2206 {\r
2207     /*\r
2208      * On initial call filter out all ciphersuites not supported by current\r
2209      * build based on presence in the ciphersuite_definitions.\r
2210      */\r
2211     if( supported_init == 0 )\r
2212     {\r
2213         const int *p;\r
2214         int *q;\r
2215 \r
2216         for( p = ciphersuite_preference, q = supported_ciphersuites;\r
2217              *p != 0 && q < supported_ciphersuites + MAX_CIPHERSUITES - 1;\r
2218              p++ )\r
2219         {\r
2220             const mbedtls_ssl_ciphersuite_t *cs_info;\r
2221             if( ( cs_info = mbedtls_ssl_ciphersuite_from_id( *p ) ) != NULL &&\r
2222                 !ciphersuite_is_removed( cs_info ) )\r
2223             {\r
2224                 *(q++) = *p;\r
2225             }\r
2226         }\r
2227         *q = 0;\r
2228 \r
2229         supported_init = 1;\r
2230     }\r
2231 \r
2232     return( supported_ciphersuites );\r
2233 }\r
2234 #endif /* MBEDTLS_SSL_CIPHERSUITES */\r
2235 \r
2236 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_string(\r
2237                                                 const char *ciphersuite_name )\r
2238 {\r
2239     const mbedtls_ssl_ciphersuite_t *cur = ciphersuite_definitions;\r
2240 \r
2241     if( NULL == ciphersuite_name )\r
2242         return( NULL );\r
2243 \r
2244     while( cur->id != 0 )\r
2245     {\r
2246         if( 0 == strcmp( cur->name, ciphersuite_name ) )\r
2247             return( cur );\r
2248 \r
2249         cur++;\r
2250     }\r
2251 \r
2252     return( NULL );\r
2253 }\r
2254 \r
2255 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_id( int ciphersuite )\r
2256 {\r
2257     const mbedtls_ssl_ciphersuite_t *cur = ciphersuite_definitions;\r
2258 \r
2259     while( cur->id != 0 )\r
2260     {\r
2261         if( cur->id == ciphersuite )\r
2262             return( cur );\r
2263 \r
2264         cur++;\r
2265     }\r
2266 \r
2267     return( NULL );\r
2268 }\r
2269 \r
2270 const char *mbedtls_ssl_get_ciphersuite_name( const int ciphersuite_id )\r
2271 {\r
2272     const mbedtls_ssl_ciphersuite_t *cur;\r
2273 \r
2274     cur = mbedtls_ssl_ciphersuite_from_id( ciphersuite_id );\r
2275 \r
2276     if( cur == NULL )\r
2277         return( "unknown" );\r
2278 \r
2279     return( cur->name );\r
2280 }\r
2281 \r
2282 int mbedtls_ssl_get_ciphersuite_id( const char *ciphersuite_name )\r
2283 {\r
2284     const mbedtls_ssl_ciphersuite_t *cur;\r
2285 \r
2286     cur = mbedtls_ssl_ciphersuite_from_string( ciphersuite_name );\r
2287 \r
2288     if( cur == NULL )\r
2289         return( 0 );\r
2290 \r
2291     return( cur->id );\r
2292 }\r
2293 \r
2294 #if defined(MBEDTLS_PK_C)\r
2295 mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_pk_alg( const mbedtls_ssl_ciphersuite_t *info )\r
2296 {\r
2297     switch( info->key_exchange )\r
2298     {\r
2299         case MBEDTLS_KEY_EXCHANGE_RSA:\r
2300         case MBEDTLS_KEY_EXCHANGE_DHE_RSA:\r
2301         case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:\r
2302         case MBEDTLS_KEY_EXCHANGE_RSA_PSK:\r
2303             return( MBEDTLS_PK_RSA );\r
2304 \r
2305         case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:\r
2306             return( MBEDTLS_PK_ECDSA );\r
2307 \r
2308         case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:\r
2309         case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:\r
2310             return( MBEDTLS_PK_ECKEY );\r
2311 \r
2312         default:\r
2313             return( MBEDTLS_PK_NONE );\r
2314     }\r
2315 }\r
2316 \r
2317 mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg( const mbedtls_ssl_ciphersuite_t *info )\r
2318 {\r
2319     switch( info->key_exchange )\r
2320     {\r
2321         case MBEDTLS_KEY_EXCHANGE_RSA:\r
2322         case MBEDTLS_KEY_EXCHANGE_DHE_RSA:\r
2323         case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:\r
2324             return( MBEDTLS_PK_RSA );\r
2325 \r
2326         case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:\r
2327             return( MBEDTLS_PK_ECDSA );\r
2328 \r
2329         default:\r
2330             return( MBEDTLS_PK_NONE );\r
2331     }\r
2332 }\r
2333 \r
2334 #endif /* MBEDTLS_PK_C */\r
2335 \r
2336 #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \\r
2337     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)\r
2338 int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info )\r
2339 {\r
2340     switch( info->key_exchange )\r
2341     {\r
2342         case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:\r
2343         case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:\r
2344         case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK:\r
2345         case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:\r
2346         case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:\r
2347         case MBEDTLS_KEY_EXCHANGE_ECJPAKE:\r
2348             return( 1 );\r
2349 \r
2350         default:\r
2351             return( 0 );\r
2352     }\r
2353 }\r
2354 #endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C || MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED*/\r
2355 \r
2356 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED)\r
2357 int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info )\r
2358 {\r
2359     switch( info->key_exchange )\r
2360     {\r
2361         case MBEDTLS_KEY_EXCHANGE_PSK:\r
2362         case MBEDTLS_KEY_EXCHANGE_RSA_PSK:\r
2363         case MBEDTLS_KEY_EXCHANGE_DHE_PSK:\r
2364         case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK:\r
2365             return( 1 );\r
2366 \r
2367         default:\r
2368             return( 0 );\r
2369     }\r
2370 }\r
2371 #endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */\r
2372 \r
2373 #endif /* MBEDTLS_SSL_TLS_C */\r