Lines Matching refs:rec
317 mbedtls_record *rec);
336 mbedtls_record rec; in mbedtls_ssl_check_record() local
338 ret = ssl_parse_record_header(ssl, buf, buflen, &rec); in mbedtls_ssl_check_record()
345 ret = mbedtls_ssl_decrypt_buf(ssl, ssl->transform_in, &rec); in mbedtls_ssl_check_record()
387 mbedtls_record const *rec);
669 mbedtls_record *rec, in ssl_extract_add_data_from_record() argument
764 size_t ad_len_field = rec->data_len; in ssl_extract_add_data_from_record()
785 if (rec->cid_len != 0) { in ssl_extract_add_data_from_record()
791 *cur = rec->type; in ssl_extract_add_data_from_record()
795 *cur = rec->cid_len; in ssl_extract_add_data_from_record()
801 memcpy(cur, rec->ctr, sizeof(rec->ctr)); in ssl_extract_add_data_from_record()
802 cur += sizeof(rec->ctr); in ssl_extract_add_data_from_record()
807 *cur = rec->type; in ssl_extract_add_data_from_record()
811 memcpy(cur, rec->ver, sizeof(rec->ver)); in ssl_extract_add_data_from_record()
812 cur += sizeof(rec->ver); in ssl_extract_add_data_from_record()
817 if (rec->cid_len != 0) { in ssl_extract_add_data_from_record()
819 memcpy(cur, rec->cid, rec->cid_len); in ssl_extract_add_data_from_record()
820 cur += rec->cid_len; in ssl_extract_add_data_from_record()
823 *cur = rec->cid_len; in ssl_extract_add_data_from_record()
833 if (rec->cid_len != 0) { in ssl_extract_add_data_from_record()
835 memcpy(cur, rec->ctr, sizeof(rec->ctr)); in ssl_extract_add_data_from_record()
836 cur += sizeof(rec->ctr); in ssl_extract_add_data_from_record()
839 memcpy(cur, rec->cid, rec->cid_len); in ssl_extract_add_data_from_record()
840 cur += rec->cid_len; in ssl_extract_add_data_from_record()
904 mbedtls_record *rec, in mbedtls_ssl_encrypt_buf() argument
942 if (rec == NULL in mbedtls_ssl_encrypt_buf()
943 || rec->buf == NULL in mbedtls_ssl_encrypt_buf()
944 || rec->buf_len < rec->data_offset in mbedtls_ssl_encrypt_buf()
945 || rec->buf_len - rec->data_offset < rec->data_len in mbedtls_ssl_encrypt_buf()
947 || rec->cid_len != 0 in mbedtls_ssl_encrypt_buf()
956 data = rec->buf + rec->data_offset; in mbedtls_ssl_encrypt_buf()
957 post_avail = rec->buf_len - (rec->data_len + rec->data_offset); in mbedtls_ssl_encrypt_buf()
959 data, rec->data_len); in mbedtls_ssl_encrypt_buf()
961 if (rec->data_len > MBEDTLS_SSL_OUT_CONTENT_LEN) { in mbedtls_ssl_encrypt_buf()
964 rec->data_len, in mbedtls_ssl_encrypt_buf()
984 ssl_compute_padding_length(rec->data_len, in mbedtls_ssl_encrypt_buf()
987 &rec->data_len, in mbedtls_ssl_encrypt_buf()
989 rec->type, in mbedtls_ssl_encrypt_buf()
994 rec->type = MBEDTLS_SSL_MSG_APPLICATION_DATA; in mbedtls_ssl_encrypt_buf()
1002 rec->cid_len = transform->out_cid_len; in mbedtls_ssl_encrypt_buf()
1003 memcpy(rec->cid, transform->out_cid, transform->out_cid_len); in mbedtls_ssl_encrypt_buf()
1004 MBEDTLS_SSL_DEBUG_BUF(3, "CID", rec->cid, rec->cid_len); in mbedtls_ssl_encrypt_buf()
1006 if (rec->cid_len != 0) { in mbedtls_ssl_encrypt_buf()
1008 ssl_compute_padding_length(rec->data_len, in mbedtls_ssl_encrypt_buf()
1018 &rec->data_len, in mbedtls_ssl_encrypt_buf()
1020 rec->type, in mbedtls_ssl_encrypt_buf()
1025 rec->type = MBEDTLS_SSL_MSG_CID; in mbedtls_ssl_encrypt_buf()
1029 post_avail = rec->buf_len - (rec->data_len + rec->data_offset); in mbedtls_ssl_encrypt_buf()
1050 ssl_extract_add_data_from_record(add_data, &add_data_len, rec, in mbedtls_ssl_encrypt_buf()
1066 status = psa_mac_update(&operation, data, rec->data_len); in mbedtls_ssl_encrypt_buf()
1082 ret = mbedtls_md_hmac_update(&transform->md_ctx_enc, data, rec->data_len); in mbedtls_ssl_encrypt_buf()
1096 memcpy(data + rec->data_len, mac, transform->maclen); in mbedtls_ssl_encrypt_buf()
1099 MBEDTLS_SSL_DEBUG_BUF(4, "computed mac", data + rec->data_len, in mbedtls_ssl_encrypt_buf()
1102 rec->data_len += transform->maclen; in mbedtls_ssl_encrypt_buf()
1129 rec->data_len, 0)); in mbedtls_ssl_encrypt_buf()
1166 dynamic_iv = rec->ctr; in mbedtls_ssl_encrypt_buf()
1167 dynamic_iv_len = sizeof(rec->ctr); in mbedtls_ssl_encrypt_buf()
1179 ssl_extract_add_data_from_record(add_data, &add_data_len, rec, in mbedtls_ssl_encrypt_buf()
1192 rec->data_len)); in mbedtls_ssl_encrypt_buf()
1202 data, rec->data_len, in mbedtls_ssl_encrypt_buf()
1203 data, rec->buf_len - (data - rec->buf), in mbedtls_ssl_encrypt_buf()
1204 &rec->data_len); in mbedtls_ssl_encrypt_buf()
1215 data, rec->data_len, /* src */ in mbedtls_ssl_encrypt_buf()
1216 … data, rec->buf_len - (size_t) (data - rec->buf), /* dst */ in mbedtls_ssl_encrypt_buf()
1217 &rec->data_len, in mbedtls_ssl_encrypt_buf()
1225 data + rec->data_len - transform->taglen, in mbedtls_ssl_encrypt_buf()
1234 if (rec->data_offset < dynamic_iv_len) { in mbedtls_ssl_encrypt_buf()
1240 rec->data_offset -= dynamic_iv_len; in mbedtls_ssl_encrypt_buf()
1241 rec->data_len += dynamic_iv_len; in mbedtls_ssl_encrypt_buf()
1261 padlen = transform->ivlen - (rec->data_len + 1) % transform->ivlen; in mbedtls_ssl_encrypt_buf()
1273 data[rec->data_len + i] = (unsigned char) padlen; in mbedtls_ssl_encrypt_buf()
1276 rec->data_len += padlen + 1; in mbedtls_ssl_encrypt_buf()
1289 if (rec->data_offset < transform->ivlen) { in mbedtls_ssl_encrypt_buf()
1309 rec->data_len, transform->ivlen, in mbedtls_ssl_encrypt_buf()
1332 data, rec->data_len, in mbedtls_ssl_encrypt_buf()
1333 data, rec->data_len, &olen); in mbedtls_ssl_encrypt_buf()
1343 data + olen, rec->data_len - olen, in mbedtls_ssl_encrypt_buf()
1358 data, rec->data_len, in mbedtls_ssl_encrypt_buf()
1365 if (rec->data_len != olen) { in mbedtls_ssl_encrypt_buf()
1371 rec->data_offset -= transform->ivlen; in mbedtls_ssl_encrypt_buf()
1372 rec->data_len += transform->ivlen; in mbedtls_ssl_encrypt_buf()
1391 rec, transform->tls_version, in mbedtls_ssl_encrypt_buf()
1409 status = psa_mac_update(&operation, data, rec->data_len); in mbedtls_ssl_encrypt_buf()
1427 data, rec->data_len); in mbedtls_ssl_encrypt_buf()
1441 memcpy(data + rec->data_len, mac, transform->maclen); in mbedtls_ssl_encrypt_buf()
1443 rec->data_len += transform->maclen; in mbedtls_ssl_encrypt_buf()
1482 mbedtls_record *rec) in mbedtls_ssl_decrypt_buf() argument
1512 if (rec == NULL || in mbedtls_ssl_decrypt_buf()
1513 rec->buf == NULL || in mbedtls_ssl_decrypt_buf()
1514 rec->buf_len < rec->data_offset || in mbedtls_ssl_decrypt_buf()
1515 rec->buf_len - rec->data_offset < rec->data_len) { in mbedtls_ssl_decrypt_buf()
1520 data = rec->buf + rec->data_offset; in mbedtls_ssl_decrypt_buf()
1527 if (rec->cid_len != transform->in_cid_len || in mbedtls_ssl_decrypt_buf()
1528 memcmp(rec->cid, transform->in_cid, rec->cid_len) != 0) { in mbedtls_ssl_decrypt_buf()
1535 if (rec->data_len < transform->maclen) { in mbedtls_ssl_decrypt_buf()
1539 rec->data_len, transform->maclen)); in mbedtls_ssl_decrypt_buf()
1564 dynamic_iv_len = sizeof(rec->ctr); in mbedtls_ssl_decrypt_buf()
1566 if (rec->data_len < dynamic_iv_len) { in mbedtls_ssl_decrypt_buf()
1569 rec->data_len, in mbedtls_ssl_decrypt_buf()
1576 rec->data_offset += dynamic_iv_len; in mbedtls_ssl_decrypt_buf()
1577 rec->data_len -= dynamic_iv_len; in mbedtls_ssl_decrypt_buf()
1579 dynamic_iv = rec->ctr; in mbedtls_ssl_decrypt_buf()
1583 if (rec->data_len < transform->taglen) { in mbedtls_ssl_decrypt_buf()
1586 rec->data_len, in mbedtls_ssl_decrypt_buf()
1590 rec->data_len -= transform->taglen; in mbedtls_ssl_decrypt_buf()
1605 ssl_extract_add_data_from_record(add_data, &add_data_len, rec, in mbedtls_ssl_decrypt_buf()
1618 MBEDTLS_SSL_DEBUG_BUF(4, "TAG used", data + rec->data_len, in mbedtls_ssl_decrypt_buf()
1629 data, rec->data_len + transform->taglen, in mbedtls_ssl_decrypt_buf()
1630 data, rec->buf_len - (data - rec->buf), in mbedtls_ssl_decrypt_buf()
1643 data, rec->data_len + transform->taglen, /* src */ in mbedtls_ssl_decrypt_buf()
1644 data, rec->buf_len - (size_t) (data - rec->buf), &olen, /* dst */ in mbedtls_ssl_decrypt_buf()
1659 if (olen != rec->data_len) { in mbedtls_ssl_decrypt_buf()
1704 if (rec->data_len < minlen + transform->ivlen || in mbedtls_ssl_decrypt_buf()
1705 rec->data_len < minlen + transform->maclen + 1) { in mbedtls_ssl_decrypt_buf()
1710 rec->data_len, in mbedtls_ssl_decrypt_buf()
1739 rec->data_len -= transform->maclen; in mbedtls_ssl_decrypt_buf()
1740 ssl_extract_add_data_from_record(add_data, &add_data_len, rec, in mbedtls_ssl_decrypt_buf()
1759 status = psa_mac_update(&operation, data, rec->data_len); in mbedtls_ssl_decrypt_buf()
1765 status = psa_mac_verify_finish(&operation, data + rec->data_len, in mbedtls_ssl_decrypt_buf()
1777 data, rec->data_len); in mbedtls_ssl_decrypt_buf()
1790 MBEDTLS_SSL_DEBUG_BUF(4, "message mac", data + rec->data_len, in mbedtls_ssl_decrypt_buf()
1796 if (mbedtls_ct_memcmp(data + rec->data_len, mac_expect, in mbedtls_ssl_decrypt_buf()
1831 if (rec->data_len % transform->ivlen != 0) { in mbedtls_ssl_decrypt_buf()
1834 rec->data_len, transform->ivlen)); in mbedtls_ssl_decrypt_buf()
1846 rec->data_offset += transform->ivlen; in mbedtls_ssl_decrypt_buf()
1847 rec->data_len -= transform->ivlen; in mbedtls_ssl_decrypt_buf()
1871 data, rec->data_len, in mbedtls_ssl_decrypt_buf()
1872 data, rec->data_len, &olen); in mbedtls_ssl_decrypt_buf()
1881 data + olen, rec->data_len - olen, in mbedtls_ssl_decrypt_buf()
1895 data, rec->data_len, data, &olen)) != 0) { in mbedtls_ssl_decrypt_buf()
1902 if (rec->data_len != olen) { in mbedtls_ssl_decrypt_buf()
1911 padlen = data[rec->data_len - 1]; in mbedtls_ssl_decrypt_buf()
1915 rec->data_len, in mbedtls_ssl_decrypt_buf()
1921 if (rec->data_len < transform->maclen + padlen + 1) { in mbedtls_ssl_decrypt_buf()
1925 rec->data_len, in mbedtls_ssl_decrypt_buf()
1931 rec->data_len, in mbedtls_ssl_decrypt_buf()
1954 size_t const padding_idx = rec->data_len - padlen; in mbedtls_ssl_decrypt_buf()
1955 size_t const num_checks = rec->data_len <= 256 ? rec->data_len : 256; in mbedtls_ssl_decrypt_buf()
1956 size_t const start_idx = rec->data_len - num_checks; in mbedtls_ssl_decrypt_buf()
1959 for (idx = start_idx; idx < rec->data_len; idx++) { in mbedtls_ssl_decrypt_buf()
1984 rec->data_len -= padlen; in mbedtls_ssl_decrypt_buf()
1994 data, rec->data_len); in mbedtls_ssl_decrypt_buf()
2022 rec->data_len -= transform->maclen; in mbedtls_ssl_decrypt_buf()
2023 ssl_extract_add_data_from_record(add_data, &add_data_len, rec, in mbedtls_ssl_decrypt_buf()
2038 const size_t max_len = rec->data_len + padlen; in mbedtls_ssl_decrypt_buf()
2045 data, rec->data_len, min_len, max_len, in mbedtls_ssl_decrypt_buf()
2050 data, rec->data_len, min_len, max_len, in mbedtls_ssl_decrypt_buf()
2059 rec->data_len, in mbedtls_ssl_decrypt_buf()
2103 ret = ssl_parse_inner_plaintext(data, &rec->data_len, in mbedtls_ssl_decrypt_buf()
2104 &rec->type); in mbedtls_ssl_decrypt_buf()
2113 if (rec->cid_len != 0) { in mbedtls_ssl_decrypt_buf()
2114 ret = ssl_parse_inner_plaintext(data, &rec->data_len, in mbedtls_ssl_decrypt_buf()
2115 &rec->type); in mbedtls_ssl_decrypt_buf()
2971 mbedtls_record rec; in mbedtls_ssl_write_record() local
2973 rec.buf = ssl->out_iv; in mbedtls_ssl_write_record()
2974 rec.buf_len = out_buf_len - (size_t) (ssl->out_iv - ssl->out_buf); in mbedtls_ssl_write_record()
2975 rec.data_len = ssl->out_msglen; in mbedtls_ssl_write_record()
2976 rec.data_offset = (size_t) (ssl->out_msg - rec.buf); in mbedtls_ssl_write_record()
2978 memcpy(&rec.ctr[0], ssl->out_ctr, sizeof(rec.ctr)); in mbedtls_ssl_write_record()
2979 mbedtls_ssl_write_version(rec.ver, ssl->conf->transport, tls_ver); in mbedtls_ssl_write_record()
2980 rec.type = ssl->out_msgtype; in mbedtls_ssl_write_record()
2984 rec.cid_len = 0; in mbedtls_ssl_write_record()
2987 if ((ret = mbedtls_ssl_encrypt_buf(ssl, ssl->transform_out, &rec, in mbedtls_ssl_write_record()
2993 if (rec.data_offset != 0) { in mbedtls_ssl_write_record()
2999 ssl->out_msgtype = rec.type; in mbedtls_ssl_write_record()
3001 memcpy(ssl->out_cid, rec.cid, rec.cid_len); in mbedtls_ssl_write_record()
3003 ssl->out_msglen = len = rec.data_len; in mbedtls_ssl_write_record()
3004 MBEDTLS_PUT_UINT16_BE(rec.data_len, ssl->out_len, 0); in mbedtls_ssl_write_record()
3823 mbedtls_record *rec) in ssl_parse_record_header() argument
3876 rec->type = buf[rec_hdr_type_offset]; in ssl_parse_record_header()
3880 rec->cid_len = 0; in ssl_parse_record_header()
3884 rec->type == MBEDTLS_SSL_MSG_CID) { in ssl_parse_record_header()
3914 rec->cid_len = (uint8_t) rec_hdr_cid_len; in ssl_parse_record_header()
3915 memcpy(rec->cid, buf + rec_hdr_cid_offset, rec_hdr_cid_len); in ssl_parse_record_header()
3919 if (ssl_check_record_type(rec->type)) { in ssl_parse_record_header()
3921 (unsigned) rec->type)); in ssl_parse_record_header()
3929 rec->ver[0] = buf[rec_hdr_version_offset + 0]; in ssl_parse_record_header()
3930 rec->ver[1] = buf[rec_hdr_version_offset + 1]; in ssl_parse_record_header()
3949 memcpy(&rec->ctr[0], buf + rec_hdr_ctr_offset, in ssl_parse_record_header()
3955 memcpy(&rec->ctr[0], ssl->in_ctr, rec_hdr_ctr_len); in ssl_parse_record_header()
3962 rec->data_offset = rec_hdr_len_offset + rec_hdr_len_len; in ssl_parse_record_header()
3963 rec->data_len = MBEDTLS_GET_UINT16_BE(buf, rec_hdr_len_offset); in ssl_parse_record_header()
3964 MBEDTLS_SSL_DEBUG_BUF(4, "input record header", buf, rec->data_offset); in ssl_parse_record_header()
3968 rec->type, (unsigned) tls_version, rec->data_len)); in ssl_parse_record_header()
3970 rec->buf = buf; in ssl_parse_record_header()
3971 rec->buf_len = rec->data_offset + rec->data_len; in ssl_parse_record_header()
3973 if (rec->data_len == 0) { in ssl_parse_record_header()
3992 rec_epoch = MBEDTLS_GET_UINT16_BE(rec->ctr, 0); in ssl_parse_record_header()
3996 if (len < rec->data_offset + rec->data_len) { in ssl_parse_record_header()
4001 (unsigned) (rec->data_offset + rec->data_len))); in ssl_parse_record_header()
4026 &rec->ctr[0]) != 0) { in ssl_parse_record_header()
4070 mbedtls_record *rec) in ssl_prepare_record_content() argument
4075 rec->buf, rec->buf_len); in ssl_prepare_record_content()
4085 if (rec->type == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC) { in ssl_prepare_record_content()
4092 unsigned char const old_msg_type = rec->type; in ssl_prepare_record_content()
4095 rec)) != 0) { in ssl_prepare_record_content()
4119 ret = mbedtls_ssl_tls13_check_early_data_len(ssl, rec->data_len); in ssl_prepare_record_content()
4157 if (old_msg_type != rec->type) { in ssl_prepare_record_content()
4159 old_msg_type, rec->type)); in ssl_prepare_record_content()
4163 rec->buf + rec->data_offset, rec->data_len); in ssl_prepare_record_content()
4173 if (ssl_check_record_type(rec->type)) { in ssl_prepare_record_content()
4179 if (rec->data_len == 0) { in ssl_prepare_record_content()
4182 && rec->type != MBEDTLS_SSL_MSG_APPLICATION_DATA) { in ssl_prepare_record_content()
4245 if (rec->type == MBEDTLS_SSL_MSG_APPLICATION_DATA) { in ssl_prepare_record_content()
4247 ret = mbedtls_ssl_tls13_check_early_data_len(ssl, rec->data_len); in ssl_prepare_record_content()
4256 } else if (rec->type == MBEDTLS_SSL_MSG_HANDSHAKE) { in ssl_prepare_record_content()
4270 if (rec->data_len > MBEDTLS_SSL_IN_CONTENT_LEN) { in ssl_prepare_record_content()
4840 unsigned char *rec; in ssl_load_buffered_record() local
4856 rec = hs->buffering.future_record.data; in ssl_load_buffered_record()
4860 if (rec == NULL) { in ssl_load_buffered_record()
4885 memcpy(ssl->in_hdr, rec, rec_len); in ssl_load_buffered_record()
4898 mbedtls_record const *rec) in ssl_buffer_future_record() argument
4909 if (rec->type != MBEDTLS_SSL_MSG_HANDSHAKE) { in ssl_buffer_future_record()
4919 if (rec->buf_len > (MBEDTLS_SSL_DTLS_MAX_BUFFERING - in ssl_buffer_future_record()
4925 rec->buf_len, (size_t) MBEDTLS_SSL_DTLS_MAX_BUFFERING, in ssl_buffer_future_record()
4933 MBEDTLS_SSL_DEBUG_BUF(3, "Buffered record", rec->buf, rec->buf_len); in ssl_buffer_future_record()
4938 hs->buffering.future_record.len = rec->buf_len; in ssl_buffer_future_record()
4948 memcpy(hs->buffering.future_record.data, rec->buf, rec->buf_len); in ssl_buffer_future_record()
4950 hs->buffering.total_bytes_buffered += rec->buf_len; in ssl_buffer_future_record()
4960 mbedtls_record rec; in ssl_get_next_record() local
4984 ret = ssl_parse_record_header(ssl, ssl->in_hdr, ssl->in_left, &rec); in ssl_get_next_record()
4989 ret = ssl_buffer_future_record(ssl, &rec); in ssl_get_next_record()
5006 ssl->in_msgtype = rec.type; in ssl_get_next_record()
5008 ssl->in_len = ssl->in_cid + rec.cid_len; in ssl_get_next_record()
5011 ssl->in_msglen = rec.data_len; in ssl_get_next_record()
5021 ssl->next_record_offset = rec.buf_len; in ssl_get_next_record()
5046 ssl->next_record_offset = rec.buf_len; in ssl_get_next_record()
5056 ret = mbedtls_ssl_fetch_input(ssl, rec.buf_len); in ssl_get_next_record()
5069 if ((ret = ssl_prepare_record_content(ssl, &rec)) != 0) { in ssl_get_next_record()
5129 ssl->in_len = ssl->in_cid + rec.cid_len; in ssl_get_next_record()
5135 ssl->in_msgtype = rec.type; in ssl_get_next_record()
5140 ssl->in_hdr[0] = rec.type; in ssl_get_next_record()
5141 ssl->in_msg = rec.buf + rec.data_offset; in ssl_get_next_record()
5142 ssl->in_msglen = rec.data_len; in ssl_get_next_record()
5143 MBEDTLS_PUT_UINT16_BE(rec.data_len, ssl->in_len, 0); in ssl_get_next_record()