RetroArch
ssl.h
Go to the documentation of this file.
1 
23 #ifndef MBEDTLS_SSL_H
24 #define MBEDTLS_SSL_H
25 
26 #if !defined(MBEDTLS_CONFIG_FILE)
27 #include "config.h"
28 #else
29 #include MBEDTLS_CONFIG_FILE
30 #endif
31 
32 #include "bignum.h"
33 #include "ecp.h"
34 
35 #include "ssl_ciphersuites.h"
36 
37 #if defined(MBEDTLS_X509_CRT_PARSE_C)
38 #include "x509_crt.h"
39 #include "x509_crl.h"
40 #endif
41 
42 #if defined(MBEDTLS_DHM_C)
43 #include "dhm.h"
44 #endif
45 
46 #if defined(MBEDTLS_ECDH_C)
47 #include "ecdh.h"
48 #endif
49 
50 #if defined(MBEDTLS_ZLIB_SUPPORT)
51 #include "zlib.h"
52 #endif
53 
54 #if defined(MBEDTLS_HAVE_TIME)
55 #include "platform_time.h"
56 #endif
57 
58 /*
59  * SSL Error codes
60  */
61 #define MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE -0x7080
62 #define MBEDTLS_ERR_SSL_BAD_INPUT_DATA -0x7100
63 #define MBEDTLS_ERR_SSL_INVALID_MAC -0x7180
64 #define MBEDTLS_ERR_SSL_INVALID_RECORD -0x7200
65 #define MBEDTLS_ERR_SSL_CONN_EOF -0x7280
66 #define MBEDTLS_ERR_SSL_UNKNOWN_CIPHER -0x7300
67 #define MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN -0x7380
68 #define MBEDTLS_ERR_SSL_NO_RNG -0x7400
69 #define MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE -0x7480
70 #define MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE -0x7500
71 #define MBEDTLS_ERR_SSL_CERTIFICATE_REQUIRED -0x7580
72 #define MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED -0x7600
73 #define MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED -0x7680
74 #define MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE -0x7700
75 #define MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE -0x7780
76 #define MBEDTLS_ERR_SSL_PEER_VERIFY_FAILED -0x7800
77 #define MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY -0x7880
78 #define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO -0x7900
79 #define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO -0x7980
80 #define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE -0x7A00
81 #define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST -0x7A80
82 #define MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE -0x7B00
83 #define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO_DONE -0x7B80
84 #define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE -0x7C00
85 #define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP -0x7C80
86 #define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS -0x7D00
87 #define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY -0x7D80
88 #define MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC -0x7E00
89 #define MBEDTLS_ERR_SSL_BAD_HS_FINISHED -0x7E80
90 #define MBEDTLS_ERR_SSL_ALLOC_FAILED -0x7F00
91 #define MBEDTLS_ERR_SSL_HW_ACCEL_FAILED -0x7F80
92 #define MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH -0x6F80
93 #define MBEDTLS_ERR_SSL_COMPRESSION_FAILED -0x6F00
94 #define MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION -0x6E80
95 #define MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET -0x6E00
96 #define MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED -0x6D80
97 #define MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH -0x6D00
98 #define MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY -0x6C80
99 #define MBEDTLS_ERR_SSL_INTERNAL_ERROR -0x6C00
100 #define MBEDTLS_ERR_SSL_COUNTER_WRAPPING -0x6B80
101 #define MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO -0x6B00
102 #define MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED -0x6A80
103 #define MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL -0x6A00
104 #define MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE -0x6980
105 #define MBEDTLS_ERR_SSL_WANT_READ -0x6900
106 #define MBEDTLS_ERR_SSL_WANT_WRITE -0x6880
107 #define MBEDTLS_ERR_SSL_TIMEOUT -0x6800
108 #define MBEDTLS_ERR_SSL_CLIENT_RECONNECT -0x6780
109 #define MBEDTLS_ERR_SSL_UNEXPECTED_RECORD -0x6700
110 #define MBEDTLS_ERR_SSL_NON_FATAL -0x6680
111 #define MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH -0x6600
113 /*
114  * Various constants
115  */
116 #define MBEDTLS_SSL_MAJOR_VERSION_3 3
117 #define MBEDTLS_SSL_MINOR_VERSION_0 0
118 #define MBEDTLS_SSL_MINOR_VERSION_1 1
119 #define MBEDTLS_SSL_MINOR_VERSION_2 2
120 #define MBEDTLS_SSL_MINOR_VERSION_3 3
122 #define MBEDTLS_SSL_TRANSPORT_STREAM 0
123 #define MBEDTLS_SSL_TRANSPORT_DATAGRAM 1
125 #define MBEDTLS_SSL_MAX_HOST_NAME_LEN 255
127 /* RFC 6066 section 4, see also mfl_code_to_length in ssl_tls.c
128  * NONE must be zero so that memset()ing structure to zero works */
129 #define MBEDTLS_SSL_MAX_FRAG_LEN_NONE 0
130 #define MBEDTLS_SSL_MAX_FRAG_LEN_512 1
131 #define MBEDTLS_SSL_MAX_FRAG_LEN_1024 2
132 #define MBEDTLS_SSL_MAX_FRAG_LEN_2048 3
133 #define MBEDTLS_SSL_MAX_FRAG_LEN_4096 4
134 #define MBEDTLS_SSL_MAX_FRAG_LEN_INVALID 5
136 #define MBEDTLS_SSL_IS_CLIENT 0
137 #define MBEDTLS_SSL_IS_SERVER 1
138 
139 #define MBEDTLS_SSL_IS_NOT_FALLBACK 0
140 #define MBEDTLS_SSL_IS_FALLBACK 1
141 
142 #define MBEDTLS_SSL_EXTENDED_MS_DISABLED 0
143 #define MBEDTLS_SSL_EXTENDED_MS_ENABLED 1
144 
145 #define MBEDTLS_SSL_ETM_DISABLED 0
146 #define MBEDTLS_SSL_ETM_ENABLED 1
147 
148 #define MBEDTLS_SSL_COMPRESS_NULL 0
149 #define MBEDTLS_SSL_COMPRESS_DEFLATE 1
150 
151 #define MBEDTLS_SSL_VERIFY_NONE 0
152 #define MBEDTLS_SSL_VERIFY_OPTIONAL 1
153 #define MBEDTLS_SSL_VERIFY_REQUIRED 2
154 #define MBEDTLS_SSL_VERIFY_UNSET 3 /* Used only for sni_authmode */
155 
156 #define MBEDTLS_SSL_LEGACY_RENEGOTIATION 0
157 #define MBEDTLS_SSL_SECURE_RENEGOTIATION 1
158 
159 #define MBEDTLS_SSL_RENEGOTIATION_DISABLED 0
160 #define MBEDTLS_SSL_RENEGOTIATION_ENABLED 1
161 
162 #define MBEDTLS_SSL_ANTI_REPLAY_DISABLED 0
163 #define MBEDTLS_SSL_ANTI_REPLAY_ENABLED 1
164 
165 #define MBEDTLS_SSL_RENEGOTIATION_NOT_ENFORCED -1
166 #define MBEDTLS_SSL_RENEGO_MAX_RECORDS_DEFAULT 16
167 
168 #define MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION 0
169 #define MBEDTLS_SSL_LEGACY_ALLOW_RENEGOTIATION 1
170 #define MBEDTLS_SSL_LEGACY_BREAK_HANDSHAKE 2
171 
172 #define MBEDTLS_SSL_TRUNC_HMAC_DISABLED 0
173 #define MBEDTLS_SSL_TRUNC_HMAC_ENABLED 1
174 #define MBEDTLS_SSL_TRUNCATED_HMAC_LEN 10 /* 80 bits, rfc 6066 section 7 */
175 
176 #define MBEDTLS_SSL_SESSION_TICKETS_DISABLED 0
177 #define MBEDTLS_SSL_SESSION_TICKETS_ENABLED 1
178 
179 #define MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED 0
180 #define MBEDTLS_SSL_CBC_RECORD_SPLITTING_ENABLED 1
181 
182 #define MBEDTLS_SSL_ARC4_ENABLED 0
183 #define MBEDTLS_SSL_ARC4_DISABLED 1
184 
185 #define MBEDTLS_SSL_PRESET_DEFAULT 0
186 #define MBEDTLS_SSL_PRESET_SUITEB 2
187 
188 #define MBEDTLS_SSL_CERT_REQ_CA_LIST_ENABLED 1
189 #define MBEDTLS_SSL_CERT_REQ_CA_LIST_DISABLED 0
190 
191 /*
192  * Default range for DTLS retransmission timer value, in milliseconds.
193  * RFC 6347 4.2.4.1 says from 1 second to 60 seconds.
194  */
195 #define MBEDTLS_SSL_DTLS_TIMEOUT_DFL_MIN 1000
196 #define MBEDTLS_SSL_DTLS_TIMEOUT_DFL_MAX 60000
197 
206 #if !defined(MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME)
207 #define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400
208 #endif
209 
210 /*
211  * Maxium fragment length in bytes,
212  * determines the size of each of the two internal I/O buffers.
213  *
214  * Note: the RFC defines the default size of SSL / TLS messages. If you
215  * change the value here, other clients / servers may not be able to
216  * communicate with you anymore. Only change this value if you control
217  * both sides of the connection and have it reduced at both sides, or
218  * if you're using the Max Fragment Length extension and you know all your
219  * peers are using it too!
220  */
221 #if !defined(MBEDTLS_SSL_MAX_CONTENT_LEN)
222 #define MBEDTLS_SSL_MAX_CONTENT_LEN 16384
223 #endif
224 
225 /* \} name SECTION: Module settings */
226 
227 /*
228  * Length of the verify data for secure renegotiation
229  */
230 #if defined(MBEDTLS_SSL_PROTO_SSL3)
231 #define MBEDTLS_SSL_VERIFY_DATA_MAX_LEN 36
232 #else
233 #define MBEDTLS_SSL_VERIFY_DATA_MAX_LEN 12
234 #endif
235 
236 /*
237  * Signaling ciphersuite values (SCSV)
238  */
239 #define MBEDTLS_SSL_EMPTY_RENEGOTIATION_INFO 0xFF
240 #define MBEDTLS_SSL_FALLBACK_SCSV_VALUE 0x5600
242 /*
243  * Supported Signature and Hash algorithms (For TLS 1.2)
244  * RFC 5246 section 7.4.1.4.1
245  */
246 #define MBEDTLS_SSL_HASH_NONE 0
247 #define MBEDTLS_SSL_HASH_MD5 1
248 #define MBEDTLS_SSL_HASH_SHA1 2
249 #define MBEDTLS_SSL_HASH_SHA224 3
250 #define MBEDTLS_SSL_HASH_SHA256 4
251 #define MBEDTLS_SSL_HASH_SHA384 5
252 #define MBEDTLS_SSL_HASH_SHA512 6
253 
254 #define MBEDTLS_SSL_SIG_ANON 0
255 #define MBEDTLS_SSL_SIG_RSA 1
256 #define MBEDTLS_SSL_SIG_ECDSA 3
257 
258 /*
259  * Client Certificate Types
260  * RFC 5246 section 7.4.4 plus RFC 4492 section 5.5
261  */
262 #define MBEDTLS_SSL_CERT_TYPE_RSA_SIGN 1
263 #define MBEDTLS_SSL_CERT_TYPE_ECDSA_SIGN 64
264 
265 /*
266  * Message, alert and handshake types
267  */
268 #define MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC 20
269 #define MBEDTLS_SSL_MSG_ALERT 21
270 #define MBEDTLS_SSL_MSG_HANDSHAKE 22
271 #define MBEDTLS_SSL_MSG_APPLICATION_DATA 23
272 
273 #define MBEDTLS_SSL_ALERT_LEVEL_WARNING 1
274 #define MBEDTLS_SSL_ALERT_LEVEL_FATAL 2
275 
276 #define MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY 0 /* 0x00 */
277 #define MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE 10 /* 0x0A */
278 #define MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC 20 /* 0x14 */
279 #define MBEDTLS_SSL_ALERT_MSG_DECRYPTION_FAILED 21 /* 0x15 */
280 #define MBEDTLS_SSL_ALERT_MSG_RECORD_OVERFLOW 22 /* 0x16 */
281 #define MBEDTLS_SSL_ALERT_MSG_DECOMPRESSION_FAILURE 30 /* 0x1E */
282 #define MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE 40 /* 0x28 */
283 #define MBEDTLS_SSL_ALERT_MSG_NO_CERT 41 /* 0x29 */
284 #define MBEDTLS_SSL_ALERT_MSG_BAD_CERT 42 /* 0x2A */
285 #define MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT 43 /* 0x2B */
286 #define MBEDTLS_SSL_ALERT_MSG_CERT_REVOKED 44 /* 0x2C */
287 #define MBEDTLS_SSL_ALERT_MSG_CERT_EXPIRED 45 /* 0x2D */
288 #define MBEDTLS_SSL_ALERT_MSG_CERT_UNKNOWN 46 /* 0x2E */
289 #define MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER 47 /* 0x2F */
290 #define MBEDTLS_SSL_ALERT_MSG_UNKNOWN_CA 48 /* 0x30 */
291 #define MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED 49 /* 0x31 */
292 #define MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR 50 /* 0x32 */
293 #define MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR 51 /* 0x33 */
294 #define MBEDTLS_SSL_ALERT_MSG_EXPORT_RESTRICTION 60 /* 0x3C */
295 #define MBEDTLS_SSL_ALERT_MSG_PROTOCOL_VERSION 70 /* 0x46 */
296 #define MBEDTLS_SSL_ALERT_MSG_INSUFFICIENT_SECURITY 71 /* 0x47 */
297 #define MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR 80 /* 0x50 */
298 #define MBEDTLS_SSL_ALERT_MSG_INAPROPRIATE_FALLBACK 86 /* 0x56 */
299 #define MBEDTLS_SSL_ALERT_MSG_USER_CANCELED 90 /* 0x5A */
300 #define MBEDTLS_SSL_ALERT_MSG_NO_RENEGOTIATION 100 /* 0x64 */
301 #define MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT 110 /* 0x6E */
302 #define MBEDTLS_SSL_ALERT_MSG_UNRECOGNIZED_NAME 112 /* 0x70 */
303 #define MBEDTLS_SSL_ALERT_MSG_UNKNOWN_PSK_IDENTITY 115 /* 0x73 */
304 #define MBEDTLS_SSL_ALERT_MSG_NO_APPLICATION_PROTOCOL 120 /* 0x78 */
305 
306 #define MBEDTLS_SSL_HS_HELLO_REQUEST 0
307 #define MBEDTLS_SSL_HS_CLIENT_HELLO 1
308 #define MBEDTLS_SSL_HS_SERVER_HELLO 2
309 #define MBEDTLS_SSL_HS_HELLO_VERIFY_REQUEST 3
310 #define MBEDTLS_SSL_HS_NEW_SESSION_TICKET 4
311 #define MBEDTLS_SSL_HS_CERTIFICATE 11
312 #define MBEDTLS_SSL_HS_SERVER_KEY_EXCHANGE 12
313 #define MBEDTLS_SSL_HS_CERTIFICATE_REQUEST 13
314 #define MBEDTLS_SSL_HS_SERVER_HELLO_DONE 14
315 #define MBEDTLS_SSL_HS_CERTIFICATE_VERIFY 15
316 #define MBEDTLS_SSL_HS_CLIENT_KEY_EXCHANGE 16
317 #define MBEDTLS_SSL_HS_FINISHED 20
318 
319 /*
320  * TLS extensions
321  */
322 #define MBEDTLS_TLS_EXT_SERVERNAME 0
323 #define MBEDTLS_TLS_EXT_SERVERNAME_HOSTNAME 0
324 
325 #define MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH 1
326 
327 #define MBEDTLS_TLS_EXT_TRUNCATED_HMAC 4
328 
329 #define MBEDTLS_TLS_EXT_SUPPORTED_ELLIPTIC_CURVES 10
330 #define MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS 11
331 
332 #define MBEDTLS_TLS_EXT_SIG_ALG 13
333 
334 #define MBEDTLS_TLS_EXT_ALPN 16
335 
336 #define MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC 22 /* 0x16 */
337 #define MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET 0x0017 /* 23 */
338 
339 #define MBEDTLS_TLS_EXT_SESSION_TICKET 35
340 
341 #define MBEDTLS_TLS_EXT_ECJPAKE_KKPP 256 /* experimental */
342 
343 #define MBEDTLS_TLS_EXT_RENEGOTIATION_INFO 0xFF01
344 
345 /*
346  * Size defines
347  */
348 #if !defined(MBEDTLS_PSK_MAX_LEN)
349 #define MBEDTLS_PSK_MAX_LEN 32 /* 256 bits */
350 #endif
351 
352 /* Dummy type used only for its size */
354 {
355 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
356  unsigned char _pms_rsa[48]; /* RFC 5246 8.1.1 */
357 #endif
358 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
359  unsigned char _pms_dhm[MBEDTLS_MPI_MAX_SIZE]; /* RFC 5246 8.1.2 */
360 #endif
361 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
362  defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
363  defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \
364  defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
365  unsigned char _pms_ecdh[MBEDTLS_ECP_MAX_BYTES]; /* RFC 4492 5.10 */
366 #endif
367 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)
368  unsigned char _pms_psk[4 + 2 * MBEDTLS_PSK_MAX_LEN]; /* RFC 4279 2 */
369 #endif
370 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)
371  unsigned char _pms_dhe_psk[4 + MBEDTLS_MPI_MAX_SIZE
372  + MBEDTLS_PSK_MAX_LEN]; /* RFC 4279 3 */
373 #endif
374 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)
375  unsigned char _pms_rsa_psk[52 + MBEDTLS_PSK_MAX_LEN]; /* RFC 4279 4 */
376 #endif
377 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
378  unsigned char _pms_ecdhe_psk[4 + MBEDTLS_ECP_MAX_BYTES
379  + MBEDTLS_PSK_MAX_LEN]; /* RFC 5489 2 */
380 #endif
381 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
382  unsigned char _pms_ecjpake[32]; /* Thread spec: SHA-256 output */
383 #endif
384 };
385 
386 #define MBEDTLS_PREMASTER_SIZE sizeof( union mbedtls_ssl_premaster_secret )
387 
388 #ifdef __cplusplus
389 extern "C" {
390 #endif
391 
392 /*
393  * SSL state machine
394  */
395 typedef enum
396 {
416 }
418 
436 typedef int mbedtls_ssl_send_t( void *ctx,
437  const unsigned char *buf,
438  size_t len );
439 
459 typedef int mbedtls_ssl_recv_t( void *ctx,
460  unsigned char *buf,
461  size_t len );
462 
485 typedef int mbedtls_ssl_recv_timeout_t( void *ctx,
486  unsigned char *buf,
487  size_t len,
488  uint32_t timeout );
511 typedef void mbedtls_ssl_set_timer_t( void * ctx,
512  uint32_t int_ms,
513  uint32_t fin_ms );
514 
526 typedef int mbedtls_ssl_get_timer_t( void * ctx );
527 
528 
529 /* Defined below */
533 
534 /* Defined in ssl_internal.h */
538 #if defined(MBEDTLS_X509_CRT_PARSE_C)
540 #endif
541 #if defined(MBEDTLS_SSL_PROTO_DTLS)
543 #endif
544 
545 /*
546  * This structure is used for storing current session data.
547  */
549 {
550 #if defined(MBEDTLS_HAVE_TIME)
552 #endif
555  size_t id_len;
556  unsigned char id[32];
557  unsigned char master[48];
559 #if defined(MBEDTLS_X509_CRT_PARSE_C)
561 #endif /* MBEDTLS_X509_CRT_PARSE_C */
564 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C)
565  unsigned char *ticket;
566  size_t ticket_len;
568 #endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */
569 
570 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
571  unsigned char mfl_code;
572 #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */
573 
574 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
576 #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */
577 
578 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
580 #endif
581 };
582 
587 {
588  /* Group items by size (largest first) to minimize padding overhead */
589 
590  /*
591  * Pointers
592  */
593 
594  const int *ciphersuite_list[4];
597  void (*f_dbg)(void *, int, const char *, int, const char *);
598  void *p_dbg;
601  int (*f_rng)(void *, unsigned char *, size_t);
602  void *p_rng;
605  int (*f_get_cache)(void *, mbedtls_ssl_session *);
607  int (*f_set_cache)(void *, const mbedtls_ssl_session *);
608  void *p_cache;
610 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
611 
612  int (*f_sni)(void *, mbedtls_ssl_context *, const unsigned char *, size_t);
613  void *p_sni;
614 #endif
615 
616 #if defined(MBEDTLS_X509_CRT_PARSE_C)
617 
618  int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *);
619  void *p_vrfy;
620 #endif
621 
622 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED)
623 
624  int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t);
625  void *p_psk;
626 #endif
627 
628 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C)
629 
630  int (*f_cookie_write)( void *, unsigned char **, unsigned char *,
631  const unsigned char *, size_t );
633  int (*f_cookie_check)( void *, const unsigned char *, size_t,
634  const unsigned char *, size_t );
635  void *p_cookie;
636 #endif
637 
638 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_SRV_C)
639 
640  int (*f_ticket_write)( void *, const mbedtls_ssl_session *,
641  unsigned char *, const unsigned char *, size_t *, uint32_t * );
643  int (*f_ticket_parse)( void *, mbedtls_ssl_session *, unsigned char *, size_t);
644  void *p_ticket;
645 #endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_SRV_C */
646 
647 #if defined(MBEDTLS_SSL_EXPORT_KEYS)
648 
649  int (*f_export_keys)( void *, const unsigned char *,
650  const unsigned char *, size_t, size_t, size_t );
652 #endif
653 
654 #if defined(MBEDTLS_X509_CRT_PARSE_C)
659 #endif /* MBEDTLS_X509_CRT_PARSE_C */
660 
661 #if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED)
662  const int *sig_hashes;
663 #endif
664 
665 #if defined(MBEDTLS_ECP_C)
667 #endif
668 
669 #if defined(MBEDTLS_DHM_C)
672 #endif
673 
674 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED)
675  unsigned char *psk;
676  size_t psk_len;
677  unsigned char *psk_identity;
679 #endif
680 
681 #if defined(MBEDTLS_SSL_ALPN)
682  const char **alpn_list;
683 #endif
684 
685  /*
686  * Numerical settings (int then char)
687  */
688 
691 #if defined(MBEDTLS_SSL_PROTO_DTLS)
696 #endif
697 
698 #if defined(MBEDTLS_SSL_RENEGOTIATION)
700  unsigned char renego_period[8];
702 #endif
703 
704 #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT)
705  unsigned int badmac_limit;
706 #endif
707 
708 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C)
709  unsigned int dhm_min_bitlen;
710 #endif
711 
712  unsigned char max_major_ver;
713  unsigned char max_minor_ver;
714  unsigned char min_major_ver;
715  unsigned char min_minor_ver;
717  /*
718  * Flags (bitfields)
719  */
720 
721  unsigned int endpoint : 1;
722  unsigned int transport : 1;
723  unsigned int authmode : 2;
724  /* needed even with renego disabled for LEGACY_BREAK_HANDSHAKE */
725  unsigned int allow_legacy_renegotiation : 2 ;
726 #if defined(MBEDTLS_ARC4_C)
727  unsigned int arc4_disabled : 1;
728 #endif
729 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
730  unsigned int mfl_code : 3;
731 #endif
732 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
733  unsigned int encrypt_then_mac : 1 ;
734 #endif
735 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET)
736  unsigned int extended_ms : 1;
737 #endif
738 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
739  unsigned int anti_replay : 1;
740 #endif
741 #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING)
742  unsigned int cbc_record_splitting : 1;
743 #endif
744 #if defined(MBEDTLS_SSL_RENEGOTIATION)
745  unsigned int disable_renegotiation : 1;
746 #endif
747 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
748  unsigned int trunc_hmac : 1;
749 #endif
750 #if defined(MBEDTLS_SSL_SESSION_TICKETS)
751  unsigned int session_tickets : 1;
752 #endif
753 #if defined(MBEDTLS_SSL_FALLBACK_SCSV) && defined(MBEDTLS_SSL_CLI_C)
754  unsigned int fallback : 1;
755 #endif
756 #if defined(MBEDTLS_SSL_SRV_C)
757  unsigned int cert_req_ca_list : 1;
759 #endif
760 };
761 
762 
764 {
767  /*
768  * Miscellaneous
769  */
770  int state;
771 #if defined(MBEDTLS_SSL_RENEGOTIATION)
776 #endif
777 
778  int major_ver;
779  int minor_ver;
781 #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT)
782  unsigned badmac_seen;
783 #endif
784 
790  void *p_bio;
792  /*
793  * Session layer
794  */
803  /*
804  * Record layer transformations
805  */
811  /*
812  * Timers
813  */
814  void *p_timer;
819  /*
820  * Record layer (incoming data)
821  */
822  unsigned char *in_buf;
823  unsigned char *in_ctr;
826  unsigned char *in_hdr;
827  unsigned char *in_len;
828  unsigned char *in_iv;
829  unsigned char *in_msg;
830  unsigned char *in_offt;
833  size_t in_msglen;
834  size_t in_left;
835 #if defined(MBEDTLS_SSL_PROTO_DTLS)
839 #endif
840 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
843 #endif
844 
845  size_t in_hslen;
847  int nb_zero;
852  /*
853  * Record layer (outgoing data)
854  */
855  unsigned char *out_buf;
856  unsigned char *out_ctr;
857  unsigned char *out_hdr;
858  unsigned char *out_len;
859  unsigned char *out_iv;
860  unsigned char *out_msg;
863  size_t out_msglen;
864  size_t out_left;
866 #if defined(MBEDTLS_ZLIB_SUPPORT)
867  unsigned char *compress_buf;
868 #endif
869 #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING)
870  signed char split_done;
871 #endif
872 
873  /*
874  * PKI layer
875  */
878  /*
879  * User settings
880  */
881 #if defined(MBEDTLS_X509_CRT_PARSE_C)
882  char *hostname;
884 #endif
885 
886 #if defined(MBEDTLS_SSL_ALPN)
887  const char *alpn_chosen;
888 #endif
889 
890  /*
891  * Information for DTLS hello verify
892  */
893 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C)
894  unsigned char *cli_id;
895  size_t cli_id_len;
896 #endif
897 
898  /*
899  * Secure renegotiation
900  */
901  /* needed to know when to send extension on server */
904 #if defined(MBEDTLS_SSL_RENEGOTIATION)
908 #endif
909 };
910 
911 #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL)
912 
913 #define MBEDTLS_SSL_CHANNEL_OUTBOUND 0
914 #define MBEDTLS_SSL_CHANNEL_INBOUND 1
915 
916 extern int (*mbedtls_ssl_hw_record_init)(mbedtls_ssl_context *ssl,
917  const unsigned char *key_enc, const unsigned char *key_dec,
918  size_t keylen,
919  const unsigned char *iv_enc, const unsigned char *iv_dec,
920  size_t ivlen,
921  const unsigned char *mac_enc, const unsigned char *mac_dec,
922  size_t maclen);
923 extern int (*mbedtls_ssl_hw_record_activate)(mbedtls_ssl_context *ssl, int direction);
924 extern int (*mbedtls_ssl_hw_record_reset)(mbedtls_ssl_context *ssl);
925 extern int (*mbedtls_ssl_hw_record_write)(mbedtls_ssl_context *ssl);
926 extern int (*mbedtls_ssl_hw_record_read)(mbedtls_ssl_context *ssl);
927 extern int (*mbedtls_ssl_hw_record_finish)(mbedtls_ssl_context *ssl);
928 #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */
929 
936 const int *mbedtls_ssl_list_ciphersuites( void );
937 
946 const char *mbedtls_ssl_get_ciphersuite_name( const int ciphersuite_id );
947 
956 int mbedtls_ssl_get_ciphersuite_id( const char *ciphersuite_name );
957 
966 
983  const mbedtls_ssl_config *conf );
984 
996 
1003 void mbedtls_ssl_conf_endpoint( mbedtls_ssl_config *conf, int endpoint );
1004 
1019 void mbedtls_ssl_conf_transport( mbedtls_ssl_config *conf, int transport );
1020 
1047 void mbedtls_ssl_conf_authmode( mbedtls_ssl_config *conf, int authmode );
1048 
1049 #if defined(MBEDTLS_X509_CRT_PARSE_C)
1050 
1062  int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *),
1063  void *p_vrfy );
1064 #endif /* MBEDTLS_X509_CRT_PARSE_C */
1065 
1074  int (*f_rng)(void *, unsigned char *, size_t),
1075  void *p_rng );
1076 
1092  void (*f_dbg)(void *, int, const char *, int, const char *),
1093  void *p_dbg );
1094 
1126  void *p_bio,
1127  mbedtls_ssl_send_t *f_send,
1128  mbedtls_ssl_recv_t *f_recv,
1129  mbedtls_ssl_recv_timeout_t *f_recv_timeout );
1130 
1148 
1170  void *p_timer,
1171  mbedtls_ssl_set_timer_t *f_set_timer,
1172  mbedtls_ssl_get_timer_t *f_get_timer );
1173 
1193 typedef int mbedtls_ssl_ticket_write_t( void *p_ticket,
1194  const mbedtls_ssl_session *session,
1195  unsigned char *start,
1196  const unsigned char *end,
1197  size_t *tlen,
1198  uint32_t *lifetime );
1199 
1200 #if defined(MBEDTLS_SSL_EXPORT_KEYS)
1201 
1221 typedef int mbedtls_ssl_export_keys_t( void *p_expkey,
1222  const unsigned char *ms,
1223  const unsigned char *kb,
1224  size_t maclen,
1225  size_t keylen,
1226  size_t ivlen );
1227 #endif /* MBEDTLS_SSL_EXPORT_KEYS */
1228 
1252 typedef int mbedtls_ssl_ticket_parse_t( void *p_ticket,
1253  mbedtls_ssl_session *session,
1254  unsigned char *buf,
1255  size_t len );
1256 
1257 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_SRV_C)
1258 
1273  mbedtls_ssl_ticket_write_t *f_ticket_write,
1274  mbedtls_ssl_ticket_parse_t *f_ticket_parse,
1275  void *p_ticket );
1276 #endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_SRV_C */
1277 
1278 #if defined(MBEDTLS_SSL_EXPORT_KEYS)
1279 
1290  mbedtls_ssl_export_keys_t *f_export_keys,
1291  void *p_export_keys );
1292 #endif /* MBEDTLS_SSL_EXPORT_KEYS */
1293 
1308 typedef int mbedtls_ssl_cookie_write_t( void *ctx,
1309  unsigned char **p, unsigned char *end,
1310  const unsigned char *info, size_t ilen );
1311 
1325 typedef int mbedtls_ssl_cookie_check_t( void *ctx,
1326  const unsigned char *cookie, size_t clen,
1327  const unsigned char *info, size_t ilen );
1328 
1329 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C)
1330 
1359  mbedtls_ssl_cookie_write_t *f_cookie_write,
1360  mbedtls_ssl_cookie_check_t *f_cookie_check,
1361  void *p_cookie );
1362 
1383  const unsigned char *info,
1384  size_t ilen );
1385 
1386 #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY && MBEDTLS_SSL_SRV_C */
1387 
1388 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
1389 
1405 #endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */
1406 
1407 #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT)
1408 
1432 #endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */
1433 
1434 #if defined(MBEDTLS_SSL_PROTO_DTLS)
1435 
1467 #endif /* MBEDTLS_SSL_PROTO_DTLS */
1468 
1469 #if defined(MBEDTLS_SSL_SRV_C)
1470 
1508  void *p_cache,
1509  int (*f_get_cache)(void *, mbedtls_ssl_session *),
1510  int (*f_set_cache)(void *, const mbedtls_ssl_session *) );
1511 #endif /* MBEDTLS_SSL_SRV_C */
1512 
1513 #if defined(MBEDTLS_SSL_CLI_C)
1514 
1529 #endif /* MBEDTLS_SSL_CLI_C */
1530 
1547  const int *ciphersuites );
1548 
1569  const int *ciphersuites,
1570  int major, int minor );
1571 
1572 #if defined(MBEDTLS_X509_CRT_PARSE_C)
1573 
1584  const mbedtls_x509_crt_profile *profile );
1585 
1594  mbedtls_x509_crt *ca_chain,
1595  mbedtls_x509_crl *ca_crl );
1596 
1626  mbedtls_x509_crt *own_cert,
1627  mbedtls_pk_context *pk_key );
1628 #endif /* MBEDTLS_X509_CRT_PARSE_C */
1629 
1630 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED)
1631 
1652  const unsigned char *psk, size_t psk_len,
1653  const unsigned char *psk_identity, size_t psk_identity_len );
1654 
1655 
1669  const unsigned char *psk, size_t psk_len );
1670 
1696  int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *,
1697  size_t),
1698  void *p_psk );
1699 #endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */
1700 
1701 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C)
1702 
1713 int mbedtls_ssl_conf_dh_param( mbedtls_ssl_config *conf, const char *dhm_P, const char *dhm_G );
1714 
1725 #endif /* MBEDTLS_DHM_C && defined(MBEDTLS_SSL_SRV_C) */
1726 
1727 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C)
1728 
1737  unsigned int bitlen );
1738 #endif /* MBEDTLS_DHM_C && MBEDTLS_SSL_CLI_C */
1739 
1740 #if defined(MBEDTLS_ECP_C)
1741 
1769  const mbedtls_ecp_group_id *curves );
1770 #endif /* MBEDTLS_ECP_C */
1771 
1772 #if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED)
1773 
1792  const int *hashes );
1793 #endif /* MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */
1794 
1795 #if defined(MBEDTLS_X509_CRT_PARSE_C)
1796 
1807 int mbedtls_ssl_set_hostname( mbedtls_ssl_context *ssl, const char *hostname );
1808 #endif /* MBEDTLS_X509_CRT_PARSE_C */
1809 
1810 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
1811 
1824  mbedtls_x509_crt *own_cert,
1825  mbedtls_pk_context *pk_key );
1826 
1839  mbedtls_x509_crt *ca_chain,
1840  mbedtls_x509_crl *ca_crl );
1841 
1853  int authmode );
1854 
1879  int (*f_sni)(void *, mbedtls_ssl_context *, const unsigned char *,
1880  size_t),
1881  void *p_sni );
1882 #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */
1883 
1884 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
1885 
1902 int mbedtls_ssl_set_hs_ecjpake_password( mbedtls_ssl_context *ssl,
1903  const unsigned char *pw,
1904  size_t pw_len );
1905 #endif /*MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */
1906 
1907 #if defined(MBEDTLS_SSL_ALPN)
1908 
1920 int mbedtls_ssl_conf_alpn_protocols( mbedtls_ssl_config *conf, const char **protos );
1921 
1931 const char *mbedtls_ssl_get_alpn_protocol( const mbedtls_ssl_context *ssl );
1932 #endif /* MBEDTLS_SSL_ALPN */
1933 
1950 void mbedtls_ssl_conf_max_version( mbedtls_ssl_config *conf, int major, int minor );
1951 
1970 void mbedtls_ssl_conf_min_version( mbedtls_ssl_config *conf, int major, int minor );
1971 
1972 #if defined(MBEDTLS_SSL_FALLBACK_SCSV) && defined(MBEDTLS_SSL_CLI_C)
1973 
1992 void mbedtls_ssl_conf_fallback( mbedtls_ssl_config *conf, char fallback );
1993 #endif /* MBEDTLS_SSL_FALLBACK_SCSV && MBEDTLS_SSL_CLI_C */
1994 
1995 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
1996 
2008 #endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */
2009 
2010 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET)
2011 
2023 #endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */
2024 
2025 #if defined(MBEDTLS_ARC4_C)
2026 
2041 void mbedtls_ssl_conf_arc4_support( mbedtls_ssl_config *conf, char arc4 );
2042 #endif /* MBEDTLS_ARC4_C */
2043 
2044 #if defined(MBEDTLS_SSL_SRV_C)
2045 
2055  char cert_req_ca_list );
2056 #endif /* MBEDTLS_SSL_SRV_C */
2057 
2058 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
2059 
2074 int mbedtls_ssl_conf_max_frag_len( mbedtls_ssl_config *conf, unsigned char mfl_code );
2075 #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */
2076 
2077 #if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
2078 
2086 void mbedtls_ssl_conf_truncated_hmac( mbedtls_ssl_config *conf, int truncate );
2087 #endif /* MBEDTLS_SSL_TRUNCATED_HMAC */
2088 
2089 #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING)
2090 
2102 #endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */
2103 
2104 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C)
2105 
2115 void mbedtls_ssl_conf_session_tickets( mbedtls_ssl_config *conf, int use_tickets );
2116 #endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */
2117 
2118 #if defined(MBEDTLS_SSL_RENEGOTIATION)
2119 
2136 void mbedtls_ssl_conf_renegotiation( mbedtls_ssl_config *conf, int renegotiation );
2137 #endif /* MBEDTLS_SSL_RENEGOTIATION */
2138 
2166 void mbedtls_ssl_conf_legacy_renegotiation( mbedtls_ssl_config *conf, int allow_legacy );
2167 
2168 #if defined(MBEDTLS_SSL_RENEGOTIATION)
2169 
2206 void mbedtls_ssl_conf_renegotiation_enforced( mbedtls_ssl_config *conf, int max_records );
2207 
2234  const unsigned char period[8] );
2235 #endif /* MBEDTLS_SSL_RENEGOTIATION */
2236 
2245 
2258 
2266 const char *mbedtls_ssl_get_ciphersuite( const mbedtls_ssl_context *ssl );
2267 
2275 const char *mbedtls_ssl_get_version( const mbedtls_ssl_context *ssl );
2276 
2288 
2289 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
2290 
2307 #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */
2308 
2309 #if defined(MBEDTLS_X509_CRT_PARSE_C)
2310 
2325 #endif /* MBEDTLS_X509_CRT_PARSE_C */
2326 
2327 #if defined(MBEDTLS_SSL_CLI_C)
2328 
2345 #endif /* MBEDTLS_SSL_CLI_C */
2346 
2369 
2390 
2391 #if defined(MBEDTLS_SSL_RENEGOTIATION)
2392 
2411 #endif /* MBEDTLS_SSL_RENEGOTIATION */
2412 
2447 int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len );
2448 
2484 int mbedtls_ssl_write( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len );
2485 
2503  unsigned char level,
2504  unsigned char message );
2519 
2526 
2538 
2555  int endpoint, int transport, int preset );
2556 
2563 
2570 
2578 
2579 #ifdef __cplusplus
2580 }
2581 #endif
2582 
2583 #endif /* ssl.h */
int encrypt_then_mac
Definition: ssl.h:579
void mbedtls_ssl_conf_session_cache(mbedtls_ssl_config *conf, void *p_cache, int(*f_get_cache)(void *, mbedtls_ssl_session *), int(*f_set_cache)(void *, const mbedtls_ssl_session *))
Set the session cache callbacks (server-side only) If not set, no session resuming is done (except if...
Definition: ssl_tls.c:5873
unsigned char * out_iv
Definition: ssl.h:859
void mbedtls_ssl_conf_min_version(mbedtls_ssl_config *conf, int major, int minor)
Set the minimum accepted SSL/TLS protocol version (Default: TLS 1.0)
Definition: ssl_tls.c:6251
void mbedtls_ssl_set_bio(mbedtls_ssl_context *ssl, void *p_bio, mbedtls_ssl_send_t *f_send, mbedtls_ssl_recv_t *f_recv, mbedtls_ssl_recv_timeout_t *f_recv_timeout)
Set the underlying BIO callbacks for write, read and read-with-timeout.
Definition: ssl_tls.c:5842
void mbedtls_ssl_conf_authmode(mbedtls_ssl_config *conf, int authmode)
Set the certificate verification mode Default: NONE on server, REQUIRED on client.
Definition: ssl_tls.c:5811
int(* f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *)
Definition: ssl.h:618
mbedtls_time_t start
Definition: ssl.h:551
void mbedtls_ssl_session_init(mbedtls_ssl_session *session)
Initialize SSL session structure.
Definition: ssl_tls.c:5489
#define MBEDTLS_PSK_MAX_LEN
Definition: ssl.h:349
void mbedtls_ssl_conf_dtls_anti_replay(mbedtls_ssl_config *conf, char mode)
Enable or disable anti-replay protection for DTLS. (DTLS only, no effect on TLS.) Default: enabled.
Definition: ssl_tls.c:5790
Definition: ssl_internal.h:344
int mbedtls_ssl_recv_t(void *ctx, unsigned char *buf, size_t len)
Callback type: receive data from the network.
Definition: ssl.h:459
void mbedtls_ssl_conf_fallback(mbedtls_ssl_config *conf, char fallback)
Set the fallback flag (client-side only). (Default: MBEDTLS_SSL_IS_NOT_FALLBACK).
Definition: ssl_tls.c:6258
unsigned char * out_msg
Definition: ssl.h:860
unsigned char * in_len
Definition: ssl.h:827
unsigned int dhm_min_bitlen
Definition: ssl.h:709
GLbitfield GLuint64 timeout
Definition: glext.h:7831
size_t cli_id_len
Definition: ssl.h:895
unsigned int fallback
Definition: ssl.h:754
unsigned char * out_len
Definition: ssl.h:858
unsigned char _pms_dhe_psk[4+MBEDTLS_MPI_MAX_SIZE+MBEDTLS_PSK_MAX_LEN]
Definition: ssl.h:372
const char * mbedtls_ssl_get_alpn_protocol(const mbedtls_ssl_context *ssl)
Get the name of the negotiated Application Layer Protocol. This function should be called after the h...
Definition: ssl_tls.c:6239
mbedtls_ssl_handshake_params * handshake
Definition: ssl.h:800
unsigned int trunc_hmac
Definition: ssl.h:748
int mbedtls_ssl_ticket_write_t(void *p_ticket, const mbedtls_ssl_session *session, unsigned char *start, const unsigned char *end, size_t *tlen, uint32_t *lifetime)
Callback type: generate and write session ticket.
Definition: ssl.h:1193
mbedtls_ssl_send_t * f_send
Definition: ssl.h:785
int mbedtls_ssl_send_alert_message(mbedtls_ssl_context *ssl, unsigned char level, unsigned char message)
Send an alert message.
Definition: ssl_tls.c:4113
int mbedtls_ssl_get_ciphersuite_id(const char *ciphersuite_name)
Return the ID of the ciphersuite associated with the given name.
Definition: ssl_ciphersuites.c:1786
Elliptic curves over GF(p)
GLenum mode
Definition: glext.h:6857
size_t in_hslen
Definition: ssl.h:845
Diffie-Hellman-Merkle key exchange.
unsigned char renego_period[8]
Definition: ssl.h:700
unsigned char min_major_ver
Definition: ssl.h:714
void mbedtls_ssl_conf_dbg(mbedtls_ssl_config *conf, void(*f_dbg)(void *, int, const char *, int, const char *), void *p_dbg)
Set the debug callback.
Definition: ssl_tls.c:5834
int mbedtls_ssl_set_hostname(mbedtls_ssl_context *ssl, const char *hostname)
Set the hostname to check against the received server certificate. It sets the ServerName TLS extensi...
Definition: ssl_tls.c:6174
Definition: ssl.h:353
int mbedtls_ssl_cookie_write_t(void *ctx, unsigned char **p, unsigned char *end, const unsigned char *info, size_t ilen)
Callback type: generate a cookie.
Definition: ssl.h:1308
mbedtls_mpi dhm_G
Definition: ssl.h:671
Definition: x509_crt.h:52
Configuration options (set of defines)
uint32_t hs_timeout_max
Definition: ssl.h:694
void * p_ticket
Definition: ssl.h:644
void mbedtls_ssl_set_hs_ca_chain(mbedtls_ssl_context *ssl, mbedtls_x509_crt *ca_chain, mbedtls_x509_crl *ca_crl)
Set the data required to verify peer certificate for the current handshake.
Definition: ssl_tls.c:5990
mbedtls_ssl_transform * transform_out
Definition: ssl.h:807
uint32_t ticket_lifetime
Definition: ssl.h:567
size_t mbedtls_ssl_get_max_frag_len(const mbedtls_ssl_context *ssl)
Return the maximum fragment length (payload, in bytes). This is the value negotiated with peer if any...
Definition: ssl_tls.c:6476
uint32_t read_timeout
Definition: ssl.h:689
GLuint start
Definition: glext.h:6292
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:8418
unsigned char mfl_code
Definition: ssl.h:571
int mbedtls_ssl_get_timer_t(void *ctx)
Callback type: get status of timers/delays.
Definition: ssl.h:526
unsigned int cbc_record_splitting
Definition: ssl.h:742
unsigned char _pms_ecdh[MBEDTLS_ECP_MAX_BYTES]
Definition: ssl.h:365
int mbedtls_ssl_session_reset(mbedtls_ssl_context *ssl)
Reset an already initialized SSL context for re-use while retaining application-set variables,...
Definition: ssl_tls.c:5771
Definition: libretro.h:2275
void * p_psk
Definition: ssl.h:625
unsigned int anti_replay
Definition: ssl.h:739
unsigned int endpoint
Definition: ssl.h:721
size_t next_record_offset
Definition: ssl.h:837
int mbedtls_ssl_conf_max_frag_len(mbedtls_ssl_config *conf, unsigned char mfl_code)
Set the maximum fragment length to emit and/or negotiate (Default: MBEDTLS_SSL_MAX_CONTENT_LEN,...
Definition: ssl_tls.c:6294
GLenum GLsizei len
Definition: glext.h:7389
int(* f_get_cache)(void *, mbedtls_ssl_session *)
Definition: ssl.h:605
mbedtls_ssl_recv_t * f_recv
Definition: ssl.h:786
int(* f_sni)(void *, mbedtls_ssl_context *, const unsigned char *, size_t)
Definition: ssl.h:612
size_t psk_identity_len
Definition: ssl.h:678
void mbedtls_ssl_conf_dhm_min_bitlen(mbedtls_ssl_config *conf, unsigned int bitlen)
Set the minimum length for Diffie-Hellman parameters. (Client-side only.) (Default: 1024 bits....
Definition: ssl_tls.c:6144
void mbedtls_ssl_conf_sig_hashes(mbedtls_ssl_config *conf, const int *hashes)
Set the allowed hashes for signatures during the handshake. (Default: all available hashes except MD5...
Definition: ssl_tls.c:6155
GLint limit
Definition: glext.h:11233
unsigned char _pms_dhm[MBEDTLS_MPI_MAX_SIZE]
Definition: ssl.h:359
int(* f_rng)(void *, unsigned char *, size_t)
Definition: ssl.h:601
void mbedtls_ssl_conf_handshake_timeout(mbedtls_ssl_config *conf, uint32_t min, uint32_t max)
Set retransmit timeout values for the DTLS handshake. (DTLS only, no effect on TLS....
Definition: ssl_tls.c:5804
void mbedtls_ssl_conf_renegotiation_period(mbedtls_ssl_config *conf, const unsigned char period[8])
Set record counter threshold for periodic renegotiation. (Default: 2^48 - 1)
Definition: ssl_tls.c:6338
mbedtls_ssl_transform * transform_negotiate
Definition: ssl.h:809
unsigned int badmac_limit
Definition: ssl.h:705
void mbedtls_ssl_conf_ciphersuites(mbedtls_ssl_config *conf, const int *ciphersuites)
Set the list of allowed ciphersuites and the preference order. First in the list has the highest pref...
Definition: ssl_tls.c:5906
unsigned char _pms_rsa[48]
Definition: ssl.h:356
Definition: ssl.h:397
void mbedtls_ssl_conf_extended_master_secret(mbedtls_ssl_config *conf, char ems)
Enable or disable Extended Master Secret negotiation. (Default: MBEDTLS_SSL_EXTENDED_MS_ENABLED)
Definition: ssl_tls.c:6280
void mbedtls_ssl_conf_ciphersuites_for_version(mbedtls_ssl_config *conf, const int *ciphersuites, int major, int minor)
Set the list of allowed ciphersuites and the preference order for a specific version of the protocol....
Definition: ssl_tls.c:5915
mbedtls_ssl_states
Definition: ssl.h:395
void mbedtls_ssl_init(mbedtls_ssl_context *ssl)
Initialize an SSL context Just makes the context ready for mbedtls_ssl_setup() or mbedtls_ssl_free()
Definition: ssl_tls.c:5595
Definition: ssl.h:410
int ciphersuite
Definition: ssl.h:553
void mbedtls_ssl_session_free(mbedtls_ssl_session *session)
Free referenced items in an SSL session including the peer certificate and clear memory.
Definition: ssl_tls.c:7314
mbedtls_ssl_set_timer_t * f_set_timer
Definition: ssl.h:816
Definition: ssl.h:408
int(* f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t)
Definition: ssl.h:624
typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void *pData)
int out_msgtype
Definition: ssl.h:862
Definition: ssl.h:404
size_t mbedtls_ssl_get_bytes_avail(const mbedtls_ssl_context *ssl)
Return the number of data bytes available to read.
Definition: ssl_tls.c:6379
void mbedtls_ssl_conf_ca_chain(mbedtls_ssl_config *conf, mbedtls_x509_crt *ca_chain, mbedtls_x509_crl *ca_crl)
Set the data required to verify peer certificate.
Definition: ssl_tls.c:5972
int mbedtls_ssl_get_record_expansion(const mbedtls_ssl_context *ssl)
Return the (maximum) number of bytes added by the record layer: header + encryption/MAC overhead (inc...
Definition: ssl_tls.c:6441
time_t mbedtls_time_t
Definition: platform_time.h:52
void mbedtls_ssl_conf_max_version(mbedtls_ssl_config *conf, int major, int minor)
Set the maximum supported version sent from the client side and/or accepted at the server side (Defau...
Definition: ssl_tls.c:6245
void mbedtls_ssl_conf_cert_profile(mbedtls_ssl_config *conf, const mbedtls_x509_crt_profile *profile)
Set the X.509 security profile used for verification.
Definition: ssl_tls.c:5929
unsigned int cert_req_ca_list
Definition: ssl.h:757
unsigned char * out_buf
Definition: ssl.h:855
unsigned char * in_ctr
Definition: ssl.h:823
void mbedtls_ssl_conf_cert_req_ca_list(mbedtls_ssl_config *conf, char cert_req_ca_list)
Whether to send a list of acceptable CAs in CertificateRequest messages. (Default: do send)
Definition: ssl_tls.c:6265
unsigned char _pms_rsa_psk[52+MBEDTLS_PSK_MAX_LEN]
Definition: ssl.h:375
Elliptic curve Diffie-Hellman.
void * p_cookie
Definition: ssl.h:635
mbedtls_ssl_session * session_in
Definition: ssl.h:795
Definition: ssl.h:402
void * p_sni
Definition: ssl.h:613
unsigned char * in_buf
Definition: ssl.h:822
unsigned int authmode
Definition: ssl.h:723
int secure_renegotiation
Definition: ssl.h:902
int mbedtls_ssl_recv_timeout_t(void *ctx, unsigned char *buf, size_t len, uint32_t timeout)
Callback type: receive data from the network, with timeout.
Definition: ssl.h:485
size_t ticket_len
Definition: ssl.h:566
int mbedtls_ssl_conf_own_cert(mbedtls_ssl_config *conf, mbedtls_x509_crt *own_cert, mbedtls_pk_context *pk_key)
Set own certificate chain and private key.
Definition: ssl_tls.c:5965
int renego_max_records
Definition: ssl.h:699
int mbedtls_ssl_ticket_parse_t(void *p_ticket, mbedtls_ssl_session *session, unsigned char *buf, size_t len)
Callback type: parse and load session ticket.
Definition: ssl.h:1252
void mbedtls_ssl_conf_session_tickets_cb(mbedtls_ssl_config *conf, mbedtls_ssl_ticket_write_t *f_ticket_write, mbedtls_ssl_ticket_parse_t *f_ticket_parse, void *p_ticket)
Configure SSL session ticket callbacks (server only). (Default: none.)
Definition: ssl_tls.c:6354
void mbedtls_ssl_conf_dtls_cookies(mbedtls_ssl_config *conf, mbedtls_ssl_cookie_write_t *f_cookie_write, mbedtls_ssl_cookie_check_t *f_cookie_check, void *p_cookie)
Register callbacks for DTLS cookies (Server only. DTLS only.)
Definition: ssl_srv.c:75
mbedtls_ssl_recv_timeout_t * f_recv_timeout
Definition: ssl.h:787
mbedtls_x509_crl * ca_crl
Definition: ssl.h:658
int(* f_set_cache)(void *, const mbedtls_ssl_session *)
Definition: ssl.h:607
int mbedtls_ssl_cookie_check_t(void *ctx, const unsigned char *cookie, size_t clen, const unsigned char *info, size_t ilen)
Callback type: verify a cookie.
Definition: ssl.h:1325
unsigned char * in_iv
Definition: ssl.h:828
Definition: ssl.h:398
unsigned badmac_seen
Definition: ssl.h:782
int mbedtls_ssl_send_t(void *ctx, const unsigned char *buf, size_t len)
Callback type: send data on the network.
Definition: ssl.h:436
#define MBEDTLS_MPI_MAX_SIZE
Definition: bignum.h:76
#define MBEDTLS_SSL_VERIFY_DATA_MAX_LEN
Definition: ssl.h:233
void mbedtls_ssl_conf_legacy_renegotiation(mbedtls_ssl_config *conf, int allow_legacy)
Prevent or allow legacy renegotiation. (Default: MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION)
Definition: ssl_tls.c:6322
void mbedtls_ssl_conf_endpoint(mbedtls_ssl_config *conf, int endpoint)
Set the current endpoint type.
Definition: ssl_tls.c:5779
unsigned int encrypt_then_mac
Definition: ssl.h:733
uint32_t verify_result
Definition: ssl.h:562
int mbedtls_ssl_conf_alpn_protocols(mbedtls_ssl_config *conf, const char **protos)
Set the supported Application Layer Protocols.
Definition: ssl_tls.c:6214
unsigned char * ticket
Definition: ssl.h:565
int renego_records_seen
Definition: ssl.h:773
const mbedtls_ecp_group_id * curve_list
Definition: ssl.h:666
Definition: ssl.h:411
AVFormatContext * ctx
Definition: record_ffmpeg.c:247
void mbedtls_ssl_set_timer_cb(mbedtls_ssl_context *ssl, void *p_timer, mbedtls_ssl_set_timer_t *f_set_timer, mbedtls_ssl_get_timer_t *f_get_timer)
Set the timer callbacks (Mandatory for DTLS.)
Definition: ssl_tls.c:5859
void mbedtls_ssl_config_init(mbedtls_ssl_config *conf)
Initialize an SSL configuration context Just makes the context ready for mbedtls_ssl_config_defaults(...
Definition: ssl_tls.c:7416
const char * mbedtls_ssl_get_ciphersuite_name(const int ciphersuite_id)
Return the name of the ciphersuite associated with the given ID.
Definition: ssl_ciphersuites.c:1774
void mbedtls_ssl_conf_session_tickets(mbedtls_ssl_config *conf, int use_tickets)
Enable / Disable session tickets (client only). (Default: MBEDTLS_SSL_SESSION_TICKETS_ENABLED....
Definition: ssl_tls.c:6347
unsigned char * cli_id
Definition: ssl.h:894
void * p_vrfy
Definition: ssl.h:619
int nb_zero
Definition: ssl.h:847
int mbedtls_ssl_conf_dh_param_ctx(mbedtls_ssl_config *conf, mbedtls_dhm_context *dhm_ctx)
Set the Diffie-Hellman public P and G values, read from existing context (server-side only)
Definition: ssl_tls.c:6124
unsigned int mfl_code
Definition: ssl.h:730
void * p_cache
Definition: ssl.h:608
int(* f_export_keys)(void *, const unsigned char *, const unsigned char *, size_t, size_t, size_t)
Definition: ssl.h:649
void mbedtls_ssl_conf_export_keys_cb(mbedtls_ssl_config *conf, mbedtls_ssl_export_keys_t *f_export_keys, void *p_export_keys)
Configure key export callback. (Default: none.)
Definition: ssl_tls.c:6367
const char * alpn_chosen
Definition: ssl.h:887
unsigned char _pms_psk[4+2 *MBEDTLS_PSK_MAX_LEN]
Definition: ssl.h:368
mbedtls_x509_crt * peer_cert
Definition: ssl.h:560
uint32_t mbedtls_ssl_get_verify_result(const mbedtls_ssl_context *ssl)
Return the result of the certificate verification.
Definition: ssl_tls.c:6384
int(* f_ticket_write)(void *, const mbedtls_ssl_session *, unsigned char *, const unsigned char *, size_t *, uint32_t *)
Definition: ssl.h:640
mbedtls_ssl_transform * transform
Definition: ssl.h:808
GLint level
Definition: glext.h:6293
void mbedtls_ssl_conf_read_timeout(mbedtls_ssl_config *conf, uint32_t timeout)
Set the timeout period for mbedtls_ssl_read() (Default: no timeout.)
Definition: ssl_tls.c:5854
int mbedtls_ssl_close_notify(mbedtls_ssl_context *ssl)
Notify the peer that the connection is being closed.
Definition: ssl_tls.c:7177
unsigned char * psk
Definition: ssl.h:675
unsigned char min_minor_ver
Definition: ssl.h:715
Definition: ssl_internal.h:181
size_t in_msglen
Definition: ssl.h:833
Definition: ssl.h:412
signed char split_done
Definition: ssl.h:870
void * p_bio
Definition: ssl.h:790
const char * mbedtls_ssl_get_version(const mbedtls_ssl_context *ssl)
Return the current SSL version (SSLv3/TLSv1/etc)
Definition: ssl_tls.c:6403
int(* f_cookie_write)(void *, unsigned char **, unsigned char *, const unsigned char *, size_t)
Definition: ssl.h:630
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: glext.h:6233
void mbedtls_ssl_conf_rng(mbedtls_ssl_config *conf, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
Set the random number generator callback.
Definition: ssl_tls.c:5826
unsigned int transport
Definition: ssl.h:722
const char * mbedtls_ssl_get_ciphersuite(const mbedtls_ssl_context *ssl)
Return the name of the current ciphersuite.
Definition: ssl_tls.c:6395
Definition: ssl.h:406
unsigned int arc4_disabled
Definition: ssl.h:727
SSL Ciphersuites for mbed TLS.
int mbedtls_ssl_handshake(mbedtls_ssl_context *ssl)
Perform the SSL handshake.
Definition: ssl_tls.c:6548
Definition: ssl.h:413
unsigned int session_tickets
Definition: ssl.h:751
unsigned char * in_offt
Definition: ssl.h:830
GLfloat GLfloat p
Definition: glext.h:9809
int mbedtls_ssl_config_defaults(mbedtls_ssl_config *conf, int endpoint, int transport, int preset)
Load reasonnable default SSL configuration values. (You need to call mbedtls_ssl_config_init() first....
Definition: ssl_tls.c:7463
char own_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]
Definition: ssl.h:906
int major_ver
Definition: ssl.h:778
size_t out_msglen
Definition: ssl.h:863
Definition: ssl.h:400
X.509 certificate parsing and writing.
int in_msgtype
Definition: ssl.h:832
int state
Definition: ssl.h:770
unsigned char * out_ctr
Definition: ssl.h:856
mbedtls_mpi dhm_P
Definition: ssl.h:670
void mbedtls_ssl_conf_renegotiation_enforced(mbedtls_ssl_config *conf, int max_records)
Enforce renegotiation requests. (Default: enforced, max_records = 16)
Definition: ssl_tls.c:6333
unsigned char * in_hdr
Definition: ssl.h:826
void mbedtls_ssl_conf_encrypt_then_mac(mbedtls_ssl_config *conf, char etm)
Enable or disable Encrypt-then-MAC (Default: MBEDTLS_SSL_ETM_ENABLED)
Definition: ssl_tls.c:6273
mbedtls_x509_crt * ca_chain
Definition: ssl.h:657
void mbedtls_ssl_conf_psk_cb(mbedtls_ssl_config *conf, int(*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t), void *p_psk)
Set the PSK callback (server-side only).
Definition: ssl_tls.c:6098
void mbedtls_ssl_free(mbedtls_ssl_context *ssl)
Free referenced items in an SSL context and clear memory.
Definition: ssl_tls.c:7337
size_t psk_len
Definition: ssl.h:676
char peer_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]
Definition: ssl.h:907
uint64_t in_window
Definition: ssl.h:842
void mbedtls_ssl_conf_curves(mbedtls_ssl_config *conf, const mbedtls_ecp_group_id *curves)
Set the allowed curves in order of preference. (Default: all defined curves.)
Definition: ssl_tls.c:6166
uint32_t hs_timeout_min
Definition: ssl.h:692
MPI structure.
Definition: bignum.h:179
mbedtls_ssl_key_cert * key_cert
Definition: ssl.h:656
void mbedtls_ssl_conf_arc4_support(mbedtls_ssl_config *conf, char arc4)
Disable or enable support for RC4 (Default: MBEDTLS_SSL_ARC4_DISABLED)
Definition: ssl_tls.c:6287
int keep_current_message
Definition: ssl.h:849
Definition: x509_crl.h:69
unsigned char max_minor_ver
Definition: ssl.h:713
unsigned char * out_hdr
Definition: ssl.h:857
Definition: ssl.h:763
const int * mbedtls_ssl_list_ciphersuites(void)
Returns the list of ciphersuites supported by the SSL/TLS module.
Definition: ssl_ciphersuites.c:1707
const mbedtls_x509_crt_profile * cert_profile
Definition: ssl.h:655
void mbedtls_ssl_conf_renegotiation(mbedtls_ssl_config *conf, int renegotiation)
Enable / Disable renegotiation support for connection when initiated by peer (Default: MBEDTLS_SSL_RE...
Definition: ssl_tls.c:6328
unsigned int extended_ms
Definition: ssl.h:736
unsigned int allow_legacy_renegotiation
Definition: ssl.h:725
const int * sig_hashes
Definition: ssl.h:662
Definition: ssl.h:403
size_t verify_data_len
Definition: ssl.h:905
void mbedtls_ssl_set_hs_authmode(mbedtls_ssl_context *ssl, int authmode)
Set authmode for the current handshake.
Definition: ssl_tls.c:5998
size_t id_len
Definition: ssl.h:555
int mbedtls_ssl_get_session(const mbedtls_ssl_context *ssl, mbedtls_ssl_session *session)
Save session in order to resume it later (client-side only) Session data is copied to presented sessi...
Definition: ssl_tls.c:6509
uint64_t in_window_top
Definition: ssl.h:841
unsigned char master[48]
Definition: ssl.h:557
void * p_timer
Definition: ssl.h:814
int mbedtls_ssl_read(mbedtls_ssl_context *ssl, unsigned char *buf, size_t len)
Read at most 'len' application data bytes.
Definition: ssl_tls.c:6733
int mbedtls_ssl_renegotiate(mbedtls_ssl_context *ssl)
Initiate an SSL renegotiation on the running connection. Client: perform the renegotiation right now....
Definition: ssl_tls.c:6646
unsigned char max_major_ver
Definition: ssl.h:712
Public key container.
Definition: pk.h:123
void * p_rng
Definition: ssl.h:602
int mbedtls_ssl_set_hs_psk(mbedtls_ssl_context *ssl, const unsigned char *psk, size_t psk_len)
Set the Pre Shared Key (PSK) for the current handshake.
Definition: ssl_tls.c:6076
#define MBEDTLS_ECP_MAX_BYTES
Definition: ecp.h:188
int mbedtls_ssl_export_keys_t(void *p_expkey, const unsigned char *ms, const unsigned char *kb, size_t maclen, size_t keylen, size_t ivlen)
Callback type: Export key block and master secret.
Definition: ssl.h:1221
Definition: ssl_internal.h:332
mbed TLS Platform time abstraction
mbedtls_ssl_transform * transform_in
Definition: ssl.h:806
mbedtls_ssl_session * session
Definition: ssl.h:797
int mbedtls_ssl_set_session(mbedtls_ssl_context *ssl, const mbedtls_ssl_session *session)
Request resumption of session (client-side only) Session data is copied from presented session struct...
Definition: ssl_tls.c:5885
const mbedtls_ssl_config * conf
Definition: ssl.h:765
Definition: ssl_internal.h:165
unsigned char * psk_identity
Definition: ssl.h:677
uint16_t in_epoch
Definition: ssl.h:836
int mbedtls_ssl_conf_psk(mbedtls_ssl_config *conf, const unsigned char *psk, size_t psk_len, const unsigned char *psk_identity, size_t psk_identity_len)
Set the Pre Shared Key (PSK) and the expected identity name.
Definition: ssl_tls.c:6032
void(* f_dbg)(void *, int, const char *, int, const char *)
Definition: ssl.h:597
int mbedtls_ssl_conf_dh_param(mbedtls_ssl_config *conf, const char *dhm_P, const char *dhm_G)
Set the Diffie-Hellman public P and G values, read as hexadecimal strings (server-side only) (Default...
Definition: ssl_tls.c:6109
int compression
Definition: ssl.h:554
Multi-precision integer library.
Definition: ssl.h:586
void mbedtls_ssl_conf_verify(mbedtls_ssl_config *conf, int(*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy)
Set the verification callback (Optional).
Definition: ssl_tls.c:5817
Definition: ssl.h:399
X.509 certificate revocation list parsing.
void mbedtls_ssl_conf_dtls_badmac_limit(mbedtls_ssl_config *conf, unsigned limit)
Set a limit on the number of records with a bad MAC before terminating the connection....
Definition: ssl_tls.c:5797
mbedtls_ssl_get_timer_t * f_get_timer
Definition: ssl.h:817
GLuint GLuint end
Definition: glext.h:6292
int(* f_ticket_parse)(void *, mbedtls_ssl_session *, unsigned char *, size_t)
Definition: ssl.h:643
void mbedtls_ssl_config_free(mbedtls_ssl_config *conf)
Free an SSL configuration context.
Definition: ssl_tls.c:7616
char * hostname
Definition: ssl.h:882
size_t in_left
Definition: ssl.h:834
unsigned int disable_renegotiation
Definition: ssl.h:745
mbedtls_ssl_session * session_out
Definition: ssl.h:796
const int * ciphersuite_list[4]
Definition: ssl.h:594
int minor_ver
Definition: ssl.h:779
int mbedtls_ssl_setup(mbedtls_ssl_context *ssl, const mbedtls_ssl_config *conf)
Set up an SSL context for use.
Definition: ssl_tls.c:5603
void mbedtls_ssl_conf_transport(mbedtls_ssl_config *conf, int transport)
Set the transport type (TLS or DTLS). Default: TLS.
Definition: ssl_tls.c:5784
int(* f_cookie_check)(void *, const unsigned char *, size_t, const unsigned char *, size_t)
Definition: ssl.h:633
Definition: ssl_internal.h:291
void mbedtls_ssl_conf_truncated_hmac(mbedtls_ssl_config *conf, int truncate)
Activate negotiation of truncated HMAC (Default: MBEDTLS_SSL_TRUNC_HMAC_DISABLED)
Definition: ssl_tls.c:6309
unsigned short uint16_t
Definition: stdint.h:125
mbedtls_ecp_group_id
Definition: ecp.h:62
size_t out_left
Definition: ssl.h:864
unsigned __int64 uint64_t
Definition: stdint.h:136
void mbedtls_ssl_set_timer_t(void *ctx, uint32_t int_ms, uint32_t fin_ms)
Callback type: set a pair of timers/delays to watch.
Definition: ssl.h:511
void * p_dbg
Definition: ssl.h:598
unsigned int uint32_t
Definition: stdint.h:126
int trunc_hmac
Definition: ssl.h:575
unsigned char * in_msg
Definition: ssl.h:829
int client_auth
Definition: ssl.h:876
unsigned char _pms_ecdhe_psk[4+MBEDTLS_ECP_MAX_BYTES+MBEDTLS_PSK_MAX_LEN]
Definition: ssl.h:379
void mbedtls_ssl_conf_sni(mbedtls_ssl_config *conf, int(*f_sni)(void *, mbedtls_ssl_context *, const unsigned char *, size_t), void *p_sni)
Set server side ServerName TLS extension callback (optional, server-side only).
Definition: ssl_tls.c:6203
void * p_export_keys
Definition: ssl.h:651
int mbedtls_ssl_set_hs_own_cert(mbedtls_ssl_context *ssl, mbedtls_x509_crt *own_cert, mbedtls_pk_context *pk_key)
Set own certificate and key for the current handshake.
Definition: ssl_tls.c:5982
int renego_status
Definition: ssl.h:772
mbedtls_ssl_session * session_negotiate
Definition: ssl.h:798
void mbedtls_ssl_conf_cbc_record_splitting(mbedtls_ssl_config *conf, char split)
Enable / Disable 1/n-1 record splitting (Default: MBEDTLS_SSL_CBC_RECORD_SPLITTING_ENABLED)
Definition: ssl_tls.c:6316
const mbedtls_x509_crt * mbedtls_ssl_get_peer_cert(const mbedtls_ssl_context *ssl)
Return the peer certificate from the current connection.
Definition: ssl_tls.c:6499
Definition: ssl.h:548
Definition: x509_crt.h:107
Definition: ssl.h:401
int mbedtls_ssl_set_client_transport_id(mbedtls_ssl_context *ssl, const unsigned char *info, size_t ilen)
Set client's transport-level identification info. (Server only. DTLS only.)
Definition: ssl_srv.c:57
const char ** alpn_list
Definition: ssl.h:682
Definition: ssl.h:405
int mbedtls_ssl_handshake_step(mbedtls_ssl_context *ssl)
Perform a single step of the SSL handshake.
Definition: ssl_tls.c:6526
int mbedtls_ssl_write(mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len)
Try to write exactly 'len' application data bytes.
Definition: ssl_tls.c:7137
DHM context structure.
Definition: dhm.h:149