10#ifndef MBEDTLS_SSL_MISC_H
11#define MBEDTLS_SSL_MISC_H
24#if defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3)
29#if defined(MBEDTLS_MD_CAN_MD5)
33#if defined(MBEDTLS_MD_CAN_SHA1)
37#if defined(MBEDTLS_MD_CAN_SHA256)
41#if defined(MBEDTLS_MD_CAN_SHA512)
45#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) && \
46 !defined(MBEDTLS_USE_PSA_CRYPTO)
57#if defined(MBEDTLS_ECP_RESTARTABLE) && \
58 defined(MBEDTLS_SSL_CLI_C) && \
59 defined(MBEDTLS_SSL_PROTO_TLS1_2) && \
60 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
61#define MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED
64#define MBEDTLS_SSL_INITIAL_HANDSHAKE 0
65#define MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS 1
66#define MBEDTLS_SSL_RENEGOTIATION_DONE 2
67#define MBEDTLS_SSL_RENEGOTIATION_PENDING 3
70#define MBEDTLS_SSL_TLS1_3_HS_HELLO_RETRY_REQUEST (-MBEDTLS_SSL_HS_SERVER_HELLO)
75#define MBEDTLS_SSL_EXT_ID_UNRECOGNIZED 0
76#define MBEDTLS_SSL_EXT_ID_SERVERNAME 1
77#define MBEDTLS_SSL_EXT_ID_SERVERNAME_HOSTNAME 1
78#define MBEDTLS_SSL_EXT_ID_MAX_FRAGMENT_LENGTH 2
79#define MBEDTLS_SSL_EXT_ID_STATUS_REQUEST 3
80#define MBEDTLS_SSL_EXT_ID_SUPPORTED_GROUPS 4
81#define MBEDTLS_SSL_EXT_ID_SUPPORTED_ELLIPTIC_CURVES 4
82#define MBEDTLS_SSL_EXT_ID_SIG_ALG 5
83#define MBEDTLS_SSL_EXT_ID_USE_SRTP 6
84#define MBEDTLS_SSL_EXT_ID_HEARTBEAT 7
85#define MBEDTLS_SSL_EXT_ID_ALPN 8
86#define MBEDTLS_SSL_EXT_ID_SCT 9
87#define MBEDTLS_SSL_EXT_ID_CLI_CERT_TYPE 10
88#define MBEDTLS_SSL_EXT_ID_SERV_CERT_TYPE 11
89#define MBEDTLS_SSL_EXT_ID_PADDING 12
90#define MBEDTLS_SSL_EXT_ID_PRE_SHARED_KEY 13
91#define MBEDTLS_SSL_EXT_ID_EARLY_DATA 14
92#define MBEDTLS_SSL_EXT_ID_SUPPORTED_VERSIONS 15
93#define MBEDTLS_SSL_EXT_ID_COOKIE 16
94#define MBEDTLS_SSL_EXT_ID_PSK_KEY_EXCHANGE_MODES 17
95#define MBEDTLS_SSL_EXT_ID_CERT_AUTH 18
96#define MBEDTLS_SSL_EXT_ID_OID_FILTERS 19
97#define MBEDTLS_SSL_EXT_ID_POST_HANDSHAKE_AUTH 20
98#define MBEDTLS_SSL_EXT_ID_SIG_ALG_CERT 21
99#define MBEDTLS_SSL_EXT_ID_KEY_SHARE 22
100#define MBEDTLS_SSL_EXT_ID_TRUNCATED_HMAC 23
101#define MBEDTLS_SSL_EXT_ID_SUPPORTED_POINT_FORMATS 24
102#define MBEDTLS_SSL_EXT_ID_ENCRYPT_THEN_MAC 25
103#define MBEDTLS_SSL_EXT_ID_EXTENDED_MASTER_SECRET 26
104#define MBEDTLS_SSL_EXT_ID_SESSION_TICKET 27
105#define MBEDTLS_SSL_EXT_ID_RECORD_SIZE_LIMIT 28
111#define MBEDTLS_SSL_EXT_MASK(id) (1ULL << (MBEDTLS_SSL_EXT_ID_##id))
113#define MBEDTLS_SSL_EXT_MASK_NONE 0
135#define MBEDTLS_SSL_TLS1_3_EXT_MASK_UNRECOGNIZED \
136 (MBEDTLS_SSL_EXT_MASK(SUPPORTED_POINT_FORMATS) | \
137 MBEDTLS_SSL_EXT_MASK(ENCRYPT_THEN_MAC) | \
138 MBEDTLS_SSL_EXT_MASK(EXTENDED_MASTER_SECRET) | \
139 MBEDTLS_SSL_EXT_MASK(SESSION_TICKET) | \
140 MBEDTLS_SSL_EXT_MASK(TRUNCATED_HMAC) | \
141 MBEDTLS_SSL_EXT_MASK(UNRECOGNIZED))
144#define MBEDTLS_SSL_TLS1_3_ALLOWED_EXTS_OF_CH \
145 (MBEDTLS_SSL_EXT_MASK(SERVERNAME) | \
146 MBEDTLS_SSL_EXT_MASK(MAX_FRAGMENT_LENGTH) | \
147 MBEDTLS_SSL_EXT_MASK(STATUS_REQUEST) | \
148 MBEDTLS_SSL_EXT_MASK(SUPPORTED_GROUPS) | \
149 MBEDTLS_SSL_EXT_MASK(SIG_ALG) | \
150 MBEDTLS_SSL_EXT_MASK(USE_SRTP) | \
151 MBEDTLS_SSL_EXT_MASK(HEARTBEAT) | \
152 MBEDTLS_SSL_EXT_MASK(ALPN) | \
153 MBEDTLS_SSL_EXT_MASK(SCT) | \
154 MBEDTLS_SSL_EXT_MASK(CLI_CERT_TYPE) | \
155 MBEDTLS_SSL_EXT_MASK(SERV_CERT_TYPE) | \
156 MBEDTLS_SSL_EXT_MASK(PADDING) | \
157 MBEDTLS_SSL_EXT_MASK(KEY_SHARE) | \
158 MBEDTLS_SSL_EXT_MASK(PRE_SHARED_KEY) | \
159 MBEDTLS_SSL_EXT_MASK(PSK_KEY_EXCHANGE_MODES) | \
160 MBEDTLS_SSL_EXT_MASK(EARLY_DATA) | \
161 MBEDTLS_SSL_EXT_MASK(COOKIE) | \
162 MBEDTLS_SSL_EXT_MASK(SUPPORTED_VERSIONS) | \
163 MBEDTLS_SSL_EXT_MASK(CERT_AUTH) | \
164 MBEDTLS_SSL_EXT_MASK(POST_HANDSHAKE_AUTH) | \
165 MBEDTLS_SSL_EXT_MASK(SIG_ALG_CERT) | \
166 MBEDTLS_SSL_EXT_MASK(RECORD_SIZE_LIMIT) | \
167 MBEDTLS_SSL_TLS1_3_EXT_MASK_UNRECOGNIZED)
170#define MBEDTLS_SSL_TLS1_3_ALLOWED_EXTS_OF_EE \
171 (MBEDTLS_SSL_EXT_MASK(SERVERNAME) | \
172 MBEDTLS_SSL_EXT_MASK(MAX_FRAGMENT_LENGTH) | \
173 MBEDTLS_SSL_EXT_MASK(SUPPORTED_GROUPS) | \
174 MBEDTLS_SSL_EXT_MASK(USE_SRTP) | \
175 MBEDTLS_SSL_EXT_MASK(HEARTBEAT) | \
176 MBEDTLS_SSL_EXT_MASK(ALPN) | \
177 MBEDTLS_SSL_EXT_MASK(CLI_CERT_TYPE) | \
178 MBEDTLS_SSL_EXT_MASK(SERV_CERT_TYPE) | \
179 MBEDTLS_SSL_EXT_MASK(EARLY_DATA) | \
180 MBEDTLS_SSL_EXT_MASK(RECORD_SIZE_LIMIT))
183#define MBEDTLS_SSL_TLS1_3_ALLOWED_EXTS_OF_CR \
184 (MBEDTLS_SSL_EXT_MASK(STATUS_REQUEST) | \
185 MBEDTLS_SSL_EXT_MASK(SIG_ALG) | \
186 MBEDTLS_SSL_EXT_MASK(SCT) | \
187 MBEDTLS_SSL_EXT_MASK(CERT_AUTH) | \
188 MBEDTLS_SSL_EXT_MASK(OID_FILTERS) | \
189 MBEDTLS_SSL_EXT_MASK(SIG_ALG_CERT) | \
190 MBEDTLS_SSL_TLS1_3_EXT_MASK_UNRECOGNIZED)
193#define MBEDTLS_SSL_TLS1_3_ALLOWED_EXTS_OF_CT \
194 (MBEDTLS_SSL_EXT_MASK(STATUS_REQUEST) | \
195 MBEDTLS_SSL_EXT_MASK(SCT))
198#define MBEDTLS_SSL_TLS1_3_ALLOWED_EXTS_OF_SH \
199 (MBEDTLS_SSL_EXT_MASK(KEY_SHARE) | \
200 MBEDTLS_SSL_EXT_MASK(PRE_SHARED_KEY) | \
201 MBEDTLS_SSL_EXT_MASK(SUPPORTED_VERSIONS))
204#define MBEDTLS_SSL_TLS1_3_ALLOWED_EXTS_OF_HRR \
205 (MBEDTLS_SSL_EXT_MASK(KEY_SHARE) | \
206 MBEDTLS_SSL_EXT_MASK(COOKIE) | \
207 MBEDTLS_SSL_EXT_MASK(SUPPORTED_VERSIONS))
210#define MBEDTLS_SSL_TLS1_3_ALLOWED_EXTS_OF_NST \
211 (MBEDTLS_SSL_EXT_MASK(EARLY_DATA) | \
212 MBEDTLS_SSL_TLS1_3_EXT_MASK_UNRECOGNIZED)
220#define MBEDTLS_SSL_PROC_CHK(f) \
231#define MBEDTLS_SSL_PROC_CHK_NEG(f) \
248#define MBEDTLS_SSL_RETRANS_PREPARING 0
249#define MBEDTLS_SSL_RETRANS_SENDING 1
250#define MBEDTLS_SSL_RETRANS_WAITING 2
251#define MBEDTLS_SSL_RETRANS_FINISHED 3
258#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
261#if defined(MBEDTLS_SSL_HAVE_CBC) && \
262 (defined(MBEDTLS_SSL_HAVE_AES) || \
263 defined(MBEDTLS_SSL_HAVE_CAMELLIA) || \
264 defined(MBEDTLS_SSL_HAVE_ARIA))
265#define MBEDTLS_SSL_SOME_SUITES_USE_CBC
270#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
271#define MBEDTLS_SSL_SOME_SUITES_USE_STREAM
275#if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) && \
276 defined(MBEDTLS_SSL_PROTO_TLS1_2)
277#define MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC
280#if defined(MBEDTLS_SSL_SOME_SUITES_USE_STREAM) || \
281 defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC)
282#define MBEDTLS_SSL_SOME_SUITES_USE_MAC
286#if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) && \
287 defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
288#define MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM
293#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
295#if defined(MBEDTLS_MD_CAN_SHA384)
296#define MBEDTLS_SSL_MAC_ADD 48
297#elif defined(MBEDTLS_MD_CAN_SHA256)
298#define MBEDTLS_SSL_MAC_ADD 32
300#define MBEDTLS_SSL_MAC_ADD 20
304#define MBEDTLS_SSL_MAC_ADD 16
307#if defined(MBEDTLS_SSL_HAVE_CBC)
308#define MBEDTLS_SSL_PADDING_ADD 256
310#define MBEDTLS_SSL_PADDING_ADD 0
313#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
314#define MBEDTLS_SSL_MAX_CID_EXPANSION MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY
316#define MBEDTLS_SSL_MAX_CID_EXPANSION 0
319#define MBEDTLS_SSL_PAYLOAD_OVERHEAD (MBEDTLS_MAX_IV_LENGTH + \
320 MBEDTLS_SSL_MAC_ADD + \
321 MBEDTLS_SSL_PADDING_ADD + \
322 MBEDTLS_SSL_MAX_CID_EXPANSION \
325#define MBEDTLS_SSL_IN_PAYLOAD_LEN (MBEDTLS_SSL_PAYLOAD_OVERHEAD + \
326 (MBEDTLS_SSL_IN_CONTENT_LEN))
328#define MBEDTLS_SSL_OUT_PAYLOAD_LEN (MBEDTLS_SSL_PAYLOAD_OVERHEAD + \
329 (MBEDTLS_SSL_OUT_CONTENT_LEN))
332#define MBEDTLS_SSL_MAX_BUFFERED_HS 4
338#define MBEDTLS_TLS_EXT_ADV_CONTENT_LEN ( \
339 (MBEDTLS_SSL_IN_CONTENT_LEN > MBEDTLS_SSL_OUT_CONTENT_LEN) \
340 ? (MBEDTLS_SSL_OUT_CONTENT_LEN) \
341 : (MBEDTLS_SSL_IN_CONTENT_LEN) \
345#define MBEDTLS_SSL_MAX_SIG_ALG_LIST_LEN 65534
348#define MBEDTLS_SSL_MIN_SIG_ALG_LIST_LEN 2
351#define MBEDTLS_SSL_MAX_CURVE_LIST_LEN 65535
353#define MBEDTLS_RECEIVED_SIG_ALGS_SIZE 20
355#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
357#define MBEDTLS_TLS_SIG_NONE MBEDTLS_TLS1_3_SIG_NONE
359#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
360#define MBEDTLS_SSL_TLS12_SIG_AND_HASH_ALG(sig, hash) ((hash << 8) | sig)
361#define MBEDTLS_SSL_TLS12_SIG_ALG_FROM_SIG_AND_HASH_ALG(alg) (alg & 0xFF)
362#define MBEDTLS_SSL_TLS12_HASH_ALG_FROM_SIG_AND_HASH_ALG(alg) (alg >> 8)
371#if MBEDTLS_SSL_IN_CONTENT_LEN > 16384
372#error "Bad configuration - incoming record content too large."
375#if MBEDTLS_SSL_OUT_CONTENT_LEN > 16384
376#error "Bad configuration - outgoing record content too large."
379#if MBEDTLS_SSL_IN_PAYLOAD_LEN > MBEDTLS_SSL_IN_CONTENT_LEN + 2048
380#error "Bad configuration - incoming protected record payload too large."
383#if MBEDTLS_SSL_OUT_PAYLOAD_LEN > MBEDTLS_SSL_OUT_CONTENT_LEN + 2048
384#error "Bad configuration - outgoing protected record payload too large."
392#define MBEDTLS_SSL_HEADER_LEN 13
394#if !defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
395#define MBEDTLS_SSL_IN_BUFFER_LEN \
396 ((MBEDTLS_SSL_HEADER_LEN) + (MBEDTLS_SSL_IN_PAYLOAD_LEN))
398#define MBEDTLS_SSL_IN_BUFFER_LEN \
399 ((MBEDTLS_SSL_HEADER_LEN) + (MBEDTLS_SSL_IN_PAYLOAD_LEN) \
400 + (MBEDTLS_SSL_CID_IN_LEN_MAX))
403#if !defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
404#define MBEDTLS_SSL_OUT_BUFFER_LEN \
405 ((MBEDTLS_SSL_HEADER_LEN) + (MBEDTLS_SSL_OUT_PAYLOAD_LEN))
407#define MBEDTLS_SSL_OUT_BUFFER_LEN \
408 ((MBEDTLS_SSL_HEADER_LEN) + (MBEDTLS_SSL_OUT_PAYLOAD_LEN) \
409 + (MBEDTLS_SSL_CID_OUT_LEN_MAX))
412#define MBEDTLS_CLIENT_HELLO_RANDOM_LEN 32
413#define MBEDTLS_SERVER_HELLO_RANDOM_LEN 32
415#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
448#if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT)
461#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH)
464#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
465 return mbedtls_ssl_get_output_max_frag_len(ctx)
469 return mbedtls_ssl_get_output_max_frag_len(ctx)
476#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
477 return mbedtls_ssl_get_input_max_frag_len(ctx)
481 return mbedtls_ssl_get_input_max_frag_len(ctx)
492#define MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS_PRESENT (1 << 0)
493#define MBEDTLS_TLS_EXT_ECJPAKE_KKPP_OK (1 << 1)
506#if !defined(MBEDTLS_TEST_HOOKS)
507static inline int mbedtls_ssl_chk_buf_ptr(
const uint8_t *cur,
517} mbedtls_ssl_chk_buf_ptr_args;
519void mbedtls_ssl_set_chk_buf_ptr_fail_args(
521void mbedtls_ssl_reset_chk_buf_ptr_fail_args(
void);
524int mbedtls_ssl_cmp_chk_buf_ptr_fail_args(mbedtls_ssl_chk_buf_ptr_args *
args);
526static inline int mbedtls_ssl_chk_buf_ptr(
const uint8_t *cur,
529 if ((cur >
end) || (need > (
size_t) (
end - cur))) {
530 mbedtls_ssl_set_chk_buf_ptr_fail_args(cur,
end, need);
547#define MBEDTLS_SSL_CHK_BUF_PTR(cur, end, need) \
549 if (mbedtls_ssl_chk_buf_ptr((cur), (end), (need)) != 0) \
551 return MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL; \
569#define MBEDTLS_SSL_CHK_BUF_READ_PTR(cur, end, need) \
571 if (mbedtls_ssl_chk_buf_ptr((cur), (end), (need)) != 0) \
573 MBEDTLS_SSL_DEBUG_MSG(1, \
574 ("missing input data in %s", __func__)); \
575 MBEDTLS_SSL_PEND_FATAL_ALERT(MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR, \
576 MBEDTLS_ERR_SSL_DECODE_ERROR); \
577 return MBEDTLS_ERR_SSL_DECODE_ERROR; \
587 const unsigned char *
random,
size_t rlen,
588 unsigned char *dstbuf,
size_t dlen);
606#define MBEDTLS_SSL_MAX_BLOCK_LENGTH 16
607#define MBEDTLS_SSL_MAX_IV_LENGTH 16
608#define MBEDTLS_SSL_MAX_KEY_LENGTH 32
651#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
655#if defined(MBEDTLS_SSL_SRV_C)
658 uint8_t certificate_request_sent;
659#if defined(MBEDTLS_SSL_EARLY_DATA)
665#if defined(MBEDTLS_SSL_SESSION_TICKETS)
669#if defined(MBEDTLS_SSL_CLI_C)
691#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET)
695#if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
699#if defined(MBEDTLS_SSL_PROTO_DTLS)
700 unsigned char retransmit_state;
703#if !defined(MBEDTLS_DEPRECATED_REMOVED)
708#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED)
713 ssl_ecrs_ske_start_processing,
714 ssl_ecrs_cke_ecdh_calc_secret,
715 ssl_ecrs_crt_vrfy_sign,
734#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
742 uint8_t hello_retry_request_flag;
744#if defined(MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE)
754#if defined(MBEDTLS_SSL_SRV_C)
755#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED)
760#if defined(MBEDTLS_SSL_SESSION_TICKETS)
767#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
771#if !defined(MBEDTLS_DEPRECATED_REMOVED)
776#if defined(MBEDTLS_DHM_C)
780#if !defined(MBEDTLS_USE_PSA_CRYPTO) && \
781 defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED)
786#if defined(MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_ANY_ENABLED)
788 size_t xxdh_psa_bits;
790 uint8_t xxdh_psa_privkey_is_external;
792 size_t xxdh_psa_peerkey_len;
795#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
796#if defined(MBEDTLS_USE_PSA_CRYPTO)
803#if defined(MBEDTLS_SSL_CLI_C)
804 unsigned char *ecjpake_cache;
805 size_t ecjpake_cache_len;
809#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_ANY_ENABLED) || \
810 defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) || \
811 defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
815#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_PSK_ENABLED)
816#if defined(MBEDTLS_USE_PSA_CRYPTO)
818 uint8_t psk_opaque_is_internal;
826#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED)
830#if defined(MBEDTLS_X509_CRT_PARSE_C)
831 mbedtls_ssl_key_cert *key_cert;
832#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
833 mbedtls_ssl_key_cert *sni_key_cert;
839#if defined(MBEDTLS_X509_CRT_PARSE_C) && \
840 !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
867#if defined(MBEDTLS_SSL_CLI_C) && \
868 (defined(MBEDTLS_SSL_PROTO_DTLS) || \
869 defined(MBEDTLS_SSL_PROTO_TLS1_3))
870 unsigned char *cookie;
872#if !defined(MBEDTLS_SSL_PROTO_TLS1_3)
892#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_PROTO_DTLS)
893 unsigned char cookie_verify_result;
896#if defined(MBEDTLS_SSL_PROTO_DTLS)
897 unsigned int out_msg_seq;
898 unsigned int in_msg_seq;
901 mbedtls_ssl_flight_item *flight;
902 mbedtls_ssl_flight_item *cur_msg;
903 unsigned char *cur_msg_p;
904 unsigned int in_flight_start_seq;
911#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
929#if defined(MBEDTLS_MD_CAN_SHA256)
930#if defined(MBEDTLS_USE_PSA_CRYPTO)
936#if defined(MBEDTLS_MD_CAN_SHA384)
937#if defined(MBEDTLS_USE_PSA_CRYPTO)
944#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
954#if defined(MBEDTLS_SSL_CLI_C)
992#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
998#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
1002#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
1003 unsigned char certificate_request_context_len;
1004 unsigned char *certificate_request_context;
1013 } tls13_master_secrets;
1016#if defined(MBEDTLS_SSL_EARLY_DATA)
1022#if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
1028 void *user_async_ctx;
1031#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
1032 const unsigned char *sni_name;
1033 size_t sni_name_len;
1034#if defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED)
1134#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
1136#if defined(MBEDTLS_USE_PSA_CRYPTO)
1145#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
1146 int encrypt_then_mac;
1153#if defined(MBEDTLS_USE_PSA_CRYPTO)
1162#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
1169#if defined(MBEDTLS_SSL_KEEP_RANDBYTES)
1184static inline int mbedtls_ssl_transform_uses_aead(
1187#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
1188 return transform->
maclen == 0 && transform->
taglen != 0;
1215#if MBEDTLS_SSL_CID_OUT_LEN_MAX > MBEDTLS_SSL_CID_IN_LEN_MAX
1216#define MBEDTLS_SSL_CID_LEN_MAX MBEDTLS_SSL_CID_OUT_LEN_MAX
1218#define MBEDTLS_SSL_CID_LEN_MAX MBEDTLS_SSL_CID_IN_LEN_MAX
1242#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
1248#if defined(MBEDTLS_X509_CRT_PARSE_C)
1252struct mbedtls_ssl_key_cert {
1255 mbedtls_ssl_key_cert *next;
1259#if defined(MBEDTLS_SSL_PROTO_DTLS)
1263struct mbedtls_ssl_flight_item {
1267 mbedtls_ssl_flight_item *next;
1271#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
1286 const unsigned char *
end,
1291#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \
1292 defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED)
1304unsigned int mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg(
1306 unsigned int sig_alg);
1341#if defined(MBEDTLS_DEBUG_C)
1354 ssl->state, mbedtls_ssl_states_str(ssl->state),
1355 (
int)
state, mbedtls_ssl_states_str(
state)));
1356 ssl->state = (int)
state;
1361 mbedtls_ssl_handshake_set_state(ssl, ssl->state + 1);
1370#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
1460 unsigned update_hs_digest);
1469 unsigned char **buf,
size_t *buf_len);
1473 int update_checksum,
1485 size_t buf_len,
size_t msg_len);
1516 unsigned char const *msg,
1522 size_t total_hs_len);
1524#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED)
1525#if !defined(MBEDTLS_USE_PSA_CRYPTO)
1532#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_PSK_ENABLED)
1533#if defined(MBEDTLS_SSL_CLI_C) || defined(MBEDTLS_SSL_SRV_C)
1537#if defined(MBEDTLS_USE_PSA_CRYPTO)
1548 if (!mbedtls_svc_key_id_is_null(ssl->handshake->psk_opaque)) {
1549 return ssl->handshake->psk_opaque;
1552 if (!mbedtls_svc_key_id_is_null(ssl->conf->psk_opaque)) {
1553 return ssl->conf->psk_opaque;
1566 const unsigned char **psk,
size_t *psk_len)
1568 if (ssl->handshake->psk !=
NULL && ssl->handshake->psk_len > 0) {
1569 *psk = ssl->handshake->psk;
1570 *psk_len = ssl->handshake->psk_len;
1571 }
else if (ssl->conf->psk !=
NULL && ssl->conf->psk_len > 0) {
1572 *psk = ssl->conf->psk;
1573 *psk_len = ssl->conf->psk_len;
1586#if defined(MBEDTLS_PK_C)
1595#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
1602#if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
1645#if defined(MBEDTLS_DEBUG_C)
1653const char *mbedtls_ssl_get_curve_name_from_tls_id(
uint16_t tls_id);
1656#if defined(MBEDTLS_SSL_DTLS_SRTP)
1657static inline mbedtls_ssl_srtp_profile mbedtls_ssl_check_srtp_profile_value
1658 (
const uint16_t srtp_profile_value)
1660 switch (srtp_profile_value) {
1661 case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80:
1662 case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32:
1663 case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80:
1664 case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32:
1665 return srtp_profile_value;
1668 return MBEDTLS_TLS_SRTP_UNSET;
1672#if defined(MBEDTLS_X509_CRT_PARSE_C)
1675 mbedtls_ssl_key_cert *key_cert;
1677 if (ssl->handshake !=
NULL && ssl->handshake->key_cert !=
NULL) {
1678 key_cert = ssl->handshake->key_cert;
1680 key_cert = ssl->conf->key_cert;
1683 return key_cert ==
NULL ?
NULL : key_cert->key;
1688 mbedtls_ssl_key_cert *key_cert;
1690 if (ssl->handshake !=
NULL && ssl->handshake->key_cert !=
NULL) {
1691 key_cert = ssl->handshake->key_cert;
1693 key_cert = ssl->conf->key_cert;
1696 return key_cert ==
NULL ?
NULL : key_cert->cert;
1757#if !defined(MBEDTLS_SSL_PROTO_DTLS)
1761#if defined(MBEDTLS_SSL_PROTO_DTLS)
1773 return (
size_t) (ssl->out_iv - ssl->out_hdr);
1778#if defined(MBEDTLS_SSL_PROTO_DTLS)
1788#if defined(MBEDTLS_SSL_PROTO_DTLS)
1798#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
1808#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
1812 unsigned char *hash,
size_t *hashlen,
1813 unsigned char *
data,
size_t data_len,
1826 int (*f_rng)(
void *,
unsigned char *,
size_t),
1836#if defined(MBEDTLS_SSL_PROTO_DTLS)
1846#if defined(MBEDTLS_SSL_PROTO_DTLS)
1876 unsigned char alert_type,
1880#define MBEDTLS_SSL_PEND_FATAL_ALERT(type, user_return_value) \
1881 mbedtls_ssl_pend_fatal_alert(ssl, type, user_return_value)
1883#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
1889#if defined(MBEDTLS_SSL_RENEGOTIATION)
1894#if defined(MBEDTLS_SSL_PROTO_DTLS)
1897void mbedtls_ssl_flight_free(mbedtls_ssl_flight_item *flight);
1904#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
1913#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
1924#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
1935#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
1944#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_PROTO_TLS1_3)
1945static inline int mbedtls_ssl_conf_is_hybrid_tls12_tls13(
const mbedtls_ssl_config *conf)
1952#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
1973extern const uint8_t mbedtls_ssl_tls13_hello_retry_request_magic[
2019 return (ssl->conf->tls13_kex_modes & kex_mode_mask) != 0;
2024 return mbedtls_ssl_conf_tls13_is_kex_mode_enabled(ssl,
2028static inline int mbedtls_ssl_conf_tls13_is_psk_ephemeral_enabled(
mbedtls_ssl_context *ssl)
2030 return mbedtls_ssl_conf_tls13_is_kex_mode_enabled(ssl,
2036 return mbedtls_ssl_conf_tls13_is_kex_mode_enabled(ssl,
2040static inline int mbedtls_ssl_conf_tls13_is_some_ephemeral_enabled(
mbedtls_ssl_context *ssl)
2042 return mbedtls_ssl_conf_tls13_is_kex_mode_enabled(ssl,
2048 return mbedtls_ssl_conf_tls13_is_kex_mode_enabled(ssl,
2052#if defined(MBEDTLS_SSL_SRV_C) && \
2053 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED)
2067 return (ssl->handshake->tls13_kex_modes & kex_modes_mask) != 0;
2072 return mbedtls_ssl_tls13_is_kex_mode_supported(ssl,
2076static inline int mbedtls_ssl_tls13_is_psk_ephemeral_supported(
2079 return mbedtls_ssl_tls13_is_kex_mode_supported(ssl,
2085 return mbedtls_ssl_tls13_is_kex_mode_supported(ssl,
2091 return mbedtls_ssl_tls13_is_kex_mode_supported(ssl,
2097 return mbedtls_ssl_tls13_is_kex_mode_supported(ssl,
2108int mbedtls_ssl_tls13_check_received_extension(
2111 unsigned int received_extension_type,
2112 uint32_t hs_msg_allowed_extensions_mask);
2114static inline void mbedtls_ssl_tls13_set_hs_sent_ext_mask(
2117 ssl->handshake->sent_extensions |=
2124static inline int mbedtls_ssl_tls13_key_exchange_mode_check(
2127 return (ssl->handshake->key_exchange_mode & kex_mask) != 0;
2130static inline int mbedtls_ssl_tls13_key_exchange_mode_with_psk(
2133 return mbedtls_ssl_tls13_key_exchange_mode_check(ssl,
2137static inline int mbedtls_ssl_tls13_key_exchange_mode_with_ephemeral(
2140 return mbedtls_ssl_tls13_key_exchange_mode_check(ssl,
2150 unsigned char **buf,
2174int mbedtls_ssl_tls13_is_supported_versions_ext_present_in_exts(
2176 const unsigned char *buf,
const unsigned char *
end,
2177 const unsigned char **supported_versions_data,
2178 const unsigned char **supported_versions_data_end);
2186#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
2216#if defined(PSA_WANT_ALG_ECDH) || defined(PSA_WANT_ALG_FFDH)
2218int mbedtls_ssl_tls13_generate_and_write_xxdh_key_exchange(
2226#if defined(MBEDTLS_SSL_EARLY_DATA)
2228 int in_new_session_ticket,
2230 const unsigned char *
end,
2234 size_t early_data_len);
2241 MBEDTLS_SSL_EARLY_DATA_STATE_IDLE,
2247 MBEDTLS_SSL_EARLY_DATA_STATE_NO_IND_SENT,
2256 MBEDTLS_SSL_EARLY_DATA_STATE_IND_SENT,
2264 MBEDTLS_SSL_EARLY_DATA_STATE_CAN_WRITE,
2270 MBEDTLS_SSL_EARLY_DATA_STATE_ACCEPTED,
2276 MBEDTLS_SSL_EARLY_DATA_STATE_REJECTED,
2283 MBEDTLS_SSL_EARLY_DATA_STATE_SERVER_FINISHED_RECEIVED,
2285} mbedtls_ssl_early_data_state;
2290#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
2296 const unsigned char *
end,
size_t *out_len);
2302 const unsigned char *buf,
2303 const unsigned char *
end);
2327 #if defined(MBEDTLS_DEPRECATED_REMOVED) || !defined(MBEDTLS_ECP_C)
2328 return ssl->conf->group_list;
2330 if ((ssl->handshake !=
NULL) && (ssl->handshake->group_list !=
NULL)) {
2331 return ssl->handshake->group_list;
2333 return ssl->conf->group_list;
2341static inline int mbedtls_ssl_tls12_named_group_is_ecdhe(
uint16_t named_group)
2362static inline int mbedtls_ssl_tls13_named_group_is_ecdhe(
uint16_t named_group)
2371static inline int mbedtls_ssl_tls13_named_group_is_ffdh(
uint16_t named_group)
2377static inline int mbedtls_ssl_named_group_is_offered(
2380 const uint16_t *group_list = mbedtls_ssl_get_groups(ssl);
2382 if (group_list ==
NULL) {
2386 for (; *group_list != 0; group_list++) {
2387 if (*group_list == named_group) {
2395static inline int mbedtls_ssl_named_group_is_supported(
uint16_t named_group)
2397#if defined(PSA_WANT_ALG_ECDH)
2398 if (mbedtls_ssl_tls13_named_group_is_ecdhe(named_group)) {
2405#if defined(PSA_WANT_ALG_FFDH)
2406 if (mbedtls_ssl_tls13_named_group_is_ffdh(named_group)) {
2410#if !defined(PSA_WANT_ALG_ECDH) && !defined(PSA_WANT_ALG_FFDH)
2428static inline const void *mbedtls_ssl_get_sig_algs(
2431#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
2433#if !defined(MBEDTLS_DEPRECATED_REMOVED)
2434 if (ssl->handshake !=
NULL &&
2435 ssl->handshake->sig_algs_heap_allocated == 1 &&
2436 ssl->handshake->sig_algs !=
NULL) {
2437 return ssl->handshake->sig_algs;
2440 return ssl->conf->sig_algs;
2449#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
2453 const uint16_t *sig_alg = ssl->handshake->received_sig_algs;
2454 if (sig_alg ==
NULL) {
2458 for (; *sig_alg != MBEDTLS_TLS_SIG_NONE; sig_alg++) {
2459 if (*sig_alg == own_sig_alg) {
2466static inline int mbedtls_ssl_tls13_sig_alg_for_cert_verify_is_supported(
2470#if defined(MBEDTLS_PK_CAN_ECDSA_SOME)
2471#if defined(PSA_WANT_ALG_SHA_256) && defined(PSA_WANT_ECC_SECP_R1_256)
2475#if defined(PSA_WANT_ALG_SHA_384) && defined(PSA_WANT_ECC_SECP_R1_384)
2479#if defined(PSA_WANT_ALG_SHA_512) && defined(PSA_WANT_ECC_SECP_R1_521)
2485#if defined(MBEDTLS_PKCS1_V21)
2486#if defined(PSA_WANT_ALG_SHA_256)
2490#if defined(PSA_WANT_ALG_SHA_384)
2494#if defined(PSA_WANT_ALG_SHA_512)
2506static inline int mbedtls_ssl_tls13_sig_alg_is_supported(
2510#if defined(MBEDTLS_PKCS1_V15)
2511#if defined(MBEDTLS_MD_CAN_SHA256)
2515#if defined(MBEDTLS_MD_CAN_SHA384)
2519#if defined(MBEDTLS_MD_CAN_SHA512)
2525 return mbedtls_ssl_tls13_sig_alg_for_cert_verify_is_supported(
2532int mbedtls_ssl_tls13_check_sig_alg_cert_key_match(
uint16_t sig_alg,
2536#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
2540 const uint16_t *sig_alg = mbedtls_ssl_get_sig_algs(ssl);
2541 if (sig_alg ==
NULL) {
2545 for (; *sig_alg != MBEDTLS_TLS_SIG_NONE; sig_alg++) {
2546 if (*sig_alg == proposed_sig_alg) {
2553static inline int mbedtls_ssl_get_pk_type_and_md_alg_from_sig_alg(
2556 *pk_type = mbedtls_ssl_pk_alg_from_sig(sig_alg & 0xff);
2564#if defined(MBEDTLS_PKCS1_V21)
2565#if defined(MBEDTLS_MD_CAN_SHA256)
2571#if defined(MBEDTLS_MD_CAN_SHA384)
2577#if defined(MBEDTLS_MD_CAN_SHA512)
2590#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
2591static inline int mbedtls_ssl_tls12_sig_alg_is_supported(
2599#if defined(MBEDTLS_MD_CAN_MD5)
2604#if defined(MBEDTLS_MD_CAN_SHA1)
2609#if defined(MBEDTLS_MD_CAN_SHA224)
2614#if defined(MBEDTLS_MD_CAN_SHA256)
2619#if defined(MBEDTLS_MD_CAN_SHA384)
2624#if defined(MBEDTLS_MD_CAN_SHA512)
2634#if defined(MBEDTLS_RSA_C)
2639#if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED)
2652static inline int mbedtls_ssl_sig_alg_is_supported(
2657#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
2659 return mbedtls_ssl_tls12_sig_alg_is_supported(sig_alg);
2663#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
2665 return mbedtls_ssl_tls13_sig_alg_is_supported(sig_alg);
2674#if defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3)
2679#define MBEDTLS_SSL_NULL_CIPHER 0x04000000
2705#if !defined(MBEDTLS_DEPRECATED_REMOVED)
2737#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) && \
2738 defined(MBEDTLS_USE_PSA_CRYPTO)
2741 MBEDTLS_ECJPAKE_ROUND_ONE,
2742 MBEDTLS_ECJPAKE_ROUND_TWO
2743} mbedtls_ecjpake_rounds_t;
2757int mbedtls_psa_ecjpake_read_round(
2759 const unsigned char *buf,
2760 size_t len, mbedtls_ecjpake_rounds_t
round);
2775int mbedtls_psa_ecjpake_write_round(
2778 size_t len,
size_t *olen,
2779 mbedtls_ecjpake_rounds_t
round);
2796#if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM)
2798 int encrypt_then_mac,
2805#if defined(PSA_WANT_ALG_ECDH) || defined(PSA_WANT_ALG_FFDH)
2809 const unsigned char *buf,
2814static inline int mbedtls_ssl_tls13_cipher_suite_is_offered(
2817 const int *ciphersuite_list = ssl->conf->ciphersuite_list;
2820 for (
size_t i = 0; ciphersuite_list[i] != 0; i++) {
2821 if (ciphersuite_list[i] == cipher_suite) {
2845#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
2848 const unsigned char *buf,
2849 const unsigned char *
end);
2852#if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT)
2853#define MBEDTLS_SSL_RECORD_SIZE_LIMIT_EXTENSION_DATA_LENGTH (2)
2854#define MBEDTLS_SSL_RECORD_SIZE_LIMIT_MIN (64)
2858 const unsigned char *buf,
2859 const unsigned char *
end);
2864 const unsigned char *
end,
2868#if defined(MBEDTLS_SSL_ALPN)
2871 const unsigned char *buf,
2872 const unsigned char *
end);
2882#if defined(MBEDTLS_TEST_HOOKS)
2883int mbedtls_ssl_check_dtls_clihlo_cookie(
2885 const unsigned char *cli_id,
size_t cli_id_len,
2886 const unsigned char *in,
size_t in_len,
2887 unsigned char *obuf,
size_t buf_len,
size_t *olen);
2890#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED)
2905int mbedtls_ssl_tls13_write_identities_of_pre_shared_key_ext(
2907 unsigned char *buf,
unsigned char *
end,
2908 size_t *out_len,
size_t *binders_len);
2920int mbedtls_ssl_tls13_write_binders_of_pre_shared_key_ext(
2922 unsigned char *buf,
unsigned char *
end);
2925#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
2937#if defined(MBEDTLS_SSL_PROTO_TLS1_3) && \
2938 defined(MBEDTLS_SSL_SESSION_TICKETS) && \
2939 defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) && \
2940 defined(MBEDTLS_SSL_CLI_C)
2943 const char *hostname);
2946#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_EARLY_DATA) && \
2947 defined(MBEDTLS_SSL_ALPN)
2953#if defined(MBEDTLS_SSL_PROTO_TLS1_3) && defined(MBEDTLS_SSL_SESSION_TICKETS)
2955#define MBEDTLS_SSL_TLS1_3_MAX_ALLOWED_TICKET_LIFETIME (604800)
2957static inline unsigned int mbedtls_ssl_tls13_session_get_ticket_flags(
2960 return session->ticket_flags &
2961 (
flags & MBEDTLS_SSL_TLS1_3_TICKET_FLAGS_MASK);
2970static inline int mbedtls_ssl_tls13_session_ticket_has_flags(
2973 return mbedtls_ssl_tls13_session_get_ticket_flags(session,
flags) != 0;
2976static inline int mbedtls_ssl_tls13_session_ticket_allow_psk(
2979 return mbedtls_ssl_tls13_session_ticket_has_flags(
2980 session, MBEDTLS_SSL_TLS1_3_TICKET_ALLOW_PSK_RESUMPTION);
2983static inline int mbedtls_ssl_tls13_session_ticket_allow_psk_ephemeral(
2986 return mbedtls_ssl_tls13_session_ticket_has_flags(
2987 session, MBEDTLS_SSL_TLS1_3_TICKET_ALLOW_PSK_EPHEMERAL_RESUMPTION);
2990static inline unsigned int mbedtls_ssl_tls13_session_ticket_allow_early_data(
2993 return mbedtls_ssl_tls13_session_ticket_has_flags(
2994 session, MBEDTLS_SSL_TLS1_3_TICKET_ALLOW_EARLY_DATA);
2997static inline void mbedtls_ssl_tls13_session_set_ticket_flags(
3000 session->ticket_flags |= (
flags & MBEDTLS_SSL_TLS1_3_TICKET_FLAGS_MASK);
3003static inline void mbedtls_ssl_tls13_session_clear_ticket_flags(
3006 session->ticket_flags &= ~(
flags & MBEDTLS_SSL_TLS1_3_TICKET_FLAGS_MASK);
3011#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C)
3012#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_BIT 0
3013#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_BIT 1
3015#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_MASK \
3016 (1 << MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_BIT)
3017#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_MASK \
3018 (1 << MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_BIT)
3020#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
3021static inline int mbedtls_ssl_conf_get_session_tickets(
3024 return conf->session_tickets & MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_MASK ?
3030#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
3031static inline int mbedtls_ssl_conf_is_signal_new_session_tickets_enabled(
3034 return conf->session_tickets & MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_MASK ?
3041#if defined(MBEDTLS_SSL_CLI_C) && defined(MBEDTLS_SSL_PROTO_TLS1_3)
3045#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
3083#if defined(MBEDTLS_USE_PSA_CRYPTO)
3086 const unsigned char *add_data,
3087 size_t add_data_len,
3088 const unsigned char *
data,
3089 size_t data_len_secret,
3090 size_t min_data_len,
3091 size_t max_data_len,
3092 unsigned char *output);
3095 const unsigned char *add_data,
3096 size_t add_data_len,
3097 const unsigned char *
data,
3098 size_t data_len_secret,
3099 size_t min_data_len,
3100 size_t max_data_len,
3101 unsigned char *output);
uint64_t size_t
Definition stdint.h:104
uint8_t flags
Definition virtio.h:0
Functions for controlling and providing debug output from the library.
#define MBEDTLS_SSL_DEBUG_MSG(level, args)
Definition debug.h:61
This file contains SHA-1 definitions and functions.
Platform Security Architecture cryptography module.
ChitralekhaApp * app
Definition main.cpp:57
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
unsigned short int uint16_t
Definition acefiex.h:162
#define NULL
Definition actypes.h:561
#define MBEDTLS_BYTE_1(x)
Definition alignment.h:269
#define MBEDTLS_BYTE_0(x)
Definition alignment.h:268
This file contains an abstraction interface for use with the cipher primitives provided by the librar...
mbedtls_cipher_type_t
Supported {cipher type, cipher mode} pairs.
Definition cipher.h:84
Utility macros for internal use in the library.
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE
Definition crypto_sizes.h:1017
GameVersion_t version
Definition d_main.c:943
Internal part of the public "debug.h".
mbedtls_ecp_group_id
Definition ecp.h:102
@ MBEDTLS_ECP_DP_NONE
Definition ecp.h:103
Error to string translation.
#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED
Definition error.h:103
uint16_t psa_key_type_t
Encoding of a key type.
Definition crypto_types.h:78
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition crypto_types.h:134
int32_t psa_status_t
Function return status.
Definition crypto_types.h:59
#define PSA_ERROR_NOT_SUPPORTED
Definition crypto_values.h:73
#define PSA_ERROR_INVALID_SIGNATURE
Definition crypto_values.h:260
#define PSA_SUCCESS
Definition crypto_values.h:57
#define PSA_ERROR_BUFFER_TOO_SMALL
Definition crypto_values.h:98
#define PSA_ERROR_INVALID_ARGUMENT
Definition crypto_values.h:137
#define PSA_ERROR_INSUFFICIENT_MEMORY
Definition crypto_values.h:143
#define PSA_ERROR_BAD_STATE
Definition crypto_values.h:126
#define MBEDTLS_SVC_KEY_ID_INIT
Definition crypto_values.h:2438
psa_key_id_t mbedtls_svc_key_id_t
Definition crypto_types.h:292
void mbedtls_x509_crt_restart_ctx
Definition x509_crt.h:306
size_t len
Definition initial.c:23
void * data
Definition kthread.h:30
double round(double x)
Definition libm.c:95
Build-time configuration info.
MD5 message digest algorithm (hash function)
mbedtls_md_type_t
Supported message digests.
Definition md.h:47
@ MBEDTLS_MD_SHA512
Definition md.h:55
@ MBEDTLS_MD_SHA384
Definition md.h:54
@ MBEDTLS_MD_NONE
Definition md.h:48
@ MBEDTLS_MD_SHA256
Definition md.h:53
Public Key abstraction layer.
mbedtls_pk_type_t
Public key types.
Definition pk.h:73
@ MBEDTLS_PK_NONE
Definition pk.h:74
@ MBEDTLS_PK_RSASSA_PSS
Definition pk.h:80
Public Key abstraction layer: internal (i.e. library only) functions and definitions.
Internal utility functions for use of PSA Crypto.
const char const char va_list args
Definition seq_buf.h:182
This file contains SHA-224 and SHA-256 definitions and functions.
This file contains SHA-384 and SHA-512 definitions and functions.
#define MBEDTLS_SSL_TLS1_3_SIGNAL_NEW_SESSION_TICKETS_ENABLED
Definition ssl.h:361
#define MBEDTLS_SSL_CID_OUT_LEN_MAX
Definition ssl.h:455
#define MBEDTLS_SSL_IANA_TLS_GROUP_X25519
Definition ssl.h:247
#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ALL
Definition ssl.h:278
#define MBEDTLS_TLS1_3_SIG_RSA_PSS_RSAE_SHA256
Definition ssl.h:530
#define MBEDTLS_SSL_SIG_RSA
Definition ssl.h:511
#define MBEDTLS_SSL_HASH_SHA1
Definition ssl.h:504
#define MBEDTLS_SSL_CID_IN_LEN_MAX
Definition ssl.h:451
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP224R1
Definition ssl.h:239
#define MBEDTLS_TLS1_3_SIG_RSA_PSS_RSAE_SHA384
Definition ssl.h:531
mbedtls_ssl_states
Definition ssl.h:747
#define MBEDTLS_TLS1_3_SIG_ECDSA_SECP256R1_SHA256
Definition ssl.h:525
mbedtls_ssl_protocol_version
Definition ssl.h:1258
@ MBEDTLS_SSL_VERSION_TLS1_2
Definition ssl.h:1260
@ MBEDTLS_SSL_VERSION_TLS1_3
Definition ssl.h:1261
#define MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED
Definition ssl.h:70
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP521R1
Definition ssl.h:243
#define MBEDTLS_SSL_SEQUENCE_NUMBER_LEN
Definition ssl.h:730
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP384R1
Definition ssl.h:242
#define MBEDTLS_SSL_HASH_SHA224
Definition ssl.h:505
#define MBEDTLS_SSL_IANA_TLS_GROUP_BP512R1
Definition ssl.h:246
#define MBEDTLS_SSL_TLS1_3_SIGNAL_NEW_SESSION_TICKETS_DISABLED
Definition ssl.h:360
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP192K1
Definition ssl.h:236
#define MBEDTLS_SSL_SESSION_TICKETS_ENABLED
Definition ssl.h:358
#define MBEDTLS_ERR_SSL_BAD_INPUT_DATA
Definition ssl.h:51
#define MBEDTLS_SSL_HASH_SHA256
Definition ssl.h:506
#define MBEDTLS_TLS1_3_SIG_RSA_PKCS1_SHA512
Definition ssl.h:522
#define MBEDTLS_ERR_SSL_ALLOC_FAILED
Definition ssl.h:109
#define MBEDTLS_SSL_IANA_TLS_GROUP_BP256R1
Definition ssl.h:244
#define MBEDTLS_SSL_HASH_MD5
Definition ssl.h:503
#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ALL
Definition ssl.h:281
#define MBEDTLS_SSL_SESSION_TICKETS_DISABLED
Definition ssl.h:357
#define MBEDTLS_TLS1_3_SIG_ECDSA_SECP384R1_SHA384
Definition ssl.h:526
#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL
Definition ssl.h:266
#define MBEDTLS_TLS1_3_SIG_RSA_PKCS1_SHA384
Definition ssl.h:521
#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK
Definition ssl.h:263
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP192R1
Definition ssl.h:237
#define MBEDTLS_SSL_IANA_TLS_GROUP_X448
Definition ssl.h:248
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP256R1
Definition ssl.h:241
#define MBEDTLS_TLS1_3_SIG_RSA_PKCS1_SHA256
Definition ssl.h:520
#define MBEDTLS_SSL_SIG_ECDSA
Definition ssl.h:512
#define MBEDTLS_TLS1_3_SIG_RSA_PSS_RSAE_SHA512
Definition ssl.h:532
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP256K1
Definition ssl.h:240
#define MBEDTLS_TLS1_3_MD_MAX_SIZE
Definition ssl.h:726
#define MBEDTLS_SSL_IANA_TLS_GROUP_SECP224K1
Definition ssl.h:238
#define MBEDTLS_SSL_HASH_SHA384
Definition ssl.h:507
#define MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE8192
Definition ssl.h:254
#define MBEDTLS_SSL_TRANSPORT_DATAGRAM
Definition ssl.h:302
#define MBEDTLS_ERR_SSL_INVALID_MAC
Definition ssl.h:53
#define MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL
Definition ssl.h:133
#define MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE2048
Definition ssl.h:250
#define MBEDTLS_PREMASTER_SIZE
Definition ssl.h:724
#define MBEDTLS_SSL_IANA_TLS_GROUP_BP384R1
Definition ssl.h:245
#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL
Definition ssl.h:269
#define MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE
Definition ssl.h:49
#define MBEDTLS_SSL_HASH_SHA512
Definition ssl.h:508
#define MBEDTLS_ERR_SSL_INTERNAL_ERROR
Definition ssl.h:125
#define MBEDTLS_TLS1_3_SIG_ECDSA_SECP521R1_SHA512
Definition ssl.h:527
mbedtls_key_exchange_type_t
Definition ssl_ciphersuites.h:257
Internal part of the public "ssl_ciphersuites.h".
uint16_t mbedtls_ssl_read_version(const unsigned char version[2], int transport)
#define MBEDTLS_CLIENT_HELLO_RANDOM_LEN
Definition ssl_misc.h:412
void mbedtls_ssl_transform_init(mbedtls_ssl_transform *transform)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_validate_ciphersuite(const mbedtls_ssl_context *ssl, const mbedtls_ssl_ciphersuite_t *suite_info, mbedtls_ssl_protocol_version min_tls_version, mbedtls_ssl_protocol_version max_tls_version)
Validate cipher suite against config in SSL context.
void mbedtls_ssl_write_version(unsigned char version[2], int transport, mbedtls_ssl_protocol_version tls_version)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_finish_handshake_msg(mbedtls_ssl_context *ssl, size_t buf_len, size_t msg_len)
#define MBEDTLS_SSL_MAX_BUFFERED_HS
Definition ssl_misc.h:332
void mbedtls_ssl_handshake_free(mbedtls_ssl_context *ssl)
Free referenced items in an SSL handshake context and clear memory.
void mbedtls_ssl_session_reset_msg_layer(mbedtls_ssl_context *ssl, int partial)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_parse_certificate(mbedtls_ssl_context *ssl)
#define MBEDTLS_SSL_CID_LEN_MAX
Definition ssl_misc.h:1218
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_handshake_client_step(mbedtls_ssl_context *ssl)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_handle_message_type(mbedtls_ssl_context *ssl)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_read_record(mbedtls_ssl_context *ssl, unsigned update_hs_digest)
Update record layer.
void mbedtls_ssl_update_out_pointers(mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform)
void mbedtls_ssl_update_in_pointers(mbedtls_ssl_context *ssl)
#define MBEDTLS_SSL_HEADER_LEN
Definition ssl_misc.h:392
void mbedtls_ssl_set_outbound_transform(mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform)
void mbedtls_ssl_transform_free(mbedtls_ssl_transform *transform)
Free referenced items in an SSL transform context and clear memory.
#define MBEDTLS_SERVER_HELLO_RANDOM_LEN
Definition ssl_misc.h:413
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_write_handshake_msg_ext(mbedtls_ssl_context *ssl, int update_checksum, int force_flush)
mbedtls_md_type_t mbedtls_ssl_md_alg_from_hash(unsigned char hash)
void mbedtls_ssl_reset_in_pointers(mbedtls_ssl_context *ssl)
void mbedtls_ssl_handshake_wrapup(mbedtls_ssl_context *ssl)
mbedtls_ssl_mode_t mbedtls_ssl_get_mode_from_transform(const mbedtls_ssl_transform *transform)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_start_handshake_msg(mbedtls_ssl_context *ssl, unsigned char hs_type, unsigned char **buf, size_t *buf_len)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_handshake_server_step(mbedtls_ssl_context *ssl)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_decrypt_buf(mbedtls_ssl_context const *ssl, mbedtls_ssl_transform *transform, mbedtls_record *rec)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_flush_output(mbedtls_ssl_context *ssl)
uint32_t mbedtls_ssl_get_extension_id(unsigned int extension_type)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_add_hs_hdr_to_checksum(mbedtls_ssl_context *ssl, unsigned hs_type, size_t total_hs_len)
uint32_t mbedtls_ssl_get_extension_mask(unsigned int extension_type)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_write_record(mbedtls_ssl_context *ssl, int force_flush)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_write_change_cipher_spec(mbedtls_ssl_context *ssl)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_session_reset_int(mbedtls_ssl_context *ssl, int partial)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_handle_pending_alert(mbedtls_ssl_context *ssl)
void mbedtls_ssl_handshake_wrapup_free_hs_transform(mbedtls_ssl_context *ssl)
int mbedtls_ssl_get_psa_curve_info_from_tls_id(uint16_t tls_id, psa_key_type_t *type, size_t *bits)
Return PSA EC info for the specified TLS ID.
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_session_copy(mbedtls_ssl_session *dst, const mbedtls_ssl_session *src)
#define MBEDTLS_SSL_MAX_KEY_LENGTH
Definition ssl_misc.h:608
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_prepare_handshake_record(mbedtls_ssl_context *ssl)
void mbedtls_ssl_set_inbound_transform(mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform)
void mbedtls_ssl_reset_out_pointers(mbedtls_ssl_context *ssl)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_reset_checksum(mbedtls_ssl_context *ssl)
mbedtls_ecp_group_id mbedtls_ssl_get_ecp_group_id_from_tls_id(uint16_t tls_id)
Return mbedtls_ecp_group_id for the specified TLS ID.
void mbedtls_ssl_optimize_checksum(mbedtls_ssl_context *ssl, const mbedtls_ssl_ciphersuite_t *ciphersuite_info)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_fetch_input(mbedtls_ssl_context *ssl, size_t nb_want)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_update_handshake_status(mbedtls_ssl_context *ssl)
uint16_t mbedtls_ssl_get_tls_id_from_ecp_group_id(mbedtls_ecp_group_id grp_id)
Return TLS ID for the specified mbedtls_ecp_group_id.
unsigned char mbedtls_ssl_hash_from_md_alg(int md)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_check_timer(mbedtls_ssl_context *ssl)
int mbedtls_ssl_tls_prf_cb(const unsigned char *secret, size_t slen, const char *label, const unsigned char *random, size_t rlen, unsigned char *dstbuf, size_t dlen)
Definition ssl_misc.h:585
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_encrypt_buf(mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform, mbedtls_record *rec, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_send_fatal_handshake_failure(mbedtls_ssl_context *ssl)
#define MBEDTLS_SSL_MAX_IV_LENGTH
Definition ssl_misc.h:607
#define MBEDTLS_SSL_PAYLOAD_OVERHEAD
Definition ssl_misc.h:319
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_add_hs_msg_to_checksum(mbedtls_ssl_context *ssl, unsigned hs_type, unsigned char const *msg, size_t msg_len)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_write_certificate(mbedtls_ssl_context *ssl)
mbedtls_ssl_mode_t mbedtls_ssl_get_mode_from_ciphersuite(const mbedtls_ssl_ciphersuite_t *suite)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_parse_finished(mbedtls_ssl_context *ssl)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_get_handshake_transcript(mbedtls_ssl_context *ssl, const mbedtls_md_type_t md, unsigned char *dst, size_t dst_len, size_t *olen)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_write_finished(mbedtls_ssl_context *ssl)
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_parse_change_cipher_spec(mbedtls_ssl_context *ssl)
#define MBEDTLS_RECEIVED_SIG_ALGS_SIZE
Definition ssl_misc.h:353
void mbedtls_ssl_set_timer(mbedtls_ssl_context *ssl, uint32_t millisecs)
struct mbedtls_ssl_hs_buffer mbedtls_ssl_hs_buffer
Definition ssl_misc.h:1040
MBEDTLS_CHECK_RETURN_CRITICAL int mbedtls_ssl_check_curve_tls_id(const mbedtls_ssl_context *ssl, uint16_t tls_id)
mbedtls_ssl_mode_t
TLS record protection modes.
Definition ssl_misc.h:2786
@ MBEDTLS_SSL_MODE_AEAD
Definition ssl_misc.h:2790
@ MBEDTLS_SSL_MODE_STREAM
Definition ssl_misc.h:2787
@ MBEDTLS_SSL_MODE_CBC
Definition ssl_misc.h:2788
@ MBEDTLS_SSL_MODE_CBC_ETM
Definition ssl_misc.h:2789
void mbedtls_ssl_pend_fatal_alert(mbedtls_ssl_context *ssl, unsigned char alert_type, int alert_reason)
#define random()
Definition stdlib.h:68
The DHM context structure.
Definition dhm.h:101
The ECDH context structure.
Definition ecdh.h:105
Public key container.
Definition pk.h:220
Definition ssl_misc.h:1221
uint8_t type
Definition ssl_misc.h:1230
size_t data_offset
Definition ssl_misc.h:1239
size_t data_len
Definition ssl_misc.h:1240
size_t buf_len
Definition ssl_misc.h:1238
unsigned char * buf
Definition ssl_misc.h:1237
This structure is used for storing ciphersuite information.
Definition ssl_ciphersuites.h:448
Definition ssl_misc.h:645
MBEDTLS_CHECK_RETURN_CRITICAL int(* update_checksum)(mbedtls_ssl_context *, const unsigned char *, size_t)
Definition ssl_misc.h:724
MBEDTLS_CHECK_RETURN_CRITICAL int(* calc_verify)(const mbedtls_ssl_context *, unsigned char *, size_t *)
Definition ssl_misc.h:726
unsigned is_valid
Definition ssl_misc.h:852
struct mbedtls_ssl_handshake_params::@904::@907 finished_in
MBEDTLS_CHECK_RETURN_CRITICAL int(* calc_finished)(mbedtls_ssl_context *, unsigned char *, int)
Definition ssl_misc.h:728
size_t len
Definition ssl_misc.h:861
struct mbedtls_ssl_handshake_params::@903::mbedtls_ssl_hs_buffer hs[MBEDTLS_SSL_MAX_BUFFERED_HS]
uint8_t resume
Definition ssl_misc.h:648
unsigned char sig_algs_heap_allocated
Definition ssl_misc.h:705
size_t data_len
Definition ssl_misc.h:856
unsigned char * data
Definition ssl_misc.h:855
uint8_t preparation_done
Definition ssl_misc.h:967
uint8_t seen_ccs
Definition ssl_misc.h:848
size_t total_bytes_buffered
Definition ssl_misc.h:845
struct mbedtls_ssl_handshake_params::@903::@905 future_record
union mbedtls_ssl_handshake_params::@904 state_local
uint8_t cli_exts
Definition ssl_misc.h:649
mbedtls_ssl_ciphersuite_t const * ciphersuite_info
Definition ssl_misc.h:721
size_t digest_len
Definition ssl_misc.h:972
mbedtls_ssl_tls_prf_cb * tls_prf
Definition ssl_misc.h:729
const uint16_t * sig_algs
Definition ssl_misc.h:773
const uint16_t * group_list
Definition ssl_misc.h:772
unsigned is_fragmented
Definition ssl_misc.h:853
unsigned char group_list_heap_allocated
Definition ssl_misc.h:704
unsigned char randbytes[MBEDTLS_CLIENT_HELLO_RANDOM_LEN+MBEDTLS_SERVER_HELLO_RANDOM_LEN]
Definition ssl_misc.h:990
struct mbedtls_ssl_handshake_params::@903 buffering
unsigned epoch
Definition ssl_misc.h:862
struct mbedtls_ssl_handshake_params::@904::@906 finished_out
unsigned char digest[MBEDTLS_TLS1_3_MD_MAX_SIZE]
Definition ssl_misc.h:971
unsigned is_complete
Definition ssl_misc.h:854
The data structure holding the cryptographic material (key and IV) used for record protection in TLS ...
Definition ssl_misc.h:614
unsigned char server_write_key[MBEDTLS_SSL_MAX_KEY_LENGTH]
Definition ssl_misc.h:618
unsigned char client_write_key[MBEDTLS_SSL_MAX_KEY_LENGTH]
Definition ssl_misc.h:616
unsigned char server_write_iv[MBEDTLS_SSL_MAX_IV_LENGTH]
Definition ssl_misc.h:622
size_t iv_len
Definition ssl_misc.h:626
size_t key_len
Definition ssl_misc.h:624
unsigned char client_write_iv[MBEDTLS_SSL_MAX_IV_LENGTH]
Definition ssl_misc.h:620
Definition ssl_misc.h:631
Definition ssl_misc.h:637
Definition crypto_struct.h:70
Definition crypto_extra.h:1121