Lines Matching refs:rec
316 mbedtls_record *rec);
335 mbedtls_record rec;
337 ret = ssl_parse_record_header(ssl, buf, buflen, &rec);
344 ret = mbedtls_ssl_decrypt_buf(ssl, ssl->transform_in, &rec);
386 mbedtls_record const *rec);
668 mbedtls_record *rec,
700 * ciphertext length from the inner plaintext length rec->data_len via
763 size_t ad_len_field = rec->data_len;
784 if (rec->cid_len != 0) {
790 *cur = rec->type;
794 *cur = rec->cid_len;
800 memcpy(cur, rec->ctr, sizeof(rec->ctr));
801 cur += sizeof(rec->ctr);
806 *cur = rec->type;
810 memcpy(cur, rec->ver, sizeof(rec->ver));
811 cur += sizeof(rec->ver);
816 if (rec->cid_len != 0) {
818 memcpy(cur, rec->cid, rec->cid_len);
819 cur += rec->cid_len;
822 *cur = rec->cid_len;
832 if (rec->cid_len != 0) {
834 memcpy(cur, rec->ctr, sizeof(rec->ctr));
835 cur += sizeof(rec->ctr);
838 memcpy(cur, rec->cid, rec->cid_len);
839 cur += rec->cid_len;
903 mbedtls_record *rec,
941 if (rec == NULL
942 || rec->buf == NULL
943 || rec->buf_len < rec->data_offset
944 || rec->buf_len - rec->data_offset < rec->data_len
946 || rec->cid_len != 0
955 data = rec->buf + rec->data_offset;
956 post_avail = rec->buf_len - (rec->data_len + rec->data_offset);
958 data, rec->data_len);
960 if (rec->data_len > MBEDTLS_SSL_OUT_CONTENT_LEN) {
963 rec->data_len,
973 * Note that this changes `rec->data_len`, and hence
983 ssl_compute_padding_length(rec->data_len,
986 &rec->data_len,
988 rec->type,
993 rec->type = MBEDTLS_SSL_MSG_APPLICATION_DATA;
1001 rec->cid_len = transform->out_cid_len;
1002 memcpy(rec->cid, transform->out_cid, transform->out_cid_len);
1003 MBEDTLS_SSL_DEBUG_BUF(3, "CID", rec->cid, rec->cid_len);
1005 if (rec->cid_len != 0) {
1007 ssl_compute_padding_length(rec->data_len,
1013 * Note that this changes `rec->data_len`, and hence
1017 &rec->data_len,
1019 rec->type,
1024 rec->type = MBEDTLS_SSL_MSG_CID;
1028 post_avail = rec->buf_len - (rec->data_len + rec->data_offset);
1049 ssl_extract_add_data_from_record(add_data, &add_data_len, rec,
1065 status = psa_mac_update(&operation, data, rec->data_len);
1081 ret = mbedtls_md_hmac_update(&transform->md_ctx_enc, data, rec->data_len);
1095 memcpy(data + rec->data_len, mac, transform->maclen);
1098 MBEDTLS_SSL_DEBUG_BUF(4, "computed mac", data + rec->data_len,
1101 rec->data_len += transform->maclen;
1128 rec->data_len, 0));
1165 dynamic_iv = rec->ctr;
1166 dynamic_iv_len = sizeof(rec->ctr);
1178 ssl_extract_add_data_from_record(add_data, &add_data_len, rec,
1191 rec->data_len));
1201 data, rec->data_len,
1202 data, rec->buf_len - (data - rec->buf),
1203 &rec->data_len);
1214 data, rec->data_len, /* src */
1215 data, rec->buf_len - (size_t) (data - rec->buf), /* dst */
1216 &rec->data_len,
1224 data + rec->data_len - transform->taglen,
1233 if (rec->data_offset < dynamic_iv_len) {
1239 rec->data_offset -= dynamic_iv_len;
1240 rec->data_len += dynamic_iv_len;
1260 padlen = transform->ivlen - (rec->data_len + 1) % transform->ivlen;
1272 data[rec->data_len + i] = (unsigned char) padlen;
1275 rec->data_len += padlen + 1;
1288 if (rec->data_offset < transform->ivlen) {
1308 rec->data_len, transform->ivlen,
1331 data, rec->data_len,
1332 data, rec->data_len, &olen);
1342 data + olen, rec->data_len - olen,
1357 data, rec->data_len,
1364 if (rec->data_len != olen) {
1370 rec->data_offset -= transform->ivlen;
1371 rec->data_len += transform->ivlen;
1390 rec, transform->tls_version,
1408 status = psa_mac_update(&operation, data, rec->data_len);
1426 data, rec->data_len);
1440 memcpy(data + rec->data_len, mac, transform->maclen);
1442 rec->data_len += transform->maclen;
1481 mbedtls_record *rec)
1511 if (rec == NULL ||
1512 rec->buf == NULL ||
1513 rec->buf_len < rec->data_offset ||
1514 rec->buf_len - rec->data_offset < rec->data_len) {
1519 data = rec->buf + rec->data_offset;
1526 if (rec->cid_len != transform->in_cid_len ||
1527 memcmp(rec->cid, transform->in_cid, rec->cid_len) != 0) {
1534 if (rec->data_len < transform->maclen) {
1538 rec->data_len, transform->maclen));
1563 dynamic_iv_len = sizeof(rec->ctr);
1565 if (rec->data_len < dynamic_iv_len) {
1568 rec->data_len,
1575 rec->data_offset += dynamic_iv_len;
1576 rec->data_len -= dynamic_iv_len;
1578 dynamic_iv = rec->ctr;
1582 if (rec->data_len < transform->taglen) {
1585 rec->data_len,
1589 rec->data_len -= transform->taglen;
1604 ssl_extract_add_data_from_record(add_data, &add_data_len, rec,
1617 MBEDTLS_SSL_DEBUG_BUF(4, "TAG used", data + rec->data_len,
1628 data, rec->data_len + transform->taglen,
1629 data, rec->buf_len - (data - rec->buf),
1642 data, rec->data_len + transform->taglen, /* src */
1643 data, rec->buf_len - (size_t) (data - rec->buf), &olen, /* dst */
1658 if (olen != rec->data_len) {
1703 if (rec->data_len < minlen + transform->ivlen ||
1704 rec->data_len < minlen + transform->maclen + 1) {
1709 rec->data_len,
1738 rec->data_len -= transform->maclen;
1739 ssl_extract_add_data_from_record(add_data, &add_data_len, rec,
1758 status = psa_mac_update(&operation, data, rec->data_len);
1764 status = psa_mac_verify_finish(&operation, data + rec->data_len,
1776 data, rec->data_len);
1789 MBEDTLS_SSL_DEBUG_BUF(4, "message mac", data + rec->data_len,
1795 if (mbedtls_ct_memcmp(data + rec->data_len, mac_expect,
1830 if (rec->data_len % transform->ivlen != 0) {
1833 rec->data_len, transform->ivlen));
1845 rec->data_offset += transform->ivlen;
1846 rec->data_len -= transform->ivlen;
1870 data, rec->data_len,
1871 data, rec->data_len, &olen);
1880 data + olen, rec->data_len - olen,
1894 data, rec->data_len, data, &olen)) != 0) {
1901 if (rec->data_len != olen) {
1910 padlen = data[rec->data_len - 1];
1914 rec->data_len,
1920 if (rec->data_len < transform->maclen + padlen + 1) {
1924 rec->data_len,
1930 rec->data_len,
1953 size_t const padding_idx = rec->data_len - padlen;
1954 size_t const num_checks = rec->data_len <= 256 ? rec->data_len : 256;
1955 size_t const start_idx = rec->data_len - num_checks;
1958 for (idx = start_idx; idx < rec->data_len; idx++) {
1983 rec->data_len -= padlen;
1993 data, rec->data_len);
2021 rec->data_len -= transform->maclen;
2022 ssl_extract_add_data_from_record(add_data, &add_data_len, rec,
2037 const size_t max_len = rec->data_len + padlen;
2044 data, rec->data_len, min_len, max_len,
2049 data, rec->data_len, min_len, max_len,
2058 rec->data_len,
2102 ret = ssl_parse_inner_plaintext(data, &rec->data_len,
2103 &rec->type);
2112 if (rec->cid_len != 0) {
2113 ret = ssl_parse_inner_plaintext(data, &rec->data_len,
2114 &rec->type);
2970 mbedtls_record rec;
2972 rec.buf = ssl->out_iv;
2973 rec.buf_len = out_buf_len - (size_t) (ssl->out_iv - ssl->out_buf);
2974 rec.data_len = ssl->out_msglen;
2975 rec.data_offset = (size_t) (ssl->out_msg - rec.buf);
2977 memcpy(&rec.ctr[0], ssl->out_ctr, sizeof(rec.ctr));
2978 mbedtls_ssl_write_version(rec.ver, ssl->conf->transport, tls_ver);
2979 rec.type = ssl->out_msgtype;
2983 rec.cid_len = 0;
2986 if ((ret = mbedtls_ssl_encrypt_buf(ssl, ssl->transform_out, &rec,
2992 if (rec.data_offset != 0) {
2998 ssl->out_msgtype = rec.type;
3000 memcpy(ssl->out_cid, rec.cid, rec.cid_len);
3002 ssl->out_msglen = len = rec.data_len;
3003 MBEDTLS_PUT_UINT16_BE(rec.data_len, ssl->out_len, 0);
3714 mbedtls_record *rec)
3767 rec->type = buf[rec_hdr_type_offset];
3771 rec->cid_len = 0;
3775 rec->type == MBEDTLS_SSL_MSG_CID) {
3805 rec->cid_len = (uint8_t) rec_hdr_cid_len;
3806 memcpy(rec->cid, buf + rec_hdr_cid_offset, rec_hdr_cid_len);
3810 if (ssl_check_record_type(rec->type)) {
3812 (unsigned) rec->type));
3820 rec->ver[0] = buf[rec_hdr_version_offset + 0];
3821 rec->ver[1] = buf[rec_hdr_version_offset + 1];
3840 memcpy(&rec->ctr[0], buf + rec_hdr_ctr_offset,
3846 memcpy(&rec->ctr[0], ssl->in_ctr, rec_hdr_ctr_len);
3853 rec->data_offset = rec_hdr_len_offset + rec_hdr_len_len;
3854 rec->data_len = MBEDTLS_GET_UINT16_BE(buf, rec_hdr_len_offset);
3855 MBEDTLS_SSL_DEBUG_BUF(4, "input record header", buf, rec->data_offset);
3859 rec->type, (unsigned) tls_version, rec->data_len));
3861 rec->buf = buf;
3862 rec->buf_len = rec->data_offset + rec->data_len;
3864 if (rec->data_len == 0) {
3882 rec_epoch = MBEDTLS_GET_UINT16_BE(rec->ctr, 0);
3886 if (len < rec->data_offset + rec->data_len) {
3891 (unsigned) (rec->data_offset + rec->data_len)));
3916 &rec->ctr[0]) != 0) {
3960 mbedtls_record *rec)
3965 rec->buf, rec->buf_len);
3975 if (rec->type == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC) {
3982 unsigned char const old_msg_type = rec->type;
3985 rec)) != 0) {
4009 ret = mbedtls_ssl_tls13_check_early_data_len(ssl, rec->data_len);
4047 if (old_msg_type != rec->type) {
4049 old_msg_type, rec->type));
4053 rec->buf + rec->data_offset, rec->data_len);
4063 if (ssl_check_record_type(rec->type)) {
4069 if (rec->data_len == 0) {
4072 && rec->type != MBEDTLS_SSL_MSG_APPLICATION_DATA) {
4135 if (rec->type == MBEDTLS_SSL_MSG_APPLICATION_DATA) {
4137 ret = mbedtls_ssl_tls13_check_early_data_len(ssl, rec->data_len);
4146 } else if (rec->type == MBEDTLS_SSL_MSG_HANDSHAKE) {
4160 if (rec->data_len > MBEDTLS_SSL_IN_CONTENT_LEN) {
4721 unsigned char *rec;
4737 rec = hs->buffering.future_record.data;
4741 if (rec == NULL) {
4766 memcpy(ssl->in_hdr, rec, rec_len);
4779 mbedtls_record const *rec)
4790 if (rec->type != MBEDTLS_SSL_MSG_HANDSHAKE) {
4800 if (rec->buf_len > (MBEDTLS_SSL_DTLS_MAX_BUFFERING -
4806 rec->buf_len, (size_t) MBEDTLS_SSL_DTLS_MAX_BUFFERING,
4814 MBEDTLS_SSL_DEBUG_BUF(3, "Buffered record", rec->buf, rec->buf_len);
4819 hs->buffering.future_record.len = rec->buf_len;
4829 memcpy(hs->buffering.future_record.data, rec->buf, rec->buf_len);
4831 hs->buffering.total_bytes_buffered += rec->buf_len;
4841 mbedtls_record rec;
4865 ret = ssl_parse_record_header(ssl, ssl->in_hdr, ssl->in_left, &rec);
4870 ret = ssl_buffer_future_record(ssl, &rec);
4887 ssl->in_msgtype = rec.type;
4889 ssl->in_len = ssl->in_cid + rec.cid_len;
4892 ssl->in_msglen = rec.data_len;
4902 ssl->next_record_offset = rec.buf_len;
4927 ssl->next_record_offset = rec.buf_len;
4937 ret = mbedtls_ssl_fetch_input(ssl, rec.buf_len);
4950 if ((ret = ssl_prepare_record_content(ssl, &rec)) != 0) {
5008 ssl->in_len = ssl->in_cid + rec.cid_len;
5014 ssl->in_msgtype = rec.type;
5019 ssl->in_hdr[0] = rec.type;
5020 ssl->in_msg = rec.buf + rec.data_offset;
5021 ssl->in_msglen = rec.data_len;
5022 MBEDTLS_PUT_UINT16_BE(rec.data_len, ssl->in_len, 0);