Lines Matching full:if

14 #if defined(MBEDTLS_SSL_TLS_C)
32 #if defined(MBEDTLS_USE_PSA_CRYPTO)
39 #if defined(MBEDTLS_X509_CRT_PARSE_C)
43 #if defined(MBEDTLS_USE_PSA_CRYPTO)
55 #if defined(MBEDTLS_TEST_HOOKS)
79 #if defined(MBEDTLS_SSL_PROTO_DTLS)
81 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
88 if (len > MBEDTLS_SSL_CID_IN_LEN_MAX) { in mbedtls_ssl_conf_cid()
92 if (ignore_other_cid != MBEDTLS_SSL_UNEXPECTED_CID_FAIL && in mbedtls_ssl_conf_cid()
107 if (ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_set_cid()
112 if (enable == MBEDTLS_SSL_CID_DISABLED) { in mbedtls_ssl_set_cid()
119 if (own_cid_len != ssl->conf->cid_len) { in mbedtls_ssl_set_cid()
141 if (ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_get_own_cid()
148 if (ssl->own_cid_len == 0 || ssl->negotiate_cid == MBEDTLS_SSL_CID_DISABLED) { in mbedtls_ssl_get_own_cid()
152 if (own_cid_len != NULL) { in mbedtls_ssl_get_own_cid()
154 if (own_cid != NULL) { in mbedtls_ssl_get_own_cid()
171 if (ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM || in mbedtls_ssl_get_peer_cid()
180 if (ssl->transform_in->in_cid_len == 0 && in mbedtls_ssl_get_peer_cid()
185 if (peer_cid_len != NULL) { in mbedtls_ssl_get_peer_cid()
187 if (peer_cid != NULL) { in mbedtls_ssl_get_peer_cid()
201 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
234 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_session_copy()
236 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) && \ in mbedtls_ssl_session_copy()
242 #if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_ALPN) && \ in mbedtls_ssl_session_copy()
247 #if defined(MBEDTLS_X509_CRT_PARSE_C) in mbedtls_ssl_session_copy()
249 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in mbedtls_ssl_session_copy()
250 if (src->peer_cert != NULL) { in mbedtls_ssl_session_copy()
254 if (dst->peer_cert == NULL) { in mbedtls_ssl_session_copy()
260 if ((ret = mbedtls_x509_crt_parse_der(dst->peer_cert, src->peer_cert->raw.p, in mbedtls_ssl_session_copy()
268 if (src->peer_cert_digest != NULL) { in mbedtls_ssl_session_copy()
271 if (dst->peer_cert_digest == NULL) { in mbedtls_ssl_session_copy()
284 #if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_ALPN) && \ in mbedtls_ssl_session_copy()
288 if (ret != 0) { in mbedtls_ssl_session_copy()
294 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_session_copy()
295 if (src->ticket != NULL) { in mbedtls_ssl_session_copy()
297 if (dst->ticket == NULL) { in mbedtls_ssl_session_copy()
304 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) && \ in mbedtls_ssl_session_copy()
306 if (src->endpoint == MBEDTLS_SSL_IS_CLIENT) { in mbedtls_ssl_session_copy()
309 if (ret != 0) { in mbedtls_ssl_session_copy()
320 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH)
325 if (resized_buffer == NULL) { in resize_buffer()
350 if (ssl->in_buf != NULL) { in handle_buffer_resizing()
355 if (downsizing ? in handle_buffer_resizing()
358 if (resize_buffer(&ssl->in_buf, in_buf_new_len, &ssl->in_buf_len) != 0) { in handle_buffer_resizing()
368 if (ssl->out_buf != NULL) { in handle_buffer_resizing()
372 if (downsizing ? in handle_buffer_resizing()
375 if (resize_buffer(&ssl->out_buf, out_buf_new_len, &ssl->out_buf_len) != 0) { in handle_buffer_resizing()
384 if (modified) { in handle_buffer_resizing()
403 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
405 #if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION)
424 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM)
433 #if defined(MBEDTLS_MD_CAN_SHA256)
444 #if defined(MBEDTLS_MD_CAN_SHA384)
463 #if defined(MBEDTLS_MD_CAN_SHA256)
467 #if defined(MBEDTLS_MD_CAN_SHA384)
480 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_tls_prf()
481 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_tls_prf()
486 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_tls_prf()
499 #if defined(MBEDTLS_X509_CRT_PARSE_C)
502 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in ssl_clear_peer_cert()
503 if (session->peer_cert != NULL) { in ssl_clear_peer_cert()
509 if (session->peer_cert_digest != NULL) { in ssl_clear_peer_cert()
617 #if defined(MBEDTLS_DEBUG_C)
715 if (extra_msg0 && extra_msg1) { in mbedtls_ssl_print_extension()
727 if (extra_msg) { in mbedtls_ssl_print_extension()
757 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) && defined(MBEDTLS_SSL_SESSION_TICKETS)
777 if ((flags & (1 << i))) { in mbedtls_ssl_print_ticket_flags()
792 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_optimize_checksum()
793 if (ciphersuite_info->mac == MBEDTLS_MD_SHA384) { in mbedtls_ssl_optimize_checksum()
797 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_optimize_checksum()
798 if (ciphersuite_info->mac != MBEDTLS_MD_SHA384) { in mbedtls_ssl_optimize_checksum()
830 if (ret != 0) { in mbedtls_ssl_add_hs_msg_to_checksum()
838 #if defined(MBEDTLS_MD_CAN_SHA256) || \ in mbedtls_ssl_reset_checksum()
840 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_reset_checksum()
848 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_reset_checksum()
849 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_reset_checksum()
851 if (status != PSA_SUCCESS) { in mbedtls_ssl_reset_checksum()
855 if (status != PSA_SUCCESS) { in mbedtls_ssl_reset_checksum()
864 if (ret != 0) { in mbedtls_ssl_reset_checksum()
868 if (ret != 0) { in mbedtls_ssl_reset_checksum()
873 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_reset_checksum()
874 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_reset_checksum()
876 if (status != PSA_SUCCESS) { in mbedtls_ssl_reset_checksum()
880 if (status != PSA_SUCCESS) { in mbedtls_ssl_reset_checksum()
888 if (ret != 0) { in mbedtls_ssl_reset_checksum()
892 if (ret != 0) { in mbedtls_ssl_reset_checksum()
903 #if defined(MBEDTLS_MD_CAN_SHA256) || \ in ssl_update_checksum_start()
905 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_update_checksum_start()
915 #if defined(MBEDTLS_MD_CAN_SHA256) in ssl_update_checksum_start()
916 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_update_checksum_start()
918 if (status != PSA_SUCCESS) { in ssl_update_checksum_start()
923 if (ret != 0) { in ssl_update_checksum_start()
928 #if defined(MBEDTLS_MD_CAN_SHA384) in ssl_update_checksum_start()
929 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_update_checksum_start()
931 if (status != PSA_SUCCESS) { in ssl_update_checksum_start()
936 if (ret != 0) { in ssl_update_checksum_start()
944 #if defined(MBEDTLS_MD_CAN_SHA256)
948 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_update_checksum_sha256()
957 #if defined(MBEDTLS_MD_CAN_SHA384)
961 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_update_checksum_sha384()
974 #if defined(MBEDTLS_MD_CAN_SHA256) in ssl_handshake_params_init()
975 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_handshake_params_init()
981 #if defined(MBEDTLS_MD_CAN_SHA384) in ssl_handshake_params_init()
982 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_handshake_params_init()
991 #if defined(MBEDTLS_DHM_C) in ssl_handshake_params_init()
994 #if !defined(MBEDTLS_USE_PSA_CRYPTO) && \ in ssl_handshake_params_init()
998 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) in ssl_handshake_params_init()
999 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_handshake_params_init()
1005 #if defined(MBEDTLS_SSL_CLI_C) in ssl_handshake_params_init()
1011 #if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) in ssl_handshake_params_init()
1015 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) in ssl_handshake_params_init()
1019 #if defined(MBEDTLS_X509_CRT_PARSE_C) && \ in ssl_handshake_params_init()
1029 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_transform_init()
1037 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC) in mbedtls_ssl_transform_init()
1038 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_transform_init()
1058 /* Clear old handshake information if present */ in ssl_handshake_init()
1059 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_handshake_init()
1060 if (ssl->transform_negotiate) { in ssl_handshake_init()
1064 if (ssl->session_negotiate) { in ssl_handshake_init()
1067 if (ssl->handshake) { in ssl_handshake_init()
1071 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_handshake_init()
1076 if (ssl->transform_negotiate == NULL) { in ssl_handshake_init()
1081 if (ssl->session_negotiate == NULL) { in ssl_handshake_init()
1085 if (ssl->handshake == NULL) { in ssl_handshake_init()
1088 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in ssl_handshake_init()
1089 /* If the buffers are too small - reallocate */ in ssl_handshake_init()
1096 if (ssl->handshake == NULL || in ssl_handshake_init()
1097 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_handshake_init()
1106 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_handshake_init()
1117 #if defined(MBEDTLS_SSL_EARLY_DATA) in ssl_handshake_init()
1118 #if defined(MBEDTLS_SSL_CLI_C) in ssl_handshake_init()
1121 #if defined(MBEDTLS_SSL_SRV_C) in ssl_handshake_init()
1131 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_handshake_init()
1137 if (ret != 0) { in ssl_handshake_init()
1142 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) && \ in ssl_handshake_init()
1149 #if defined(MBEDTLS_SSL_PROTO_DTLS) in ssl_handshake_init()
1150 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in ssl_handshake_init()
1153 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_handshake_init()
1168 #if defined(MBEDTLS_ECP_C) in ssl_handshake_init()
1169 #if !defined(MBEDTLS_DEPRECATED_REMOVED) in ssl_handshake_init()
1171 if (ssl->conf->curve_list != NULL) { in ssl_handshake_init()
1180 if (group_list == NULL) { in ssl_handshake_init()
1187 if (tls_id == 0) { in ssl_handshake_init()
1205 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED) in ssl_handshake_init()
1206 #if !defined(MBEDTLS_DEPRECATED_REMOVED) in ssl_handshake_init()
1207 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_handshake_init()
1210 if (mbedtls_ssl_conf_is_tls12_only(ssl->conf) && in ssl_handshake_init()
1222 if (mbedtls_ssl_hash_from_md_alg(*md) == MBEDTLS_SSL_HASH_NONE) { in ssl_handshake_init()
1225 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED) in ssl_handshake_init()
1229 #if defined(MBEDTLS_RSA_C) in ssl_handshake_init()
1232 if (sig_algs_len > MBEDTLS_SSL_MAX_SIG_ALG_LIST_LEN) { in ssl_handshake_init()
1237 if (sig_algs_len < MBEDTLS_SSL_MIN_SIG_ALG_LIST_LEN) { in ssl_handshake_init()
1243 if (ssl->handshake->sig_algs == NULL) { in ssl_handshake_init()
1250 if (hash == MBEDTLS_SSL_HASH_NONE) { in ssl_handshake_init()
1253 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED) in ssl_handshake_init()
1257 #if defined(MBEDTLS_RSA_C) in ssl_handshake_init()
1274 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C)
1318 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in ssl_conf_version_check()
1319 if (mbedtls_ssl_conf_is_tls13_only(conf)) { in ssl_conf_version_check()
1320 if (conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in ssl_conf_version_check()
1330 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_conf_version_check()
1331 if (mbedtls_ssl_conf_is_tls12_only(conf)) { in ssl_conf_version_check()
1337 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_PROTO_TLS1_3) in ssl_conf_version_check()
1338 if (mbedtls_ssl_conf_is_hybrid_tls12_tls13(conf)) { in ssl_conf_version_check()
1339 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in ssl_conf_version_check()
1358 if (ret != 0) { in ssl_conf_check()
1362 if (ssl->conf->f_rng == NULL) { in ssl_conf_check()
1385 if ((ret = ssl_conf_check(ssl)) != 0) { in mbedtls_ssl_setup()
1397 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in mbedtls_ssl_setup()
1401 if (ssl->in_buf == NULL) { in mbedtls_ssl_setup()
1407 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in mbedtls_ssl_setup()
1411 if (ssl->out_buf == NULL) { in mbedtls_ssl_setup()
1420 #if defined(MBEDTLS_SSL_DTLS_SRTP) in mbedtls_ssl_setup()
1424 if ((ret = ssl_handshake_init(ssl)) != 0) { in mbedtls_ssl_setup()
1436 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in mbedtls_ssl_setup()
1462 * If partial is non-zero, keep data in the input buffer and client ID.
1468 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in mbedtls_ssl_session_reset_msg_layer()
1476 #if !defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) || !defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_session_reset_msg_layer()
1497 if (!partial) { in mbedtls_ssl_session_reset_msg_layer()
1501 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_session_reset_msg_layer()
1506 /* Keep current datagram if partial == 1 */ in mbedtls_ssl_session_reset_msg_layer()
1507 if (partial == 0) { in mbedtls_ssl_session_reset_msg_layer()
1522 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) in mbedtls_ssl_session_reset_msg_layer()
1526 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_session_reset_msg_layer()
1527 if (ssl->transform) { in mbedtls_ssl_session_reset_msg_layer()
1534 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_session_reset_msg_layer()
1539 if (ssl->handshake != NULL) { in mbedtls_ssl_session_reset_msg_layer()
1540 #if defined(MBEDTLS_SSL_EARLY_DATA) in mbedtls_ssl_session_reset_msg_layer()
1564 #if defined(MBEDTLS_SSL_RENEGOTIATION) in mbedtls_ssl_session_reset_int()
1576 if (ssl->session) { in mbedtls_ssl_session_reset_int()
1582 #if defined(MBEDTLS_SSL_ALPN) in mbedtls_ssl_session_reset_int()
1586 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_session_reset_int()
1588 #if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) in mbedtls_ssl_session_reset_int()
1591 if (free_cli_id) { in mbedtls_ssl_session_reset_int()
1598 if ((ret = ssl_handshake_init(ssl)) != 0) { in mbedtls_ssl_session_reset_int()
1627 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
1639 #if defined(MBEDTLS_SSL_PROTO_DTLS)
1660 #if defined(MBEDTLS_X509_CRT_PARSE_C)
1698 #if defined(MBEDTLS_SSL_PROTO_DTLS)
1723 #if defined(MBEDTLS_SSL_SRV_C)
1735 #if defined(MBEDTLS_SSL_CLI_C)
1740 if (ssl == NULL || in mbedtls_ssl_set_session()
1747 if (ssl->handshake->resume == 1) { in mbedtls_ssl_set_session()
1751 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_set_session()
1752 if (session->tls_version == MBEDTLS_SSL_VERSION_TLS1_3) { in mbedtls_ssl_set_session()
1753 #if defined(MBEDTLS_SSL_SESSION_TICKETS) in mbedtls_ssl_set_session()
1757 if (mbedtls_ssl_validate_ciphersuite( in mbedtls_ssl_set_session()
1766 * If session tickets are not enabled, it is not possible to resume a in mbedtls_ssl_set_session()
1775 if ((ret = mbedtls_ssl_session_copy(ssl->session_negotiate, in mbedtls_ssl_set_session()
1792 #if defined(MBEDTLS_SSL_PROTO_TLS1_3)
1799 #if defined(MBEDTLS_SSL_EARLY_DATA)
1806 #if defined(MBEDTLS_SSL_SRV_C)
1817 #if defined(MBEDTLS_X509_CRT_PARSE_C)
1843 if (cert == NULL) { in ssl_append_key_cert()
1844 /* Free list if cert is null */ in ssl_append_key_cert()
1851 if (new_cert == NULL) { in ssl_append_key_cert()
1859 /* Update head if the list was null, else add to the end */ in ssl_append_key_cert()
1860 if (*head == NULL) { in ssl_append_key_cert()
1887 #if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) in mbedtls_ssl_conf_ca_chain()
1895 #if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK)
1911 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
1935 #if defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED)
1950 #if defined(MBEDTLS_X509_CRT_PARSE_C)
1960 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
1962 #if defined(MBEDTLS_USE_PSA_CRYPTO)
1984 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_ecjpake_password_common()
1988 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_set_hs_ecjpake_password_common()
2001 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_ecjpake_password_common()
2006 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_ecjpake_password_common()
2011 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_ecjpake_password_common()
2027 if (ssl->handshake == NULL || ssl->conf == NULL) { in mbedtls_ssl_set_hs_ecjpake_password()
2032 if ((pw == NULL) || (pw_len == 0)) { in mbedtls_ssl_set_hs_ecjpake_password()
2042 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_ecjpake_password()
2048 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_ecjpake_password()
2062 if (ssl->handshake == NULL || ssl->conf == NULL) { in mbedtls_ssl_set_hs_ecjpake_password_opaque()
2066 if (mbedtls_svc_key_id_is_null(pwd)) { in mbedtls_ssl_set_hs_ecjpake_password_opaque()
2071 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_ecjpake_password_opaque()
2085 if (ssl->handshake == NULL || ssl->conf == NULL) { in mbedtls_ssl_set_hs_ecjpake_password()
2090 if ((pw == NULL) || (pw_len == 0)) { in mbedtls_ssl_set_hs_ecjpake_password()
2094 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_set_hs_ecjpake_password()
2109 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_PSK_ENABLED)
2112 if (conf->psk_identity == NULL || in mbedtls_ssl_conf_has_static_psk()
2117 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_conf_has_static_psk()
2118 if (!mbedtls_svc_key_id_is_null(conf->psk_opaque)) { in mbedtls_ssl_conf_has_static_psk()
2123 if (conf->psk != NULL && conf->psk_len != 0) { in mbedtls_ssl_conf_has_static_psk()
2132 /* Remove reference to existing PSK, if any. */ in ssl_conf_remove_psk()
2133 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_conf_remove_psk()
2134 if (!mbedtls_svc_key_id_is_null(conf->psk_opaque)) { in ssl_conf_remove_psk()
2140 if (conf->psk != NULL) { in ssl_conf_remove_psk()
2146 /* Remove reference to PSK identity, if any. */ in ssl_conf_remove_psk()
2147 if (conf->psk_identity != NULL) { in ssl_conf_remove_psk()
2164 if (psk_identity == NULL || in ssl_conf_set_psk_identity()
2172 if (conf->psk_identity == NULL) { in ssl_conf_set_psk_identity()
2189 if (mbedtls_ssl_conf_has_static_psk(conf)) { in mbedtls_ssl_conf_psk()
2194 if (psk == NULL) { in mbedtls_ssl_conf_psk()
2197 if (psk_len == 0) { in mbedtls_ssl_conf_psk()
2200 if (psk_len > MBEDTLS_PSK_MAX_LEN) { in mbedtls_ssl_conf_psk()
2204 if ((conf->psk = mbedtls_calloc(1, psk_len)) == NULL) { in mbedtls_ssl_conf_psk()
2212 if (ret != 0) { in mbedtls_ssl_conf_psk()
2221 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_remove_psk()
2222 if (!mbedtls_svc_key_id_is_null(ssl->handshake->psk_opaque)) { in ssl_remove_psk()
2225 if (ssl->handshake->psk_opaque_is_internal) { in ssl_remove_psk()
2232 if (ssl->handshake->psk != NULL) { in ssl_remove_psk()
2244 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_set_hs_psk()
2251 if (psk == NULL || ssl->handshake == NULL) { in mbedtls_ssl_set_hs_psk()
2255 if (psk_len > MBEDTLS_PSK_MAX_LEN) { in mbedtls_ssl_set_hs_psk()
2261 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_set_hs_psk()
2262 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_set_hs_psk()
2263 if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_2) { in mbedtls_ssl_set_hs_psk()
2264 if (ssl->handshake->ciphersuite_info->mac == MBEDTLS_MD_SHA384) { in mbedtls_ssl_set_hs_psk()
2273 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_set_hs_psk()
2274 if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_3) { in mbedtls_ssl_set_hs_psk()
2285 if (status != PSA_SUCCESS) { in mbedtls_ssl_set_hs_psk()
2293 if ((ssl->handshake->psk = mbedtls_calloc(1, psk_len)) == NULL) { in mbedtls_ssl_set_hs_psk()
2304 #if defined(MBEDTLS_USE_PSA_CRYPTO)
2313 if (mbedtls_ssl_conf_has_static_psk(conf)) { in mbedtls_ssl_conf_psk_opaque()
2318 if (mbedtls_svc_key_id_is_null(psk)) { in mbedtls_ssl_conf_psk_opaque()
2326 if (ret != 0) { in mbedtls_ssl_conf_psk_opaque()
2336 if ((mbedtls_svc_key_id_is_null(psk)) || in mbedtls_ssl_set_hs_psk_opaque()
2347 #if defined(MBEDTLS_SSL_SRV_C)
2360 #if defined(MBEDTLS_USE_PSA_CRYPTO)
2364 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC) in mbedtls_ssl_get_base_mode()
2365 if (alg == PSA_ALG_CBC_NO_PADDING) { in mbedtls_ssl_get_base_mode()
2369 if (PSA_ALG_IS_AEAD(alg)) { in mbedtls_ssl_get_base_mode()
2380 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC) in mbedtls_ssl_get_base_mode()
2381 if (mode == MBEDTLS_MODE_CBC) { in mbedtls_ssl_get_base_mode()
2386 #if defined(MBEDTLS_GCM_C) || \ in mbedtls_ssl_get_base_mode()
2389 if (mode == MBEDTLS_MODE_GCM || in mbedtls_ssl_get_base_mode()
2404 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in mbedtls_ssl_get_actual_mode()
2405 if (encrypt_then_mac == MBEDTLS_SSL_ETM_ENABLED && in mbedtls_ssl_get_actual_mode()
2419 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_get_mode_from_transform()
2427 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in mbedtls_ssl_get_mode_from_transform()
2434 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in mbedtls_ssl_get_mode_from_ciphersuite()
2441 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_get_mode_from_ciphersuite()
2448 if (status == PSA_SUCCESS) { in mbedtls_ssl_get_mode_from_ciphersuite()
2454 if (cipher != NULL) { in mbedtls_ssl_get_mode_from_ciphersuite()
2461 #if !defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in mbedtls_ssl_get_mode_from_ciphersuite()
2467 #if defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3)
2475 #if !defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2479 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_CBC) in mbedtls_ssl_cipher_to_psa()
2486 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2493 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2500 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2507 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2514 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_CBC) in mbedtls_ssl_cipher_to_psa()
2521 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2528 #if defined(MBEDTLS_SSL_HAVE_AES) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2535 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_CBC) in mbedtls_ssl_cipher_to_psa()
2542 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2549 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2556 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2563 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2570 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_CBC) in mbedtls_ssl_cipher_to_psa()
2577 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2584 #if defined(MBEDTLS_SSL_HAVE_ARIA) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2591 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_CBC) in mbedtls_ssl_cipher_to_psa()
2598 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2605 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2612 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2619 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2626 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_CBC) in mbedtls_ssl_cipher_to_psa()
2633 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_CCM) in mbedtls_ssl_cipher_to_psa()
2640 #if defined(MBEDTLS_SSL_HAVE_CAMELLIA) && defined(MBEDTLS_SSL_HAVE_GCM) in mbedtls_ssl_cipher_to_psa()
2647 #if defined(MBEDTLS_SSL_HAVE_CHACHAPOLY) in mbedtls_ssl_cipher_to_psa()
2667 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C)
2677 if ((ret = mbedtls_mpi_read_binary(&conf->dhm_P, dhm_P, P_len)) != 0 || in mbedtls_ssl_conf_dh_param_bin()
2694 if ((ret = mbedtls_dhm_get_value(dhm_ctx, MBEDTLS_DHM_PARAM_P, in mbedtls_ssl_conf_dh_param_ctx()
2707 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C)
2718 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
2719 #if !defined(MBEDTLS_DEPRECATED_REMOVED) && defined(MBEDTLS_SSL_PROTO_TLS1_2)
2734 #if !defined(MBEDTLS_DEPRECATED_REMOVED) in mbedtls_ssl_conf_sig_algs()
2741 #if defined(MBEDTLS_ECP_C)
2742 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
2766 #if defined(MBEDTLS_ECP_C) && !defined(MBEDTLS_DEPRECATED_REMOVED) in mbedtls_ssl_conf_groups()
2772 #if defined(MBEDTLS_X509_CRT_PARSE_C)
2776 * If mbedtls_ssl_set_hostname() has never been called on `ssl`, then
2780 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
2785 * \return \c 1 if mbedtls_ssl_set_hostname() has been called on \p ssl
2796 /* Micro-optimization: don't export this function if it isn't needed outside
2798 #if !defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
2803 if (ssl->hostname == ssl_hostname_skip_cn_verification) { in mbedtls_ssl_get_hostname_pointer()
2811 if (ssl->hostname != NULL && in mbedtls_ssl_free_hostname()
2823 /* Check if new hostname is valid before in mbedtls_ssl_set_hostname()
2825 if (hostname != NULL) { in mbedtls_ssl_set_hostname()
2828 if (hostname_len > MBEDTLS_SSL_MAX_HOST_NAME_LEN) { in mbedtls_ssl_set_hostname()
2837 if (hostname == NULL) { in mbedtls_ssl_set_hostname()
2846 if (ssl->hostname == NULL) { in mbedtls_ssl_set_hostname()
2848 * Leave ssl->hostname in the same state as if the function had in mbedtls_ssl_set_hostname()
2862 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
2873 #if defined(MBEDTLS_SSL_ALPN)
2889 if ((cur_len == 0) || in mbedtls_ssl_conf_alpn_protocols()
2907 #if defined(MBEDTLS_SSL_DTLS_SRTP)
2918 if (mki_len > MBEDTLS_TLS_SRTP_MAX_MKI_LENGTH) { in mbedtls_ssl_dtls_srtp_set_mki_value()
2922 if (ssl->conf->dtls_srtp_mki_support == MBEDTLS_SSL_DTLS_SRTP_MKI_UNSUPPORTED) { in mbedtls_ssl_dtls_srtp_set_mki_value()
2942 if (mbedtls_ssl_check_srtp_profile_value(*p) != MBEDTLS_TLS_SRTP_UNSET) { in mbedtls_ssl_conf_dtls_srtp_protection_profiles()
2950 if (list_size > MBEDTLS_TLS_SRTP_MAX_PROFILE_LIST_LENGTH) { in mbedtls_ssl_conf_dtls_srtp_protection_profiles()
2966 /* do not copy the mki value if there is no chosen profile */ in mbedtls_ssl_get_dtls_srtp_negotiation_result()
2967 if (dtls_srtp_info->chosen_dtls_srtp_profile == MBEDTLS_TLS_SRTP_UNSET) { in mbedtls_ssl_get_dtls_srtp_negotiation_result()
2977 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
2989 #if defined(MBEDTLS_SSL_SRV_C)
2997 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
3004 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET)
3011 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
3014 if (mfl_code >= MBEDTLS_SSL_MAX_FRAG_LEN_INVALID || in mbedtls_ssl_conf_max_frag_len()
3030 #if defined(MBEDTLS_SSL_RENEGOTIATION)
3048 #if defined(MBEDTLS_SSL_SESSION_TICKETS)
3049 #if defined(MBEDTLS_SSL_CLI_C)
3058 #if defined(MBEDTLS_SSL_PROTO_TLS1_3)
3069 #if defined(MBEDTLS_SSL_SRV_C)
3071 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) && defined(MBEDTLS_SSL_SESSION_TICKETS)
3099 #if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
3122 if (ssl->handshake == NULL) { in mbedtls_ssl_get_async_operation_data()
3132 if (ssl->handshake != NULL) { in mbedtls_ssl_set_async_operation_data()
3143 if (ssl->session != NULL) { in mbedtls_ssl_get_verify_result()
3147 if (ssl->session_negotiate != NULL) { in mbedtls_ssl_get_verify_result()
3156 if (ssl == NULL || ssl->session == NULL) { in mbedtls_ssl_get_ciphersuite_id_from_ssl()
3165 if (ssl == NULL || ssl->session == NULL) { in mbedtls_ssl_get_ciphersuite()
3174 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_get_version()
3175 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_get_version()
3195 #if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT)
3202 if (ssl->session != NULL && in mbedtls_ssl_get_output_record_size_limit()
3210 if (ssl->session_negotiate != NULL && in mbedtls_ssl_get_output_record_size_limit()
3220 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
3226 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_get_input_max_frag_len()
3227 /* Use the configured MFL for the client if we're past SERVER_HELLO_DONE */ in mbedtls_ssl_get_input_max_frag_len()
3228 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && in mbedtls_ssl_get_input_max_frag_len()
3234 /* Check if a smaller max length was negotiated */ in mbedtls_ssl_get_input_max_frag_len()
3235 if (ssl->session_out != NULL) { in mbedtls_ssl_get_input_max_frag_len()
3237 if (read_mfl < max_len) { in mbedtls_ssl_get_input_max_frag_len()
3243 if (ssl->session_negotiate != NULL) { in mbedtls_ssl_get_input_max_frag_len()
3245 if (read_mfl < max_len) { in mbedtls_ssl_get_input_max_frag_len()
3262 /* Check if a smaller max length was negotiated */ in mbedtls_ssl_get_output_max_frag_len()
3263 if (ssl->session_out != NULL && in mbedtls_ssl_get_output_max_frag_len()
3269 if (ssl->session_negotiate != NULL && in mbedtls_ssl_get_output_max_frag_len()
3278 #if defined(MBEDTLS_SSL_PROTO_DTLS)
3282 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && in mbedtls_ssl_get_current_mtu()
3288 if (ssl->handshake == NULL || ssl->handshake->mtu == 0) { in mbedtls_ssl_get_current_mtu()
3292 if (ssl->mtu == 0) { in mbedtls_ssl_get_current_mtu()
3305 #if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ in mbedtls_ssl_get_max_out_record_payload()
3311 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) in mbedtls_ssl_get_max_out_record_payload()
3314 if (max_len > mfl) { in mbedtls_ssl_get_max_out_record_payload()
3319 #if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT) in mbedtls_ssl_get_max_out_record_payload()
3322 if (max_len > record_size_limit) { in mbedtls_ssl_get_max_out_record_payload()
3327 if (ssl->transform_out != NULL && in mbedtls_ssl_get_max_out_record_payload()
3343 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_get_max_out_record_payload()
3344 if (mbedtls_ssl_get_current_mtu(ssl) != 0) { in mbedtls_ssl_get_max_out_record_payload()
3349 if (ret < 0) { in mbedtls_ssl_get_max_out_record_payload()
3353 if (mtu <= overhead) { in mbedtls_ssl_get_max_out_record_payload()
3358 if (max_len > mtu - overhead) { in mbedtls_ssl_get_max_out_record_payload()
3364 #if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ in mbedtls_ssl_get_max_out_record_payload()
3377 #if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) in mbedtls_ssl_get_max_in_record_payload()
3381 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) in mbedtls_ssl_get_max_in_record_payload()
3384 if (max_len > mfl) { in mbedtls_ssl_get_max_in_record_payload()
3392 #if defined(MBEDTLS_X509_CRT_PARSE_C)
3395 if (ssl == NULL || ssl->session == NULL) { in mbedtls_ssl_get_peer_cert()
3399 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in mbedtls_ssl_get_peer_cert()
3407 #if defined(MBEDTLS_SSL_CLI_C)
3413 if (ssl == NULL || in mbedtls_ssl_get_session()
3429 * and fail if so. in mbedtls_ssl_get_session()
3431 if (ssl->session->exported == 1) { in mbedtls_ssl_get_session()
3436 if (ret != 0) { in mbedtls_ssl_get_session()
3446 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
3459 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls12_session_save()
3462 #if defined(MBEDTLS_X509_CRT_PARSE_C) in ssl_tls12_session_save()
3463 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in ssl_tls12_session_save()
3471 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls12_session_save()
3474 if (used <= buf_len) { in ssl_tls12_session_save()
3490 if (used <= buf_len) { in ssl_tls12_session_save()
3505 #if defined(MBEDTLS_X509_CRT_PARSE_C) in ssl_tls12_session_save()
3506 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in ssl_tls12_session_save()
3507 if (session->peer_cert == NULL) { in ssl_tls12_session_save()
3515 if (used <= buf_len) { in ssl_tls12_session_save()
3520 if (session->peer_cert != NULL) { in ssl_tls12_session_save()
3526 if (session->peer_cert_digest != NULL) { in ssl_tls12_session_save()
3528 if (used <= buf_len) { in ssl_tls12_session_save()
3537 if (used <= buf_len) { in ssl_tls12_session_save()
3546 * Session ticket if any, plus associated data in ssl_tls12_session_save()
3548 #if defined(MBEDTLS_SSL_SESSION_TICKETS) in ssl_tls12_session_save()
3549 #if defined(MBEDTLS_SSL_CLI_C) in ssl_tls12_session_save()
3550 if (session->endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_tls12_session_save()
3553 if (used <= buf_len) { in ssl_tls12_session_save()
3558 if (session->ticket != NULL) { in ssl_tls12_session_save()
3568 #if defined(MBEDTLS_HAVE_TIME) && defined(MBEDTLS_SSL_SRV_C) in ssl_tls12_session_save()
3569 if (session->endpoint == MBEDTLS_SSL_IS_SERVER) { in ssl_tls12_session_save()
3572 if (used <= buf_len) { in ssl_tls12_session_save()
3583 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) in ssl_tls12_session_save()
3586 if (used <= buf_len) { in ssl_tls12_session_save()
3591 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) in ssl_tls12_session_save()
3594 if (used <= buf_len) { in ssl_tls12_session_save()
3607 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls12_session_load()
3610 #if defined(MBEDTLS_X509_CRT_PARSE_C) in ssl_tls12_session_load()
3611 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in ssl_tls12_session_load()
3622 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls12_session_load()
3623 if (8 > (size_t) (end - p)) { in ssl_tls12_session_load()
3636 if (1 + 32 + 48 + 4 > (size_t) (end - p)) { in ssl_tls12_session_load()
3652 #if defined(MBEDTLS_X509_CRT_PARSE_C) in ssl_tls12_session_load()
3653 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in ssl_tls12_session_load()
3659 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) in ssl_tls12_session_load()
3666 #if defined(MBEDTLS_X509_CRT_PARSE_C) in ssl_tls12_session_load()
3667 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in ssl_tls12_session_load()
3669 if (3 > (size_t) (end - p)) { in ssl_tls12_session_load()
3676 if (cert_len != 0) { in ssl_tls12_session_load()
3679 if (cert_len > (size_t) (end - p)) { in ssl_tls12_session_load()
3685 if (session->peer_cert == NULL) { in ssl_tls12_session_load()
3691 if ((ret = mbedtls_x509_crt_parse_der(session->peer_cert, in ssl_tls12_session_load()
3703 if (2 > (size_t) (end - p)) { in ssl_tls12_session_load()
3710 if (session->peer_cert_digest_len != 0) { in ssl_tls12_session_load()
3713 if (md_info == NULL) { in ssl_tls12_session_load()
3716 if (session->peer_cert_digest_len != mbedtls_md_get_size(md_info)) { in ssl_tls12_session_load()
3720 if (session->peer_cert_digest_len > (size_t) (end - p)) { in ssl_tls12_session_load()
3726 if (session->peer_cert_digest == NULL) { in ssl_tls12_session_load()
3740 #if defined(MBEDTLS_SSL_SESSION_TICKETS) in ssl_tls12_session_load()
3741 #if defined(MBEDTLS_SSL_CLI_C) in ssl_tls12_session_load()
3742 if (session->endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_tls12_session_load()
3743 if (3 > (size_t) (end - p)) { in ssl_tls12_session_load()
3750 if (session->ticket_len != 0) { in ssl_tls12_session_load()
3751 if (session->ticket_len > (size_t) (end - p)) { in ssl_tls12_session_load()
3756 if (session->ticket == NULL) { in ssl_tls12_session_load()
3764 if (4 > (size_t) (end - p)) { in ssl_tls12_session_load()
3772 #if defined(MBEDTLS_HAVE_TIME) && defined(MBEDTLS_SSL_SRV_C) in ssl_tls12_session_load()
3773 if (session->endpoint == MBEDTLS_SSL_IS_SERVER) { in ssl_tls12_session_load()
3774 if (8 > (size_t) (end - p)) { in ssl_tls12_session_load()
3786 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) in ssl_tls12_session_load()
3787 if (1 > (size_t) (end - p)) { in ssl_tls12_session_load()
3794 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) in ssl_tls12_session_load()
3795 if (1 > (size_t) (end - p)) { in ssl_tls12_session_load()
3803 if (p != end) { in ssl_tls12_session_load()
3812 #if defined(MBEDTLS_SSL_PROTO_TLS1_3)
3817 #if defined(MBEDTLS_SSL_SESSION_TICKETS)
3825 #if defined(MBEDTLS_SSL_CLI_C) && \ in ssl_tls13_session_save()
3831 #if defined(MBEDTLS_SSL_SRV_C) && \ in ssl_tls13_session_save()
3842 if (session->resumption_key_len > MBEDTLS_SSL_TLS1_3_TICKET_RESUMPTION_KEY_LEN) { in ssl_tls13_session_save()
3847 #if defined(MBEDTLS_SSL_EARLY_DATA) in ssl_tls13_session_save()
3850 #if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT) in ssl_tls13_session_save()
3854 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls13_session_save()
3858 #if defined(MBEDTLS_SSL_SRV_C) in ssl_tls13_session_save()
3859 if (session->endpoint == MBEDTLS_SSL_IS_SERVER) { in ssl_tls13_session_save()
3860 #if defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_ALPN) in ssl_tls13_session_save()
3867 #if defined(MBEDTLS_SSL_CLI_C) in ssl_tls13_session_save()
3868 if (session->endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_tls13_session_save()
3869 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) in ssl_tls13_session_save()
3878 if (session->ticket_len > SIZE_MAX - needed) { in ssl_tls13_session_save()
3887 if (needed > buf_len) { in ssl_tls13_session_save()
3900 #if defined(MBEDTLS_SSL_EARLY_DATA) in ssl_tls13_session_save()
3904 #if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT) in ssl_tls13_session_save()
3909 #if defined(MBEDTLS_SSL_SRV_C) in ssl_tls13_session_save()
3910 if (session->endpoint == MBEDTLS_SSL_IS_SERVER) { in ssl_tls13_session_save()
3911 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls13_session_save()
3916 #if defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_ALPN) in ssl_tls13_session_save()
3920 if (alpn_len > 0) { in ssl_tls13_session_save()
3929 #if defined(MBEDTLS_SSL_CLI_C) in ssl_tls13_session_save()
3930 if (session->endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_tls13_session_save()
3931 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) in ssl_tls13_session_save()
3934 if (hostname_len > 0) { in ssl_tls13_session_save()
3941 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls13_session_save()
3951 if (session->ticket != NULL && session->ticket_len > 0) { in ssl_tls13_session_save()
3968 if (end - p < 6) { in ssl_tls13_session_load()
3978 if (end - p < session->resumption_key_len) { in ssl_tls13_session_load()
3982 if (sizeof(session->resumption_key) < session->resumption_key_len) { in ssl_tls13_session_load()
3988 #if defined(MBEDTLS_SSL_EARLY_DATA) in ssl_tls13_session_load()
3989 if (end - p < 4) { in ssl_tls13_session_load()
3995 #if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT) in ssl_tls13_session_load()
3996 if (end - p < 2) { in ssl_tls13_session_load()
4003 #if defined(MBEDTLS_SSL_SRV_C) in ssl_tls13_session_load()
4004 if (session->endpoint == MBEDTLS_SSL_IS_SERVER) { in ssl_tls13_session_load()
4005 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls13_session_load()
4006 if (end - p < 8) { in ssl_tls13_session_load()
4013 #if defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_ALPN) in ssl_tls13_session_load()
4016 if (end - p < 2) { in ssl_tls13_session_load()
4023 if (end - p < (long int) alpn_len) { in ssl_tls13_session_load()
4027 if (alpn_len > 0) { in ssl_tls13_session_load()
4029 if (ret != 0) { in ssl_tls13_session_load()
4038 #if defined(MBEDTLS_SSL_CLI_C) in ssl_tls13_session_load()
4039 if (session->endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_tls13_session_load()
4040 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) in ssl_tls13_session_load()
4043 if (end - p < 2) { in ssl_tls13_session_load()
4049 if (end - p < (long int) hostname_len) { in ssl_tls13_session_load()
4052 if (hostname_len > 0) { in ssl_tls13_session_load()
4054 if (session->hostname == NULL) { in ssl_tls13_session_load()
4062 #if defined(MBEDTLS_HAVE_TIME) in ssl_tls13_session_load()
4063 if (end - p < 8) { in ssl_tls13_session_load()
4069 if (end - p < 4) { in ssl_tls13_session_load()
4075 if (end - p < 2) { in ssl_tls13_session_load()
4081 if (end - p < (long int) session->ticket_len) { in ssl_tls13_session_load()
4084 if (session->ticket_len > 0) { in ssl_tls13_session_load()
4086 if (session->ticket == NULL) { in ssl_tls13_session_load()
4134 #if defined(MBEDTLS_HAVE_TIME)
4140 #if defined(MBEDTLS_X509_CRT_PARSE_C)
4146 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
4152 #if defined(MBEDTLS_SSL_CLI_C) && defined(MBEDTLS_SSL_SESSION_TICKETS)
4158 #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
4164 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
4170 #if defined(MBEDTLS_SSL_SESSION_TICKETS)
4176 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
4182 #if defined(MBEDTLS_SSL_EARLY_DATA)
4188 #if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT)
4194 #if defined(MBEDTLS_SSL_ALPN) && defined(MBEDTLS_SSL_SRV_C) && \
4247 * #if defined(MBEDTLS_SSL_SESSION_TICKETS)
4254 * #if defined(MBEDTLS_HAVE_TIME)
4261 * #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
4271 * #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
4274 * #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
4283 * #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
4286 * #if defined(MBEDTLS_HAVE_TIME)
4297 * #if defined(MBEDTLS_SSL_EARLY_DATA)
4300 * #if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT)
4306 * #if defined(MBEDTLS_HAVE_TIME)
4309 * #if defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_ALPN)
4362 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in ssl_session_save()
4366 if (session == NULL) { in ssl_session_save()
4370 if (!omit_header) { in ssl_session_save()
4376 if (used <= buf_len) { in ssl_session_save()
4389 if (used <= buf_len) { in ssl_session_save()
4399 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_session_save()
4405 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in ssl_session_save()
4408 if (ret != 0 && ret != MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL) { in ssl_session_save()
4420 if (used > buf_len) { in ssl_session_save()
4455 if (session == NULL) { in ssl_session_load()
4459 if (!omit_header) { in ssl_session_load()
4464 if ((size_t) (end - p) < sizeof(ssl_serialized_session_header)) { in ssl_session_load()
4468 if (memcmp(p, ssl_serialized_session_header, in ssl_session_load()
4478 if (4 > (size_t) (end - p)) { in ssl_session_load()
4489 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_session_load()
4494 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in ssl_session_load()
4513 if (ret != 0) { in mbedtls_ssl_session_load()
4531 * if the write to the network callback returned with the in ssl_prepare_handshake_step()
4543 if ((ret = mbedtls_ssl_flush_output(ssl)) != 0) { in ssl_prepare_handshake_step()
4547 #if defined(MBEDTLS_SSL_PROTO_DTLS) in ssl_prepare_handshake_step()
4548 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && in ssl_prepare_handshake_step()
4550 if ((ret = mbedtls_ssl_flight_transmit(ssl)) != 0) { in ssl_prepare_handshake_step()
4563 if (ssl == NULL || in mbedtls_ssl_handshake_step()
4571 if (ret != 0) { in mbedtls_ssl_handshake_step()
4576 if (ret != 0) { in mbedtls_ssl_handshake_step()
4580 /* If ssl->conf->endpoint is not one of MBEDTLS_SSL_IS_CLIENT or in mbedtls_ssl_handshake_step()
4584 #if defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_handshake_step()
4585 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT) { in mbedtls_ssl_handshake_step()
4600 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_handshake_step()
4601 if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_3) { in mbedtls_ssl_handshake_step()
4615 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_handshake_step()
4616 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_handshake_step()
4617 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_handshake_step()
4618 if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_3) { in mbedtls_ssl_handshake_step()
4631 if (ret != 0) { in mbedtls_ssl_handshake_step()
4635 if (ssl->send_alert) { in mbedtls_ssl_handshake_step()
4654 if (ssl == NULL || ssl->conf == NULL) { in mbedtls_ssl_handshake()
4658 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_handshake()
4659 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && in mbedtls_ssl_handshake()
4673 if (ret != 0) { in mbedtls_ssl_handshake()
4683 #if defined(MBEDTLS_SSL_RENEGOTIATION)
4684 #if defined(MBEDTLS_SSL_SRV_C)
4699 if ((ret = mbedtls_ssl_write_handshake_msg(ssl)) != 0) { in ssl_write_hello_request()
4716 * If the handshake doesn't complete due to waiting for I/O, it will continue
4725 if ((ret = ssl_handshake_init(ssl)) != 0) { in mbedtls_ssl_start_renegotiation()
4731 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_start_renegotiation()
4732 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && in mbedtls_ssl_start_renegotiation()
4734 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_start_renegotiation()
4745 if ((ret = mbedtls_ssl_handshake(ssl)) != 0) { in mbedtls_ssl_start_renegotiation()
4763 if (ssl == NULL || ssl->conf == NULL) { in mbedtls_ssl_renegotiate()
4767 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_renegotiate()
4769 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_renegotiate()
4770 if (mbedtls_ssl_is_handshake_over(ssl) == 0) { in mbedtls_ssl_renegotiate()
4777 if (ssl->out_left != 0) { in mbedtls_ssl_renegotiate()
4785 #if defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_renegotiate()
4788 * if already in progress, continue the handshake in mbedtls_ssl_renegotiate()
4790 if (ssl->renego_status != MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS) { in mbedtls_ssl_renegotiate()
4791 if (mbedtls_ssl_is_handshake_over(ssl) == 0) { in mbedtls_ssl_renegotiate()
4795 if ((ret = mbedtls_ssl_start_renegotiation(ssl)) != 0) { in mbedtls_ssl_renegotiate()
4800 if ((ret = mbedtls_ssl_handshake(ssl)) != 0) { in mbedtls_ssl_renegotiate()
4815 if (handshake == NULL) { in mbedtls_ssl_handshake_free()
4819 #if defined(MBEDTLS_PK_HAVE_ECC_KEYS) in mbedtls_ssl_handshake_free()
4820 #if !defined(MBEDTLS_DEPRECATED_REMOVED) in mbedtls_ssl_handshake_free()
4821 if (ssl->handshake->group_list_heap_allocated) { in mbedtls_ssl_handshake_free()
4828 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED) in mbedtls_ssl_handshake_free()
4829 #if !defined(MBEDTLS_DEPRECATED_REMOVED) in mbedtls_ssl_handshake_free()
4830 if (ssl->handshake->sig_algs_heap_allocated) { in mbedtls_ssl_handshake_free()
4835 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_handshake_free()
4836 if (ssl->handshake->certificate_request_context) { in mbedtls_ssl_handshake_free()
4842 #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) in mbedtls_ssl_handshake_free()
4843 if (ssl->conf->f_async_cancel != NULL && handshake->async_in_progress != 0) { in mbedtls_ssl_handshake_free()
4849 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_handshake_free()
4850 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_handshake_free()
4856 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_handshake_free()
4857 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_handshake_free()
4864 #if defined(MBEDTLS_DHM_C) in mbedtls_ssl_handshake_free()
4867 #if !defined(MBEDTLS_USE_PSA_CRYPTO) && \ in mbedtls_ssl_handshake_free()
4872 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) in mbedtls_ssl_handshake_free()
4873 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_handshake_free()
4880 if (!mbedtls_svc_key_id_is_null(handshake->psa_pake_password)) { in mbedtls_ssl_handshake_free()
4887 #if defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_handshake_free()
4894 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_ANY_ENABLED) || \ in mbedtls_ssl_handshake_free()
4901 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_PSK_ENABLED) in mbedtls_ssl_handshake_free()
4902 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_handshake_free()
4903 if (!mbedtls_svc_key_id_is_null(ssl->handshake->psk_opaque)) { in mbedtls_ssl_handshake_free()
4906 if (ssl->handshake->psk_opaque_is_internal) { in mbedtls_ssl_handshake_free()
4913 if (handshake->psk != NULL) { in mbedtls_ssl_handshake_free()
4919 #if defined(MBEDTLS_X509_CRT_PARSE_C) && \ in mbedtls_ssl_handshake_free()
4928 #if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) in mbedtls_ssl_handshake_free()
4930 if (handshake->ecrs_peer_cert != NULL) { in mbedtls_ssl_handshake_free()
4936 #if defined(MBEDTLS_X509_CRT_PARSE_C) && \ in mbedtls_ssl_handshake_free()
4941 #if defined(MBEDTLS_SSL_CLI_C) && \ in mbedtls_ssl_handshake_free()
4947 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_handshake_free()
4952 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_ANY_ENABLED) in mbedtls_ssl_handshake_free()
4953 if (handshake->xxdh_psa_privkey_is_external == 0) { in mbedtls_ssl_handshake_free()
4958 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_handshake_free()
4961 #if defined(MBEDTLS_SSL_EARLY_DATA) in mbedtls_ssl_handshake_free()
4968 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in mbedtls_ssl_handshake_free()
4969 /* If the buffers are too big - reallocate. Because of the way Mbed TLS in mbedtls_ssl_handshake_free()
4984 if (session == NULL) { in mbedtls_ssl_session_free()
4988 #if defined(MBEDTLS_X509_CRT_PARSE_C) in mbedtls_ssl_session_free()
4992 #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_session_free()
4993 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) && \ in mbedtls_ssl_session_free()
5000 #if defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_ALPN) && \ in mbedtls_ssl_session_free()
5008 #if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION)
5010 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
5018 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
5024 #if defined(MBEDTLS_SSL_ALPN)
5114 if (mbedtls_ssl_is_handshake_over(ssl) == 0) { in mbedtls_ssl_context_save()
5118 if (ssl->handshake != NULL) { in mbedtls_ssl_context_save()
5123 if (ssl->transform == NULL || ssl->session == NULL) { in mbedtls_ssl_context_save()
5128 if (mbedtls_ssl_check_pending(ssl) != 0) { in mbedtls_ssl_context_save()
5132 if (ssl->out_left != 0) { in mbedtls_ssl_context_save()
5137 if (ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_context_save()
5142 if (ssl->tls_version != MBEDTLS_SSL_VERSION_TLS1_2) { in mbedtls_ssl_context_save()
5147 if (mbedtls_ssl_transform_uses_aead(ssl->transform) != 1) { in mbedtls_ssl_context_save()
5152 #if defined(MBEDTLS_SSL_RENEGOTIATION) in mbedtls_ssl_context_save()
5153 if (ssl->conf->disable_renegotiation != MBEDTLS_SSL_RENEGOTIATION_DISABLED) { in mbedtls_ssl_context_save()
5164 if (used <= buf_len) { in mbedtls_ssl_context_save()
5174 if (ret != MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL) { in mbedtls_ssl_context_save()
5179 if (used <= buf_len) { in mbedtls_ssl_context_save()
5185 if (ret != 0) { in mbedtls_ssl_context_save()
5196 if (used <= buf_len) { in mbedtls_ssl_context_save()
5202 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) in mbedtls_ssl_context_save()
5204 if (used <= buf_len) { in mbedtls_ssl_context_save()
5219 if (used <= buf_len) { in mbedtls_ssl_context_save()
5224 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) in mbedtls_ssl_context_save()
5226 if (used <= buf_len) { in mbedtls_ssl_context_save()
5235 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_context_save()
5237 if (used <= buf_len) { in mbedtls_ssl_context_save()
5243 if (used <= buf_len) { in mbedtls_ssl_context_save()
5248 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_context_save()
5250 if (used <= buf_len) { in mbedtls_ssl_context_save()
5256 #if defined(MBEDTLS_SSL_ALPN) in mbedtls_ssl_context_save()
5263 if (used <= buf_len) { in mbedtls_ssl_context_save()
5266 if (ssl->alpn_chosen != NULL) { in mbedtls_ssl_context_save()
5279 if (used > buf_len) { in mbedtls_ssl_context_save()
5303 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_context_load()
5310 * (Checking session is useful because it won't be NULL if we're in ssl_context_load()
5311 * renegotiating, or if the user mistakenly loaded a session first.) in ssl_context_load()
5313 if (ssl->state != MBEDTLS_SSL_HELLO_REQUEST || in ssl_context_load()
5322 if ( in ssl_context_load()
5323 #if defined(MBEDTLS_SSL_RENEGOTIATION) in ssl_context_load()
5338 if ((size_t) (end - p) < sizeof(ssl_serialized_context_header)) { in ssl_context_load()
5342 if (memcmp(p, ssl_serialized_context_header, in ssl_context_load()
5351 if ((size_t) (end - p) < 4) { in ssl_context_load()
5365 if ((size_t) (end - p) < session_len) { in ssl_context_load()
5370 if (ret != 0) { in ssl_context_load()
5383 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_context_load()
5390 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in ssl_context_load()
5392 if (prf_func == NULL) { in ssl_context_load()
5397 if ((size_t) (end - p) < sizeof(ssl->transform->randbytes)) { in ssl_context_load()
5404 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in ssl_context_load()
5412 if (ret != 0) { in ssl_context_load()
5418 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) in ssl_context_load()
5420 if ((size_t) (end - p) < 1) { in ssl_context_load()
5426 if ((size_t) (end - p) < ssl->transform->in_cid_len + 1u) { in ssl_context_load()
5435 if ((size_t) (end - p) < ssl->transform->out_cid_len) { in ssl_context_load()
5446 if ((size_t) (end - p) < 4) { in ssl_context_load()
5453 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) in ssl_context_load()
5454 if ((size_t) (end - p) < 16) { in ssl_context_load()
5465 #if defined(MBEDTLS_SSL_PROTO_DTLS) in ssl_context_load()
5466 if ((size_t) (end - p) < 1) { in ssl_context_load()
5473 if ((size_t) (end - p) < sizeof(ssl->cur_out_ctr)) { in ssl_context_load()
5479 #if defined(MBEDTLS_SSL_PROTO_DTLS) in ssl_context_load()
5480 if ((size_t) (end - p) < 2) { in ssl_context_load()
5488 #if defined(MBEDTLS_SSL_ALPN) in ssl_context_load()
5493 if ((size_t) (end - p) < 1) { in ssl_context_load()
5499 if (alpn_len != 0 && ssl->conf->alpn_list != NULL) { in ssl_context_load()
5502 if (strlen(*cur) == alpn_len && in ssl_context_load()
5511 if (alpn_len != 0 && ssl->alpn_chosen == NULL) { in ssl_context_load()
5532 #if defined(MBEDTLS_SSL_PROTO_DTLS) in ssl_context_load()
5540 if (ssl->handshake != NULL) { in ssl_context_load()
5549 if (p != end) { in ssl_context_load()
5565 if (ret != 0) { in mbedtls_ssl_context_load()
5578 if (ssl == NULL) { in mbedtls_ssl_free()
5584 if (ssl->out_buf != NULL) { in mbedtls_ssl_free()
5585 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in mbedtls_ssl_free()
5595 if (ssl->in_buf != NULL) { in mbedtls_ssl_free()
5596 #if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) in mbedtls_ssl_free()
5606 if (ssl->transform) { in mbedtls_ssl_free()
5611 if (ssl->handshake) { in mbedtls_ssl_free()
5615 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_free()
5624 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_free()
5629 if (ssl->session) { in mbedtls_ssl_free()
5634 #if defined(MBEDTLS_X509_CRT_PARSE_C) in mbedtls_ssl_free()
5638 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_free()
5663 #if defined(MBEDTLS_ECP_HAVE_CURVE25519)
5666 #if defined(MBEDTLS_ECP_HAVE_SECP256R1)
5669 #if defined(MBEDTLS_ECP_HAVE_SECP384R1)
5672 #if defined(MBEDTLS_ECP_HAVE_CURVE448)
5675 #if defined(MBEDTLS_ECP_HAVE_SECP521R1)
5678 #if defined(MBEDTLS_ECP_HAVE_BP256R1)
5681 #if defined(MBEDTLS_ECP_HAVE_BP384R1)
5684 #if defined(MBEDTLS_ECP_HAVE_BP512R1)
5687 #if defined(PSA_WANT_ALG_FFDH)
5703 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
5709 * - But if there is a good reason, do not change the order of the algorithms.
5715 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) && \
5722 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) && \
5729 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) && \
5736 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) && defined(MBEDTLS_MD_CAN_SHA512)
5740 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) && defined(MBEDTLS_MD_CAN_SHA384)
5744 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) && defined(MBEDTLS_MD_CAN_SHA256)
5748 #if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_MD_CAN_SHA512)
5752 #if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_MD_CAN_SHA384)
5756 #if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_MD_CAN_SHA256)
5764 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
5767 #if defined(MBEDTLS_MD_CAN_SHA512)
5768 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED)
5771 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT)
5774 #if defined(MBEDTLS_RSA_C)
5779 #if defined(MBEDTLS_MD_CAN_SHA384)
5780 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED)
5783 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT)
5786 #if defined(MBEDTLS_RSA_C)
5791 #if defined(MBEDTLS_MD_CAN_SHA256)
5792 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED)
5795 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT)
5798 #if defined(MBEDTLS_RSA_C)
5810 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) && \
5817 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) && \
5828 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
5831 #if defined(MBEDTLS_MD_CAN_SHA256)
5832 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED)
5837 #if defined(MBEDTLS_MD_CAN_SHA384)
5838 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED)
5850 #if defined(MBEDTLS_ECP_HAVE_SECP256R1)
5853 #if defined(MBEDTLS_ECP_HAVE_SECP384R1)
5859 #if defined(MBEDTLS_DEBUG_C) && defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
5870 if (sig_algs[i] != sig_algs[j]) { in ssl_check_no_sig_alg_duplication()
5890 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_config_defaults()
5894 #if defined(MBEDTLS_DEBUG_C) && defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED) in mbedtls_ssl_config_defaults()
5895 if (ssl_check_no_sig_alg_duplication(ssl_preset_suiteb_sig_algs)) { in mbedtls_ssl_config_defaults()
5900 if (ssl_check_no_sig_alg_duplication(ssl_preset_default_sig_algs)) { in mbedtls_ssl_config_defaults()
5905 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_config_defaults()
5906 if (ssl_check_no_sig_alg_duplication(ssl_tls12_preset_suiteb_sig_algs)) { in mbedtls_ssl_config_defaults()
5911 if (ssl_check_no_sig_alg_duplication(ssl_tls12_preset_default_sig_algs)) { in mbedtls_ssl_config_defaults()
5926 #if defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_config_defaults()
5927 if (endpoint == MBEDTLS_SSL_IS_CLIENT) { in mbedtls_ssl_config_defaults()
5929 #if defined(MBEDTLS_SSL_SESSION_TICKETS) in mbedtls_ssl_config_defaults()
5931 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_config_defaults()
5944 * TLS 1.3 connection with a TLS 1.2 and TLS 1.3 capable server. If in mbedtls_ssl_config_defaults()
5961 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) in mbedtls_ssl_config_defaults()
5965 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) in mbedtls_ssl_config_defaults()
5969 #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_config_defaults()
5974 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) in mbedtls_ssl_config_defaults()
5978 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_config_defaults()
5983 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_config_defaults()
5988 #if defined(MBEDTLS_SSL_RENEGOTIATION) in mbedtls_ssl_config_defaults()
5994 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_config_defaults()
5995 if (endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_config_defaults()
6001 if ((ret = mbedtls_ssl_conf_dh_param_bin(conf, in mbedtls_ssl_config_defaults()
6009 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_config_defaults()
6011 #if defined(MBEDTLS_SSL_EARLY_DATA) in mbedtls_ssl_config_defaults()
6013 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_config_defaults()
6018 #if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_SESSION_TICKETS) in mbedtls_ssl_config_defaults()
6028 if (transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_config_defaults()
6029 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_config_defaults()
6036 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_config_defaults()
6061 #if defined(MBEDTLS_X509_CRT_PARSE_C) in mbedtls_ssl_config_defaults()
6065 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED) in mbedtls_ssl_config_defaults()
6066 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_config_defaults()
6067 if (mbedtls_ssl_conf_is_tls12_only(conf)) { in mbedtls_ssl_config_defaults()
6074 #if defined(MBEDTLS_ECP_C) && !defined(MBEDTLS_DEPRECATED_REMOVED) in mbedtls_ssl_config_defaults()
6087 #if defined(MBEDTLS_X509_CRT_PARSE_C) in mbedtls_ssl_config_defaults()
6091 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED) in mbedtls_ssl_config_defaults()
6092 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_config_defaults()
6093 if (mbedtls_ssl_conf_is_tls12_only(conf)) { in mbedtls_ssl_config_defaults()
6100 #if defined(MBEDTLS_ECP_C) && !defined(MBEDTLS_DEPRECATED_REMOVED) in mbedtls_ssl_config_defaults()
6105 #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_config_defaults()
6118 if (conf == NULL) { in mbedtls_ssl_config_free()
6122 #if defined(MBEDTLS_DHM_C) in mbedtls_ssl_config_free()
6127 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_PSK_ENABLED) in mbedtls_ssl_config_free()
6128 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_config_free()
6129 if (!mbedtls_svc_key_id_is_null(conf->psk_opaque)) { in mbedtls_ssl_config_free()
6133 if (conf->psk != NULL) { in mbedtls_ssl_config_free()
6139 if (conf->psk_identity != NULL) { in mbedtls_ssl_config_free()
6146 #if defined(MBEDTLS_X509_CRT_PARSE_C) in mbedtls_ssl_config_free()
6153 #if defined(MBEDTLS_PK_C) && \
6160 #if defined(MBEDTLS_RSA_C) in mbedtls_ssl_sig_from_pk()
6161 if (mbedtls_pk_can_do(pk, MBEDTLS_PK_RSA)) { in mbedtls_ssl_sig_from_pk()
6165 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) in mbedtls_ssl_sig_from_pk()
6166 if (mbedtls_pk_can_do(pk, MBEDTLS_PK_ECDSA)) { in mbedtls_ssl_sig_from_pk()
6189 #if defined(MBEDTLS_RSA_C) in mbedtls_ssl_pk_alg_from_sig()
6193 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED) in mbedtls_ssl_pk_alg_from_sig()
6210 #if defined(MBEDTLS_MD_CAN_MD5) in mbedtls_ssl_md_alg_from_hash()
6214 #if defined(MBEDTLS_MD_CAN_SHA1) in mbedtls_ssl_md_alg_from_hash()
6218 #if defined(MBEDTLS_MD_CAN_SHA224) in mbedtls_ssl_md_alg_from_hash()
6222 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_md_alg_from_hash()
6226 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_md_alg_from_hash()
6230 #if defined(MBEDTLS_MD_CAN_SHA512) in mbedtls_ssl_md_alg_from_hash()
6245 #if defined(MBEDTLS_MD_CAN_MD5) in mbedtls_ssl_hash_from_md_alg()
6249 #if defined(MBEDTLS_MD_CAN_SHA1) in mbedtls_ssl_hash_from_md_alg()
6253 #if defined(MBEDTLS_MD_CAN_SHA224) in mbedtls_ssl_hash_from_md_alg()
6257 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_hash_from_md_alg()
6261 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_hash_from_md_alg()
6265 #if defined(MBEDTLS_MD_CAN_SHA512) in mbedtls_ssl_hash_from_md_alg()
6275 * Check if a curve proposed by the peer is in our list.
6276 * Return 0 if we're willing to use it, -1 otherwise.
6282 if (group_list == NULL) { in mbedtls_ssl_check_curve_tls_id()
6287 if (*group_list == tls_id) { in mbedtls_ssl_check_curve_tls_id()
6295 #if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
6303 if (tls_id == 0) { in mbedtls_ssl_check_curve()
6318 #if defined(MBEDTLS_ECP_HAVE_SECP521R1)
6321 #if defined(MBEDTLS_ECP_HAVE_BP512R1)
6324 #if defined(MBEDTLS_ECP_HAVE_SECP384R1)
6327 #if defined(MBEDTLS_ECP_HAVE_BP384R1)
6330 #if defined(MBEDTLS_ECP_HAVE_SECP256R1)
6333 #if defined(MBEDTLS_ECP_HAVE_SECP256K1)
6336 #if defined(MBEDTLS_ECP_HAVE_BP256R1)
6339 #if defined(MBEDTLS_ECP_HAVE_SECP224R1)
6342 #if defined(MBEDTLS_ECP_HAVE_SECP224K1)
6345 #if defined(MBEDTLS_ECP_HAVE_SECP192R1)
6348 #if defined(MBEDTLS_ECP_HAVE_SECP192K1)
6351 #if defined(MBEDTLS_ECP_HAVE_CURVE25519)
6354 #if defined(MBEDTLS_ECP_HAVE_CURVE448)
6365 if (tls_id_match_table[i].tls_id == tls_id) { in mbedtls_ssl_get_psa_curve_info_from_tls_id()
6366 if (type != NULL) { in mbedtls_ssl_get_psa_curve_info_from_tls_id()
6369 if (bits != NULL) { in mbedtls_ssl_get_psa_curve_info_from_tls_id()
6382 if (tls_id_match_table[i].tls_id == tls_id) { in mbedtls_ssl_get_ecp_group_id_from_tls_id()
6394 if (tls_id_match_table[i].ecp_group_id == grp_id) { in mbedtls_ssl_get_tls_id_from_ecp_group_id()
6402 #if defined(MBEDTLS_DEBUG_C)
6427 if (tls_id_curve_name_table[i].tls_id == tls_id) { in mbedtls_ssl_get_curve_name_from_tls_id()
6436 #if defined(MBEDTLS_USE_PSA_CRYPTO)
6450 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_get_handshake_transcript()
6456 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_get_handshake_transcript()
6467 if (status != PSA_SUCCESS) { in mbedtls_ssl_get_handshake_transcript()
6472 if (status != PSA_SUCCESS) { in mbedtls_ssl_get_handshake_transcript()
6477 #if !defined(MBEDTLS_MD_CAN_SHA384) && \ in mbedtls_ssl_get_handshake_transcript()
6485 #if defined(MBEDTLS_MD_CAN_SHA384)
6495 if (dst_len < 48) { in ssl_get_handshake_transcript_sha384()
6501 if (ret != 0) { in ssl_get_handshake_transcript_sha384()
6505 if (ret != 0) { in ssl_get_handshake_transcript_sha384()
6509 if ((ret = mbedtls_md_finish(&sha384, dst)) != 0) { in ssl_get_handshake_transcript_sha384()
6523 #if defined(MBEDTLS_MD_CAN_SHA256)
6533 if (dst_len < 32) { in ssl_get_handshake_transcript_sha256()
6539 if (ret != 0) { in ssl_get_handshake_transcript_sha256()
6543 if (ret != 0) { in ssl_get_handshake_transcript_sha256()
6547 if ((ret = mbedtls_md_finish(&sha256, dst)) != 0) { in ssl_get_handshake_transcript_sha256()
6569 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_get_handshake_transcript()
6574 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_get_handshake_transcript()
6580 #if !defined(MBEDTLS_MD_CAN_SHA384) && \ in mbedtls_ssl_get_handshake_transcript()
6594 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
6661 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_parse_sig_alg_ext()
6662 if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_2 && in mbedtls_ssl_parse_sig_alg_ext()
6672 if (common_idx + 1 < MBEDTLS_RECEIVED_SIG_ALGS_SIZE) { in mbedtls_ssl_parse_sig_alg_ext()
6678 if (p != end) { in mbedtls_ssl_parse_sig_alg_ext()
6686 if (common_idx == 0) { in mbedtls_ssl_parse_sig_alg_ext()
6699 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
6701 #if defined(MBEDTLS_USE_PSA_CRYPTO)
6716 if (status != PSA_SUCCESS) { in setup_psa_key_derivation()
6720 if (PSA_ALG_IS_TLS12_PRF(alg) || PSA_ALG_IS_TLS12_PSK_TO_MS(alg)) { in setup_psa_key_derivation()
6724 if (status != PSA_SUCCESS) { in setup_psa_key_derivation()
6728 if (other_secret != NULL) { in setup_psa_key_derivation()
6732 if (status != PSA_SUCCESS) { in setup_psa_key_derivation()
6737 if (mbedtls_svc_key_id_is_null(key)) { in setup_psa_key_derivation()
6745 if (status != PSA_SUCCESS) { in setup_psa_key_derivation()
6752 if (status != PSA_SUCCESS) { in setup_psa_key_derivation()
6760 if (status != PSA_SUCCESS) { in setup_psa_key_derivation()
6767 #if defined(PSA_WANT_ALG_SHA_384) || \
6782 if (md_type == MBEDTLS_MD_SHA384) { in tls_prf_generic()
6795 if (slen != 0) { in tls_prf_generic()
6802 if (status != PSA_SUCCESS) { in tls_prf_generic()
6815 if (status != PSA_SUCCESS) { in tls_prf_generic()
6822 if (status != PSA_SUCCESS) { in tls_prf_generic()
6829 if (status != PSA_SUCCESS) { in tls_prf_generic()
6834 if (!mbedtls_svc_key_id_is_null(master_key)) { in tls_prf_generic()
6837 if (status != PSA_SUCCESS) { in tls_prf_generic()
6846 #if defined(MBEDTLS_MD_C) && \
6867 if ((md_info = mbedtls_md_info_from_type(md_type)) == NULL) { in tls_prf_generic()
6875 if (tmp == NULL) { in tls_prf_generic()
6888 if ((ret = mbedtls_md_setup(&md_ctx, md_info, 1)) != 0) { in tls_prf_generic()
6893 if (ret != 0) { in tls_prf_generic()
6897 if (ret != 0) { in tls_prf_generic()
6901 if (ret != 0) { in tls_prf_generic()
6907 if (ret != 0) { in tls_prf_generic()
6911 if (ret != 0) { in tls_prf_generic()
6915 if (ret != 0) { in tls_prf_generic()
6920 if (ret != 0) { in tls_prf_generic()
6924 if (ret != 0) { in tls_prf_generic()
6928 if (ret != 0) { in tls_prf_generic()
6942 if (tmp != NULL) { in tls_prf_generic()
6955 #if defined(MBEDTLS_MD_CAN_SHA256)
6967 #if defined(MBEDTLS_MD_CAN_SHA384)
6992 #if defined(MBEDTLS_MD_CAN_SHA384) in ssl_set_handshake_prfs()
6993 if (hash == MBEDTLS_MD_SHA384) { in ssl_set_handshake_prfs()
6999 #if defined(MBEDTLS_MD_CAN_SHA256) in ssl_set_handshake_prfs()
7018 * Compute master secret if needed
7042 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) in ssl_compute_master()
7053 * - If the Extended Master Secret extension is not used, in ssl_compute_master()
7056 * - If the Extended Master Secret extension is used, in ssl_compute_master()
7062 #if !defined(MBEDTLS_DEBUG_C) && \ in ssl_compute_master()
7070 if (handshake->resume != 0) { in ssl_compute_master()
7075 #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) in ssl_compute_master()
7076 if (handshake->extended_ms == MBEDTLS_SSL_EXTENDED_MS_ENABLED) { in ssl_compute_master()
7080 if (ret != 0) { in ssl_compute_master()
7089 #if defined(MBEDTLS_USE_PSA_CRYPTO) && \ in ssl_compute_master()
7091 if (mbedtls_ssl_ciphersuite_uses_psk(handshake->ciphersuite_info) == 1) { in ssl_compute_master()
7104 if (hash_alg == MBEDTLS_MD_SHA384) { in ssl_compute_master()
7139 if (status != PSA_SUCCESS) { in ssl_compute_master()
7147 if (status != PSA_SUCCESS) { in ssl_compute_master()
7153 if (status != PSA_SUCCESS) { in ssl_compute_master()
7159 #if defined(MBEDTLS_USE_PSA_CRYPTO) && \ in ssl_compute_master()
7161 if (handshake->ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE) { in ssl_compute_master()
7172 if (status != PSA_SUCCESS) { in ssl_compute_master()
7178 if (status != PSA_SUCCESS) { in ssl_compute_master()
7185 if (status != PSA_SUCCESS) { in ssl_compute_master()
7193 if (status != PSA_SUCCESS) { in ssl_compute_master()
7199 if (status != PSA_SUCCESS) { in ssl_compute_master()
7208 if (ret != 0) { in ssl_compute_master()
7235 if (ret != 0) { in mbedtls_ssl_derive_keys()
7240 /* Compute master secret if needed */ in mbedtls_ssl_derive_keys()
7244 if (ret != 0) { in mbedtls_ssl_derive_keys()
7264 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in mbedtls_ssl_derive_keys()
7272 if (ret != 0) { in mbedtls_ssl_derive_keys()
7289 #if defined(MBEDTLS_MD_CAN_SHA384) in mbedtls_ssl_set_calc_verify_md()
7294 #if defined(MBEDTLS_MD_CAN_SHA256) in mbedtls_ssl_set_calc_verify_md()
7302 #if !defined(MBEDTLS_MD_CAN_SHA384) && \ in mbedtls_ssl_set_calc_verify_md()
7309 #if defined(MBEDTLS_USE_PSA_CRYPTO)
7319 #if !defined(MBEDTLS_DEBUG_C) in ssl_calc_verify_tls_psa()
7324 if (status != PSA_SUCCESS) { in ssl_calc_verify_tls_psa()
7329 if (status != PSA_SUCCESS) { in ssl_calc_verify_tls_psa()
7351 #if !defined(MBEDTLS_DEBUG_C) in ssl_calc_verify_tls_legacy()
7357 if (ret != 0) { in ssl_calc_verify_tls_legacy()
7361 if (ret != 0) { in ssl_calc_verify_tls_legacy()
7366 if (ret != 0) { in ssl_calc_verify_tls_legacy()
7381 #if defined(MBEDTLS_MD_CAN_SHA256)
7386 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_calc_verify_tls_sha256()
7396 #if defined(MBEDTLS_MD_CAN_SHA384)
7401 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_calc_verify_tls_sha384()
7411 #if !defined(MBEDTLS_USE_PSA_CRYPTO) && \
7421 if (psk_ret == MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED) { in mbedtls_ssl_psk_derive_premaster()
7429 if (key_ex != MBEDTLS_KEY_EXCHANGE_DHE_PSK) { in mbedtls_ssl_psk_derive_premaster()
7442 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) in mbedtls_ssl_psk_derive_premaster()
7443 if (key_ex == MBEDTLS_KEY_EXCHANGE_PSK) { in mbedtls_ssl_psk_derive_premaster()
7444 if (end - p < 2) { in mbedtls_ssl_psk_derive_premaster()
7451 if (end < p || (size_t) (end - p) < psk_len) { in mbedtls_ssl_psk_derive_premaster()
7459 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) in mbedtls_ssl_psk_derive_premaster()
7460 if (key_ex == MBEDTLS_KEY_EXCHANGE_RSA_PSK) { in mbedtls_ssl_psk_derive_premaster()
7465 if (end - p < 2) { in mbedtls_ssl_psk_derive_premaster()
7474 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) in mbedtls_ssl_psk_derive_premaster()
7475 if (key_ex == MBEDTLS_KEY_EXCHANGE_DHE_PSK) { in mbedtls_ssl_psk_derive_premaster()
7480 if ((ret = mbedtls_dhm_calc_secret(&ssl->handshake->dhm_ctx, in mbedtls_ssl_psk_derive_premaster()
7492 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) in mbedtls_ssl_psk_derive_premaster()
7493 if (key_ex == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK) { in mbedtls_ssl_psk_derive_premaster()
7497 if ((ret = mbedtls_ecdh_calc_secret(&ssl->handshake->ecdh_ctx, &zlen, in mbedtls_ssl_psk_derive_premaster()
7517 if (end - p < 2) { in mbedtls_ssl_psk_derive_premaster()
7524 if (end < p || (size_t) (end - p) < psk_len) { in mbedtls_ssl_psk_derive_premaster()
7537 #if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_RENEGOTIATION)
7541 #if defined(MBEDTLS_SSL_PROTO_DTLS)
7544 /* If renegotiation is not enforced, retransmit until we would reach max in mbedtls_ssl_resend_hello_request()
7545 * timeout if we were using the usual handshake doubling scheme */ in mbedtls_ssl_resend_hello_request()
7546 if (ssl->conf->renego_max_records < 0) { in mbedtls_ssl_resend_hello_request()
7555 if (++ssl->renego_records_seen > doublings) { in mbedtls_ssl_resend_hello_request()
7569 #if !defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED)
7578 if (!mbedtls_ssl_ciphersuite_uses_srv_cert(ciphersuite_info)) { in mbedtls_ssl_write_certificate()
7595 if (!mbedtls_ssl_ciphersuite_uses_srv_cert(ciphersuite_info)) { in mbedtls_ssl_parse_certificate()
7618 if (!mbedtls_ssl_ciphersuite_uses_srv_cert(ciphersuite_info)) { in mbedtls_ssl_write_certificate()
7624 #if defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_write_certificate()
7625 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT) { in mbedtls_ssl_write_certificate()
7626 if (ssl->handshake->client_auth == 0) { in mbedtls_ssl_write_certificate()
7633 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_write_certificate()
7634 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_write_certificate()
7635 if (mbedtls_ssl_own_cert(ssl) == NULL) { in mbedtls_ssl_write_certificate()
7637 * ciphersuite if we don't have a certificate. */ in mbedtls_ssl_write_certificate()
7659 if (n > MBEDTLS_SSL_OUT_CONTENT_LEN - 3 - i) { in mbedtls_ssl_write_certificate()
7684 if ((ret = mbedtls_ssl_write_handshake_msg(ssl)) != 0) { in mbedtls_ssl_write_certificate()
7694 #if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C)
7696 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
7704 if (peer_crt == NULL) { in ssl_check_peer_crt_unchanged()
7708 if (peer_crt->raw.len != crt_buf_len) { in ssl_check_peer_crt_unchanged()
7730 if (peer_cert_digest == NULL || digest_info == NULL) { in ssl_check_peer_crt_unchanged()
7735 if (digest_len > MBEDTLS_SSL_PEER_CERT_DIGEST_MAX_LEN) { in ssl_check_peer_crt_unchanged()
7740 if (ret != 0) { in ssl_check_peer_crt_unchanged()
7758 #if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C) in ssl_parse_certificate_chain()
7764 if (ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE) { in ssl_parse_certificate_chain()
7771 if (ssl->in_msg[0] != MBEDTLS_SSL_HS_CERTIFICATE) { in ssl_parse_certificate_chain()
7777 if (ssl->in_hslen < mbedtls_ssl_hs_hdr_len(ssl) + 3 + 3) { in ssl_parse_certificate_chain()
7791 if (ssl->in_msg[i] != 0 || in ssl_parse_certificate_chain()
7805 if (i + 3 > ssl->in_hslen) { in ssl_parse_certificate_chain()
7814 if (ssl->in_msg[i] != 0) { in ssl_parse_certificate_chain()
7826 if (n < 128 || i + n > ssl->in_hslen) { in ssl_parse_certificate_chain()
7834 /* Check if we're handling the first CRT in the chain. */ in ssl_parse_certificate_chain()
7835 #if defined(MBEDTLS_SSL_RENEGOTIATION) && defined(MBEDTLS_SSL_CLI_C) in ssl_parse_certificate_chain()
7836 if (crt_cnt++ == 0 && in ssl_parse_certificate_chain()
7844 if (ssl_check_peer_crt_unchanged(ssl, in ssl_parse_certificate_chain()
7860 #if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in ssl_parse_certificate_chain()
7863 /* If we don't need to store the CRT chain permanently, parse in ssl_parse_certificate_chain()
7897 #if defined(MBEDTLS_SSL_SRV_C)
7901 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_srv_check_client_no_crt_notification()
7905 if (ssl->in_hslen == 3 + mbedtls_ssl_hs_hdr_len(ssl) && in ssl_srv_check_client_no_crt_notification()
7916 /* Check if a certificate message is expected.
7931 if (!mbedtls_ssl_ciphersuite_uses_srv_cert(ciphersuite_info)) { in ssl_parse_certificate_coordinate()
7935 #if defined(MBEDTLS_SSL_SRV_C) in ssl_parse_certificate_coordinate()
7936 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in ssl_parse_certificate_coordinate()
7937 if (ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK) { in ssl_parse_certificate_coordinate()
7941 if (authmode == MBEDTLS_SSL_VERIFY_NONE) { in ssl_parse_certificate_coordinate()
7954 #if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
7963 if (ssl->session_negotiate->peer_cert_digest == NULL) { in ssl_remember_peer_crt_digest()
7997 if (ret != 0) { in ssl_remember_peer_pubkey()
8010 /* Authmode: precedence order is SNI if used else configuration */ in mbedtls_ssl_parse_certificate()
8011 #if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) in mbedtls_ssl_parse_certificate()
8024 if (crt_expected == SSL_CERTIFICATE_SKIP) { in mbedtls_ssl_parse_certificate()
8029 #if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) in mbedtls_ssl_parse_certificate()
8030 if (ssl->handshake->ecrs_enabled && in mbedtls_ssl_parse_certificate()
8038 if ((ret = mbedtls_ssl_read_record(ssl, 1)) != 0) { in mbedtls_ssl_parse_certificate()
8045 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_parse_certificate()
8046 if (ssl_srv_check_client_no_crt_notification(ssl) == 0) { in mbedtls_ssl_parse_certificate()
8049 if (authmode != MBEDTLS_SSL_VERIFY_OPTIONAL) { in mbedtls_ssl_parse_certificate()
8062 if (chain == NULL) { in mbedtls_ssl_parse_certificate()
8075 if (ret != 0) { in mbedtls_ssl_parse_certificate()
8079 #if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) in mbedtls_ssl_parse_certificate()
8080 if (ssl->handshake->ecrs_enabled) { in mbedtls_ssl_parse_certificate()
8085 if (ssl->handshake->ecrs_enabled) { in mbedtls_ssl_parse_certificate()
8093 if (ret != 0) { in mbedtls_ssl_parse_certificate()
8097 #if !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) in mbedtls_ssl_parse_certificate()
8120 if (ret != 0) { in mbedtls_ssl_parse_certificate()
8125 if (ret != 0) { in mbedtls_ssl_parse_certificate()
8139 if (ret == 0) { in mbedtls_ssl_parse_certificate()
8143 #if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) in mbedtls_ssl_parse_certificate()
8144 if (ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) { in mbedtls_ssl_parse_certificate()
8150 if (chain != NULL) { in mbedtls_ssl_parse_certificate()
8165 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_calc_finished_tls_generic()
8178 if (!session) { in ssl_calc_finished_tls_generic()
8186 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_calc_finished_tls_generic()
8190 if (status != PSA_SUCCESS) { in ssl_calc_finished_tls_generic()
8195 if (status != PSA_SUCCESS) { in ssl_calc_finished_tls_generic()
8203 if (ret != 0) { in ssl_calc_finished_tls_generic()
8207 if (ret != 0) { in ssl_calc_finished_tls_generic()
8212 if (ret != 0) { in ssl_calc_finished_tls_generic()
8234 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_calc_finished_tls_generic()
8243 #if defined(MBEDTLS_MD_CAN_SHA256)
8249 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_calc_finished_tls_sha256()
8260 #if defined(MBEDTLS_MD_CAN_SHA384)
8266 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_calc_finished_tls_sha384()
8290 if (ssl->transform) { in mbedtls_ssl_handshake_wrapup_free_hs_transform()
8306 #if defined(MBEDTLS_SSL_RENEGOTIATION) in mbedtls_ssl_handshake_wrapup()
8307 if (ssl->renego_status == MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS) { in mbedtls_ssl_handshake_wrapup()
8316 if (ssl->session) { in mbedtls_ssl_handshake_wrapup()
8317 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) in mbedtls_ssl_handshake_wrapup()
8332 if (ssl->conf->f_set_cache != NULL && in mbedtls_ssl_handshake_wrapup()
8335 if (ssl->conf->f_set_cache(ssl->conf->p_cache, in mbedtls_ssl_handshake_wrapup()
8343 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_handshake_wrapup()
8344 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && in mbedtls_ssl_handshake_wrapup()
8371 if (ret != 0) { in mbedtls_ssl_write_finished()
8384 #if defined(MBEDTLS_SSL_RENEGOTIATION) in mbedtls_ssl_write_finished()
8397 if (ssl->handshake->resume != 0) { in mbedtls_ssl_write_finished()
8398 #if defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_write_finished()
8399 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT) { in mbedtls_ssl_write_finished()
8403 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_write_finished()
8404 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_write_finished()
8418 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_write_finished()
8419 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_write_finished()
8433 if (++ssl->cur_out_ctr[i - 1] != 0) { in mbedtls_ssl_write_finished()
8439 if (i == 0) { in mbedtls_ssl_write_finished()
8450 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_write_finished()
8451 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_write_finished()
8456 if ((ret = mbedtls_ssl_write_handshake_msg(ssl)) != 0) { in mbedtls_ssl_write_finished()
8461 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_write_finished()
8462 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && in mbedtls_ssl_write_finished()
8485 if (ret != 0) { in mbedtls_ssl_parse_finished()
8490 if ((ret = mbedtls_ssl_read_record(ssl, 1)) != 0) { in mbedtls_ssl_parse_finished()
8495 if (ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE) { in mbedtls_ssl_parse_finished()
8503 if (ssl->in_msg[0] != MBEDTLS_SSL_HS_FINISHED) { in mbedtls_ssl_parse_finished()
8510 if (ssl->in_hslen != mbedtls_ssl_hs_hdr_len(ssl) + hash_len) { in mbedtls_ssl_parse_finished()
8518 if (mbedtls_ct_memcmp(ssl->in_msg + mbedtls_ssl_hs_hdr_len(ssl), in mbedtls_ssl_parse_finished()
8527 #if defined(MBEDTLS_SSL_RENEGOTIATION) in mbedtls_ssl_parse_finished()
8532 if (ssl->handshake->resume != 0) { in mbedtls_ssl_parse_finished()
8533 #if defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_parse_finished()
8534 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT) { in mbedtls_ssl_parse_finished()
8538 #if defined(MBEDTLS_SSL_SRV_C) in mbedtls_ssl_parse_finished()
8539 if (ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER) { in mbedtls_ssl_parse_finished()
8547 #if defined(MBEDTLS_SSL_PROTO_DTLS) in mbedtls_ssl_parse_finished()
8548 if (ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM) { in mbedtls_ssl_parse_finished()
8560 #if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION)
8569 #if defined(MBEDTLS_MD_CAN_SHA384) in ssl_tls12prf_from_cs()
8570 if (ciphersuite_info != NULL && ciphersuite_info->mac == MBEDTLS_MD_SHA384) { in ssl_tls12prf_from_cs()
8574 #if defined(MBEDTLS_MD_CAN_SHA256) in ssl_tls12prf_from_cs()
8576 if (ciphersuite_info != NULL && ciphersuite_info->mac == MBEDTLS_MD_SHA256) { in ssl_tls12prf_from_cs()
8581 #if !defined(MBEDTLS_MD_CAN_SHA384) && \ in ssl_tls12prf_from_cs()
8593 #if defined(MBEDTLS_MD_CAN_SHA384) in tls_prf_get_type()
8594 if (tls_prf == tls_prf_sha384) { in tls_prf_get_type()
8598 #if defined(MBEDTLS_MD_CAN_SHA256) in tls_prf_get_type()
8599 if (tls_prf == tls_prf_sha256) { in tls_prf_get_type()
8630 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in ssl_tls12_populate_transform()
8650 #if !defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8655 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8667 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in ssl_tls12_populate_transform()
8672 #if defined(MBEDTLS_SSL_KEEP_RANDBYTES) in ssl_tls12_populate_transform()
8676 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in ssl_tls12_populate_transform()
8677 if (tls_version == MBEDTLS_SSL_VERSION_TLS1_3) { in ssl_tls12_populate_transform()
8688 if (ciphersuite_info == NULL) { in ssl_tls12_populate_transform()
8695 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in ssl_tls12_populate_transform()
8700 if (ssl_mode == MBEDTLS_SSL_MODE_AEAD) { in ssl_tls12_populate_transform()
8705 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8706 if ((status = mbedtls_ssl_cipher_to_psa((mbedtls_cipher_type_t) ciphersuite_info->cipher, in ssl_tls12_populate_transform()
8717 if (cipher_info == NULL) { in ssl_tls12_populate_transform()
8724 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8726 if (mac_alg == 0) { in ssl_tls12_populate_transform()
8733 if (md_info == NULL) { in ssl_tls12_populate_transform()
8740 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) in ssl_tls12_populate_transform()
8741 /* Copy own and peer's CID if the use of the CID in ssl_tls12_populate_transform()
8743 if (ssl->handshake->cid_in_use == MBEDTLS_SSL_CID_ENABLED) { in ssl_tls12_populate_transform()
8763 if (ret != 0) { in ssl_tls12_populate_transform()
8778 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8784 #if defined(MBEDTLS_SSL_HAVE_AEAD) in ssl_tls12_populate_transform()
8785 if (ssl_mode == MBEDTLS_SSL_MODE_AEAD) { in ssl_tls12_populate_transform()
8802 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8809 if (is_chachapoly) { in ssl_tls12_populate_transform()
8820 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC) in ssl_tls12_populate_transform()
8821 if (ssl_mode == MBEDTLS_SSL_MODE_STREAM || in ssl_tls12_populate_transform()
8824 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8830 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8835 if ((ret = mbedtls_md_setup(&transform->md_ctx_enc, md_info, 1)) != 0 || in ssl_tls12_populate_transform()
8847 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8854 if (ssl_mode == MBEDTLS_SSL_MODE_STREAM) { in ssl_tls12_populate_transform()
8859 * 1. if EtM is in use: one block plus MAC in ssl_tls12_populate_transform()
8863 #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) in ssl_tls12_populate_transform()
8864 if (ssl_mode == MBEDTLS_SSL_MODE_CBC_ETM) { in ssl_tls12_populate_transform()
8875 if (tls_version == MBEDTLS_SSL_VERSION_TLS1_2) { in ssl_tls12_populate_transform()
8899 #if defined(MBEDTLS_SSL_CLI_C) in ssl_tls12_populate_transform()
8900 if (endpoint == MBEDTLS_SSL_IS_CLIENT) { in ssl_tls12_populate_transform()
8914 #if defined(MBEDTLS_SSL_SRV_C) in ssl_tls12_populate_transform()
8915 if (endpoint == MBEDTLS_SSL_IS_SERVER) { in ssl_tls12_populate_transform()
8935 if (ssl->f_export_keys != NULL) { in ssl_tls12_populate_transform()
8944 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
8947 if (alg != MBEDTLS_SSL_NULL_CIPHER) { in ssl_tls12_populate_transform()
8952 if ((status = psa_import_key(&attributes, in ssl_tls12_populate_transform()
8964 if ((status = psa_import_key(&attributes, in ssl_tls12_populate_transform()
8974 if ((ret = mbedtls_cipher_setup(&transform->cipher_ctx_enc, in ssl_tls12_populate_transform()
8980 if ((ret = mbedtls_cipher_setup(&transform->cipher_ctx_dec, in ssl_tls12_populate_transform()
8986 if ((ret = mbedtls_cipher_setkey(&transform->cipher_ctx_enc, key1, in ssl_tls12_populate_transform()
8993 if ((ret = mbedtls_cipher_setkey(&transform->cipher_ctx_dec, key2, in ssl_tls12_populate_transform()
9000 #if defined(MBEDTLS_CIPHER_MODE_CBC) in ssl_tls12_populate_transform()
9001 if (mbedtls_cipher_info_get_mode(cipher_info) == MBEDTLS_MODE_CBC) { in ssl_tls12_populate_transform()
9002 if ((ret = mbedtls_cipher_set_padding_mode(&transform->cipher_ctx_enc, in ssl_tls12_populate_transform()
9008 if ((ret = mbedtls_cipher_set_padding_mode(&transform->cipher_ctx_dec, in ssl_tls12_populate_transform()
9017 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC) in ssl_tls12_populate_transform()
9020 if (mac_key_len != 0) { in ssl_tls12_populate_transform()
9021 #if defined(MBEDTLS_USE_PSA_CRYPTO) in ssl_tls12_populate_transform()
9028 if ((status = psa_import_key(&attributes, in ssl_tls12_populate_transform()
9036 if ((transform->psa_alg == MBEDTLS_SSL_NULL_CIPHER) || in ssl_tls12_populate_transform()
9038 #if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC_ETM) in ssl_tls12_populate_transform()
9049 if ((status = psa_import_key(&attributes, in ssl_tls12_populate_transform()
9058 if (ret != 0) { in ssl_tls12_populate_transform()
9062 if (ret != 0) { in ssl_tls12_populate_transform()
9077 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) && \
9100 if (input_offset + length > len) { in mbedtls_psa_ecjpake_read_round()
9106 if (status != PSA_SUCCESS) { in mbedtls_psa_ecjpake_read_round()
9114 if (input_offset != len) { in mbedtls_psa_ecjpake_read_round()
9148 if (status != PSA_SUCCESS) { in mbedtls_psa_ecjpake_write_round()
9164 #if defined(MBEDTLS_USE_PSA_CRYPTO)
9176 if ((status = psa_hash_setup(&hash_operation, in mbedtls_ssl_get_key_exchange_md_tls1_2()
9182 if ((status = psa_hash_update(&hash_operation, ssl->handshake->randbytes, in mbedtls_ssl_get_key_exchange_md_tls1_2()
9188 if ((status = psa_hash_update(&hash_operation, in mbedtls_ssl_get_key_exchange_md_tls1_2()
9194 if ((status = psa_hash_finish(&hash_operation, hash, PSA_HASH_MAX_SIZE, in mbedtls_ssl_get_key_exchange_md_tls1_2()
9201 if (status != PSA_SUCCESS) { in mbedtls_ssl_get_key_exchange_md_tls1_2()
9242 if ((ret = mbedtls_md_setup(&ctx, md_info, 0)) != 0) { in mbedtls_ssl_get_key_exchange_md_tls1_2()
9246 if ((ret = mbedtls_md_starts(&ctx)) != 0) { in mbedtls_ssl_get_key_exchange_md_tls1_2()
9250 if ((ret = mbedtls_md_update(&ctx, ssl->handshake->randbytes, 64)) != 0) { in mbedtls_ssl_get_key_exchange_md_tls1_2()
9254 if ((ret = mbedtls_md_update(&ctx, data, data_len)) != 0) { in mbedtls_ssl_get_key_exchange_md_tls1_2()
9258 if ((ret = mbedtls_md_finish(&ctx, hash)) != 0) { in mbedtls_ssl_get_key_exchange_md_tls1_2()
9266 if (ret != 0) { in mbedtls_ssl_get_key_exchange_md_tls1_2()
9275 #if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED)
9285 if (sig_alg == MBEDTLS_SSL_SIG_ANON) { in mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg()
9299 if (md_alg == MBEDTLS_MD_NONE) { in mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg()
9303 if (sig_alg == sig_alg_received) { in mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg()
9304 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg()
9305 if (ssl->handshake->key_cert && ssl->handshake->key_cert->key) { in mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg()
9309 if (sig_alg_received == MBEDTLS_SSL_SIG_ECDSA && in mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg()
9316 if (sig_alg_received == MBEDTLS_SSL_SIG_RSA && in mbedtls_ssl_tls12_get_preferred_hash_for_sig_alg()
9345 if (suite_info == NULL) { in mbedtls_ssl_validate_ciphersuite()
9349 if ((suite_info->min_tls_version > max_tls_version) || in mbedtls_ssl_validate_ciphersuite()
9354 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_SSL_CLI_C) in mbedtls_ssl_validate_ciphersuite()
9355 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) in mbedtls_ssl_validate_ciphersuite()
9356 #if defined(MBEDTLS_USE_PSA_CRYPTO) in mbedtls_ssl_validate_ciphersuite()
9357 if (suite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE && in mbedtls_ssl_validate_ciphersuite()
9360 if (suite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE && in mbedtls_ssl_validate_ciphersuite()
9368 /* Don't suggest PSK-based ciphersuite if no PSK is available. */ in mbedtls_ssl_validate_ciphersuite()
9369 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) in mbedtls_ssl_validate_ciphersuite()
9370 if (mbedtls_ssl_ciphersuite_uses_psk(suite_info) && in mbedtls_ssl_validate_ciphersuite()
9380 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
9433 /* Check if we have space for header and length field: in mbedtls_ssl_write_sig_alg_ext()
9446 if (sig_alg == NULL) { in mbedtls_ssl_write_sig_alg_ext()
9454 if (!mbedtls_ssl_sig_alg_is_supported(ssl, *sig_alg)) { in mbedtls_ssl_write_sig_alg_ext()
9467 if (supported_sig_alg_len == 0) { in mbedtls_ssl_write_sig_alg_ext()
9478 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_write_sig_alg_ext()
9486 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
9531 if (p[0] == MBEDTLS_TLS_EXT_SERVERNAME_HOSTNAME) { in mbedtls_ssl_parse_server_name_ext()
9539 if (ssl->conf->f_sni == NULL) { in mbedtls_ssl_parse_server_name_ext()
9544 if (ret != 0) { in mbedtls_ssl_parse_server_name_ext()
9560 #if defined(MBEDTLS_SSL_ALPN)
9572 /* If ALPN not configured, just ignore the extension */ in mbedtls_ssl_parse_alpn_ext()
9573 if (ssl->conf->alpn_list == NULL) { in mbedtls_ssl_parse_alpn_ext()
9604 if (protocol_name_len == 0) { in mbedtls_ssl_parse_alpn_ext()
9620 if (protocol_name_len == alpn_len && in mbedtls_ssl_parse_alpn_ext()
9630 /* If we get here, no match was found */ in mbedtls_ssl_parse_alpn_ext()
9646 if (ssl->alpn_chosen == NULL) { in mbedtls_ssl_write_alpn_ext()
9674 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_write_alpn_ext()
9682 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) && \
9692 /* Check if new hostname is valid before in mbedtls_ssl_session_set_hostname()
9694 if (hostname != NULL) { in mbedtls_ssl_session_set_hostname()
9697 if (hostname_len > MBEDTLS_SSL_MAX_HOST_NAME_LEN) { in mbedtls_ssl_session_set_hostname()
9704 if (session->hostname != NULL) { in mbedtls_ssl_session_set_hostname()
9710 if (hostname == NULL) { in mbedtls_ssl_session_set_hostname()
9714 if (session->hostname == NULL) { in mbedtls_ssl_session_set_hostname()
9728 #if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_EARLY_DATA) && \
9735 if (alpn != NULL) { in mbedtls_ssl_session_set_ticket_alpn()
9738 if (alpn_len > MBEDTLS_SSL_MAX_ALPN_NAME_LEN) { in mbedtls_ssl_session_set_ticket_alpn()
9743 if (session->ticket_alpn != NULL) { in mbedtls_ssl_session_set_ticket_alpn()
9749 if (alpn != NULL) { in mbedtls_ssl_session_set_ticket_alpn()
9751 if (session->ticket_alpn == NULL) { in mbedtls_ssl_session_set_ticket_alpn()
9764 #if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
9783 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_check_cert_usage()
9784 if (tls_version == MBEDTLS_SSL_VERSION_TLS1_2 && in mbedtls_ssl_check_cert_usage()
9823 if (mbedtls_x509_crt_check_key_usage(cert, usage) != 0) { in mbedtls_ssl_check_cert_usage()
9832 if (recv_endpoint == MBEDTLS_SSL_IS_CLIENT) { in mbedtls_ssl_check_cert_usage()
9840 if (mbedtls_x509_crt_check_extended_key_usage(cert, ext_oid, ext_len) != 0) { in mbedtls_ssl_check_cert_usage()
9851 if (!mbedtls_ssl_has_set_hostname_been_called(ssl)) { in get_hostname_for_verification()
9853 #if !defined(MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME) in get_hostname_for_verification()
9854 if (mbedtls_ssl_conf_get_endpoint(ssl->conf) == MBEDTLS_SSL_IS_CLIENT && in get_hostname_for_verification()
9862 if (*hostname == NULL) { in get_hostname_for_verification()
9875 if (authmode == MBEDTLS_SSL_VERIFY_NONE) { in mbedtls_ssl_verify_certificate()
9884 if (ssl->f_vrfy != NULL) { in mbedtls_ssl_verify_certificate()
9896 if (ret != 0) { in mbedtls_ssl_verify_certificate()
9902 #if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) in mbedtls_ssl_verify_certificate()
9903 if (ssl->conf->f_ca_cb != NULL) { in mbedtls_ssl_verify_certificate()
9921 #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) in mbedtls_ssl_verify_certificate()
9922 if (ssl->handshake->sni_ca_chain != NULL) { in mbedtls_ssl_verify_certificate()
9932 if (ca_chain != NULL) { in mbedtls_ssl_verify_certificate()
9945 if (ret != 0) { in mbedtls_ssl_verify_certificate()
9949 #if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) in mbedtls_ssl_verify_certificate()
9950 if (ret == MBEDTLS_ERR_ECP_IN_PROGRESS) { in mbedtls_ssl_verify_certificate()
9956 * Secondary checks: always done, but change 'ret' only if it was 0 in mbedtls_ssl_verify_certificate()
9966 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ in mbedtls_ssl_verify_certificate()
9968 if (ssl->tls_version == MBEDTLS_SSL_VERSION_TLS1_2 && in mbedtls_ssl_verify_certificate()
9970 if (mbedtls_ssl_check_curve(ssl, mbedtls_pk_get_ec_group_id(&chain->pk)) != 0) { in mbedtls_ssl_verify_certificate()
9973 if (ret == 0) { in mbedtls_ssl_verify_certificate()
9981 if (mbedtls_ssl_check_cert_usage(chain, in mbedtls_ssl_verify_certificate()
9987 if (ret == 0) { in mbedtls_ssl_verify_certificate()
9992 /* With authmode optional, we want to keep going if the certificate was in mbedtls_ssl_verify_certificate()
10000 if (authmode == MBEDTLS_SSL_VERIFY_OPTIONAL && in mbedtls_ssl_verify_certificate()
10008 if (have_ca_chain_or_callback == 0 && authmode == MBEDTLS_SSL_VERIFY_REQUIRED) { in mbedtls_ssl_verify_certificate()
10013 if (ret != 0) { in mbedtls_ssl_verify_certificate()
10019 if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_OTHER) { in mbedtls_ssl_verify_certificate()
10021 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_CN_MISMATCH) { in mbedtls_ssl_verify_certificate()
10023 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_KEY_USAGE) { in mbedtls_ssl_verify_certificate()
10025 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_EXT_KEY_USAGE) { in mbedtls_ssl_verify_certificate()
10027 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_BAD_PK) { in mbedtls_ssl_verify_certificate()
10029 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_BAD_KEY) { in mbedtls_ssl_verify_certificate()
10031 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_EXPIRED) { in mbedtls_ssl_verify_certificate()
10033 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_REVOKED) { in mbedtls_ssl_verify_certificate()
10035 } else if (ssl->session_negotiate->verify_result & MBEDTLS_X509_BADCERT_NOT_TRUSTED) { in mbedtls_ssl_verify_certificate()
10044 #if defined(MBEDTLS_DEBUG_C) in mbedtls_ssl_verify_certificate()
10045 if (ssl->session_negotiate->verify_result != 0) { in mbedtls_ssl_verify_certificate()
10057 #if defined(MBEDTLS_SSL_KEYING_MATERIAL_EXPORT)
10059 #if defined(MBEDTLS_SSL_PROTO_TLS1_2)
10074 * If a context is provided, this is then followed by the context length in mbedtls_ssl_tls12_export_keying_material()
10078 if (use_context) { in mbedtls_ssl_tls12_export_keying_material()
10079 if (context_len > UINT16_MAX) { in mbedtls_ssl_tls12_export_keying_material()
10090 if (prf_input == NULL) { in mbedtls_ssl_tls12_export_keying_material()
10100 if (use_context) { in mbedtls_ssl_tls12_export_keying_material()
10113 #if defined(MBEDTLS_SSL_PROTO_TLS1_3)
10133 if (label_len > 249) { in mbedtls_ssl_tls13_export_keying_material()
10149 if (!mbedtls_ssl_is_handshake_over(ssl)) { in mbedtls_ssl_export_keying_material()
10154 if (key_len > MBEDTLS_SSL_EXPORT_MAX_KEY_LEN) { in mbedtls_ssl_export_keying_material()
10163 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) in mbedtls_ssl_export_keying_material()
10169 #if defined(MBEDTLS_SSL_PROTO_TLS1_3) in mbedtls_ssl_export_keying_material()