Lines Matching refs:rec

92                                     mbedtls_record *rec );
113 mbedtls_record rec; in mbedtls_ssl_check_record() local
115 ret = ssl_parse_record_header( ssl, buf, buflen, &rec ); in mbedtls_ssl_check_record()
124 ret = mbedtls_ssl_decrypt_buf( ssl, ssl->transform_in, &rec ); in mbedtls_ssl_check_record()
164 mbedtls_record const *rec );
386 mbedtls_record *rec, in ssl_extract_add_data_from_record() argument
423 size_t ad_len_field = rec->data_len; in ssl_extract_add_data_from_record()
438 memcpy( cur, rec->ctr, sizeof( rec->ctr ) ); in ssl_extract_add_data_from_record()
439 cur += sizeof( rec->ctr ); in ssl_extract_add_data_from_record()
442 *cur = rec->type; in ssl_extract_add_data_from_record()
445 memcpy( cur, rec->ver, sizeof( rec->ver ) ); in ssl_extract_add_data_from_record()
446 cur += sizeof( rec->ver ); in ssl_extract_add_data_from_record()
449 if( rec->cid_len != 0 ) in ssl_extract_add_data_from_record()
451 memcpy( cur, rec->cid, rec->cid_len ); in ssl_extract_add_data_from_record()
452 cur += rec->cid_len; in ssl_extract_add_data_from_record()
454 *cur = rec->cid_len; in ssl_extract_add_data_from_record()
523 mbedtls_record *rec, in mbedtls_ssl_encrypt_buf() argument
555 if( rec == NULL in mbedtls_ssl_encrypt_buf()
556 || rec->buf == NULL in mbedtls_ssl_encrypt_buf()
557 || rec->buf_len < rec->data_offset in mbedtls_ssl_encrypt_buf()
558 || rec->buf_len - rec->data_offset < rec->data_len in mbedtls_ssl_encrypt_buf()
560 || rec->cid_len != 0 in mbedtls_ssl_encrypt_buf()
568 data = rec->buf + rec->data_offset; in mbedtls_ssl_encrypt_buf()
569 post_avail = rec->buf_len - ( rec->data_len + rec->data_offset ); in mbedtls_ssl_encrypt_buf()
571 data, rec->data_len ); in mbedtls_ssl_encrypt_buf()
575 if( rec->data_len > MBEDTLS_SSL_OUT_CONTENT_LEN ) in mbedtls_ssl_encrypt_buf()
579 rec->data_len, in mbedtls_ssl_encrypt_buf()
600 ssl_compute_padding_length( rec->data_len, in mbedtls_ssl_encrypt_buf()
603 &rec->data_len, in mbedtls_ssl_encrypt_buf()
605 rec->type, in mbedtls_ssl_encrypt_buf()
611 rec->type = MBEDTLS_SSL_MSG_APPLICATION_DATA; in mbedtls_ssl_encrypt_buf()
619 rec->cid_len = transform->out_cid_len; in mbedtls_ssl_encrypt_buf()
620 memcpy( rec->cid, transform->out_cid, transform->out_cid_len ); in mbedtls_ssl_encrypt_buf()
621 MBEDTLS_SSL_DEBUG_BUF( 3, "CID", rec->cid, rec->cid_len ); in mbedtls_ssl_encrypt_buf()
623 if( rec->cid_len != 0 ) in mbedtls_ssl_encrypt_buf()
626 ssl_compute_padding_length( rec->data_len, in mbedtls_ssl_encrypt_buf()
636 &rec->data_len, in mbedtls_ssl_encrypt_buf()
638 rec->type, in mbedtls_ssl_encrypt_buf()
644 rec->type = MBEDTLS_SSL_MSG_CID; in mbedtls_ssl_encrypt_buf()
648 post_avail = rec->buf_len - ( rec->data_len + rec->data_offset ); in mbedtls_ssl_encrypt_buf()
669 ssl_extract_add_data_from_record( add_data, &add_data_len, rec, in mbedtls_ssl_encrypt_buf()
675 mbedtls_md_hmac_update( &transform->md_ctx_enc, data, rec->data_len ); in mbedtls_ssl_encrypt_buf()
679 memcpy( data + rec->data_len, mac, transform->maclen ); in mbedtls_ssl_encrypt_buf()
682 MBEDTLS_SSL_DEBUG_BUF( 4, "computed mac", data + rec->data_len, in mbedtls_ssl_encrypt_buf()
685 rec->data_len += transform->maclen; in mbedtls_ssl_encrypt_buf()
701 rec->data_len, 0 ) ); in mbedtls_ssl_encrypt_buf()
705 data, rec->data_len, in mbedtls_ssl_encrypt_buf()
712 if( rec->data_len != olen ) in mbedtls_ssl_encrypt_buf()
754 dynamic_iv = rec->ctr; in mbedtls_ssl_encrypt_buf()
755 dynamic_iv_len = sizeof( rec->ctr ); in mbedtls_ssl_encrypt_buf()
767 ssl_extract_add_data_from_record( add_data, &add_data_len, rec, in mbedtls_ssl_encrypt_buf()
780 rec->data_len ) ); in mbedtls_ssl_encrypt_buf()
789 data, rec->data_len, /* src */ in mbedtls_ssl_encrypt_buf()
790 data, rec->buf_len - (data - rec->buf), /* dst */ in mbedtls_ssl_encrypt_buf()
791 &rec->data_len, in mbedtls_ssl_encrypt_buf()
798 data + rec->data_len - transform->taglen, in mbedtls_ssl_encrypt_buf()
808 if( rec->data_offset < dynamic_iv_len ) in mbedtls_ssl_encrypt_buf()
815 rec->data_offset -= dynamic_iv_len; in mbedtls_ssl_encrypt_buf()
816 rec->data_len += dynamic_iv_len; in mbedtls_ssl_encrypt_buf()
832 padlen = transform->ivlen - ( rec->data_len + 1 ) % transform->ivlen; in mbedtls_ssl_encrypt_buf()
844 data[rec->data_len + i] = (unsigned char) padlen; in mbedtls_ssl_encrypt_buf()
846 rec->data_len += padlen + 1; in mbedtls_ssl_encrypt_buf()
860 if( rec->data_offset < transform->ivlen ) in mbedtls_ssl_encrypt_buf()
879 rec->data_len, transform->ivlen, in mbedtls_ssl_encrypt_buf()
885 data, rec->data_len, in mbedtls_ssl_encrypt_buf()
892 if( rec->data_len != olen ) in mbedtls_ssl_encrypt_buf()
899 rec->data_offset -= transform->ivlen; in mbedtls_ssl_encrypt_buf()
900 rec->data_len += transform->ivlen; in mbedtls_ssl_encrypt_buf()
923 rec, transform->minor_ver, in mbedtls_ssl_encrypt_buf()
933 data, rec->data_len ); in mbedtls_ssl_encrypt_buf()
937 memcpy( data + rec->data_len, mac, transform->maclen ); in mbedtls_ssl_encrypt_buf()
939 rec->data_len += transform->maclen; in mbedtls_ssl_encrypt_buf()
1202 mbedtls_record *rec ) in mbedtls_ssl_decrypt_buf() argument
1220 if( rec == NULL || in mbedtls_ssl_decrypt_buf()
1221 rec->buf == NULL || in mbedtls_ssl_decrypt_buf()
1222 rec->buf_len < rec->data_offset || in mbedtls_ssl_decrypt_buf()
1223 rec->buf_len - rec->data_offset < rec->data_len ) in mbedtls_ssl_decrypt_buf()
1229 data = rec->buf + rec->data_offset; in mbedtls_ssl_decrypt_buf()
1236 if( rec->cid_len != transform->in_cid_len || in mbedtls_ssl_decrypt_buf()
1237 memcmp( rec->cid, transform->in_cid, rec->cid_len ) != 0 ) in mbedtls_ssl_decrypt_buf()
1250 data, rec->data_len, in mbedtls_ssl_decrypt_buf()
1257 if( rec->data_len != olen ) in mbedtls_ssl_decrypt_buf()
1284 dynamic_iv_len = sizeof( rec->ctr ); in mbedtls_ssl_decrypt_buf()
1287 if( rec->data_len < dynamic_iv_len ) in mbedtls_ssl_decrypt_buf()
1291 rec->data_len, in mbedtls_ssl_decrypt_buf()
1298 rec->data_offset += dynamic_iv_len; in mbedtls_ssl_decrypt_buf()
1299 rec->data_len -= dynamic_iv_len; in mbedtls_ssl_decrypt_buf()
1303 dynamic_iv = rec->ctr; in mbedtls_ssl_decrypt_buf()
1307 if( rec->data_len < transform->taglen ) in mbedtls_ssl_decrypt_buf()
1311 rec->data_len, in mbedtls_ssl_decrypt_buf()
1315 rec->data_len -= transform->taglen; in mbedtls_ssl_decrypt_buf()
1330 ssl_extract_add_data_from_record( add_data, &add_data_len, rec, in mbedtls_ssl_decrypt_buf()
1343 MBEDTLS_SSL_DEBUG_BUF( 4, "TAG used", data + rec->data_len, in mbedtls_ssl_decrypt_buf()
1352 data, rec->data_len + transform->taglen, /* src */ in mbedtls_ssl_decrypt_buf()
1353 data, rec->buf_len - (data - rec->buf), &olen, /* dst */ in mbedtls_ssl_decrypt_buf()
1366 if( olen != rec->data_len ) in mbedtls_ssl_decrypt_buf()
1408 if( rec->data_len < minlen + transform->ivlen || in mbedtls_ssl_decrypt_buf()
1409 rec->data_len < minlen + transform->maclen + 1 ) in mbedtls_ssl_decrypt_buf()
1414 "+ 1 ) ( + expl IV )", rec->data_len, in mbedtls_ssl_decrypt_buf()
1440 rec->data_len -= transform->maclen; in mbedtls_ssl_decrypt_buf()
1441 ssl_extract_add_data_from_record( add_data, &add_data_len, rec, in mbedtls_ssl_decrypt_buf()
1451 data, rec->data_len ); in mbedtls_ssl_decrypt_buf()
1455 MBEDTLS_SSL_DEBUG_BUF( 4, "message mac", data + rec->data_len, in mbedtls_ssl_decrypt_buf()
1461 if( mbedtls_ssl_safer_memcmp( data + rec->data_len, mac_expect, in mbedtls_ssl_decrypt_buf()
1478 if( rec->data_len % transform->ivlen != 0 ) in mbedtls_ssl_decrypt_buf()
1482 rec->data_len, transform->ivlen ) ); in mbedtls_ssl_decrypt_buf()
1494 rec->data_offset += transform->ivlen; in mbedtls_ssl_decrypt_buf()
1495 rec->data_len -= transform->ivlen; in mbedtls_ssl_decrypt_buf()
1502 data, rec->data_len, data, &olen ) ) != 0 ) in mbedtls_ssl_decrypt_buf()
1509 if( rec->data_len != olen ) in mbedtls_ssl_decrypt_buf()
1519 padlen = data[rec->data_len - 1]; in mbedtls_ssl_decrypt_buf()
1524 rec->data_len, in mbedtls_ssl_decrypt_buf()
1532 if( rec->data_len < transform->maclen + padlen + 1 ) in mbedtls_ssl_decrypt_buf()
1537 rec->data_len, in mbedtls_ssl_decrypt_buf()
1544 rec->data_len, in mbedtls_ssl_decrypt_buf()
1567 size_t const padding_idx = rec->data_len - padlen; in mbedtls_ssl_decrypt_buf()
1568 size_t const num_checks = rec->data_len <= 256 ? rec->data_len : 256; in mbedtls_ssl_decrypt_buf()
1569 size_t const start_idx = rec->data_len - num_checks; in mbedtls_ssl_decrypt_buf()
1572 for( idx = start_idx; idx < rec->data_len; idx++ ) in mbedtls_ssl_decrypt_buf()
1596 rec->data_len -= padlen; in mbedtls_ssl_decrypt_buf()
1607 data, rec->data_len ); in mbedtls_ssl_decrypt_buf()
1633 rec->data_len -= transform->maclen; in mbedtls_ssl_decrypt_buf()
1634 ssl_extract_add_data_from_record( add_data, &add_data_len, rec, in mbedtls_ssl_decrypt_buf()
1649 const size_t max_len = rec->data_len + padlen; in mbedtls_ssl_decrypt_buf()
1654 data, rec->data_len, min_len, max_len, in mbedtls_ssl_decrypt_buf()
1663 rec->data_len, in mbedtls_ssl_decrypt_buf()
1702 ret = ssl_parse_inner_plaintext( data, &rec->data_len, in mbedtls_ssl_decrypt_buf()
1703 &rec->type ); in mbedtls_ssl_decrypt_buf()
1711 if( rec->cid_len != 0 ) in mbedtls_ssl_decrypt_buf()
1713 ret = ssl_parse_inner_plaintext( data, &rec->data_len, in mbedtls_ssl_decrypt_buf()
1714 &rec->type ); in mbedtls_ssl_decrypt_buf()
2578 mbedtls_record rec; in mbedtls_ssl_write_record() local
2580 rec.buf = ssl->out_iv; in mbedtls_ssl_write_record()
2581 rec.buf_len = out_buf_len - ( ssl->out_iv - ssl->out_buf ); in mbedtls_ssl_write_record()
2582 rec.data_len = ssl->out_msglen; in mbedtls_ssl_write_record()
2583 rec.data_offset = ssl->out_msg - rec.buf; in mbedtls_ssl_write_record()
2585 memcpy( &rec.ctr[0], ssl->out_ctr, sizeof( rec.ctr ) ); in mbedtls_ssl_write_record()
2587 ssl->conf->transport, rec.ver ); in mbedtls_ssl_write_record()
2588 rec.type = ssl->out_msgtype; in mbedtls_ssl_write_record()
2592 rec.cid_len = 0; in mbedtls_ssl_write_record()
2595 if( ( ret = mbedtls_ssl_encrypt_buf( ssl, ssl->transform_out, &rec, in mbedtls_ssl_write_record()
2602 if( rec.data_offset != 0 ) in mbedtls_ssl_write_record()
2609 ssl->out_msgtype = rec.type; in mbedtls_ssl_write_record()
2611 memcpy( ssl->out_cid, rec.cid, rec.cid_len ); in mbedtls_ssl_write_record()
2613 ssl->out_msglen = len = rec.data_len; in mbedtls_ssl_write_record()
2614 MBEDTLS_PUT_UINT16_BE( rec.data_len, ssl->out_len, 0 ); in mbedtls_ssl_write_record()
3307 mbedtls_record *rec ) in ssl_parse_record_header() argument
3361 rec->type = buf[ rec_hdr_type_offset ]; in ssl_parse_record_header()
3365 rec->cid_len = 0; in ssl_parse_record_header()
3369 rec->type == MBEDTLS_SSL_MSG_CID ) in ssl_parse_record_header()
3399 rec->cid_len = (uint8_t) rec_hdr_cid_len; in ssl_parse_record_header()
3400 memcpy( rec->cid, buf + rec_hdr_cid_offset, rec_hdr_cid_len ); in ssl_parse_record_header()
3405 if( ssl_check_record_type( rec->type ) ) in ssl_parse_record_header()
3408 (unsigned) rec->type ) ); in ssl_parse_record_header()
3417 rec->ver[0] = buf[ rec_hdr_version_offset + 0 ]; in ssl_parse_record_header()
3418 rec->ver[1] = buf[ rec_hdr_version_offset + 1 ]; in ssl_parse_record_header()
3421 &rec->ver[0] ); in ssl_parse_record_header()
3443 memcpy( &rec->ctr[0], buf + rec_hdr_ctr_offset, in ssl_parse_record_header()
3450 memcpy( &rec->ctr[0], ssl->in_ctr, rec_hdr_ctr_len ); in ssl_parse_record_header()
3457 rec->data_offset = rec_hdr_len_offset + rec_hdr_len_len; in ssl_parse_record_header()
3458 rec->data_len = ( (size_t) buf[ rec_hdr_len_offset + 0 ] << 8 ) | in ssl_parse_record_header()
3460 MBEDTLS_SSL_DEBUG_BUF( 4, "input record header", buf, rec->data_offset ); in ssl_parse_record_header()
3464 rec->type, in ssl_parse_record_header()
3465 major_ver, minor_ver, rec->data_len ) ); in ssl_parse_record_header()
3467 rec->buf = buf; in ssl_parse_record_header()
3468 rec->buf_len = rec->data_offset + rec->data_len; in ssl_parse_record_header()
3470 if( rec->data_len == 0 ) in ssl_parse_record_header()
3488 rec_epoch = ( rec->ctr[0] << 8 ) | rec->ctr[1]; in ssl_parse_record_header()
3492 if( len < rec->data_offset + rec->data_len ) in ssl_parse_record_header()
3496 (unsigned)( rec->data_offset + rec->data_len ) ) ); in ssl_parse_record_header()
3523 &rec->ctr[0] ) != 0 ) in ssl_parse_record_header()
3567 mbedtls_record *rec ) in ssl_prepare_record_content() argument
3572 rec->buf, rec->buf_len ); in ssl_prepare_record_content()
3576 unsigned char const old_msg_type = rec->type; in ssl_prepare_record_content()
3579 rec ) ) != 0 ) in ssl_prepare_record_content()
3596 if( old_msg_type != rec->type ) in ssl_prepare_record_content()
3599 old_msg_type, rec->type ) ); in ssl_prepare_record_content()
3603 rec->buf + rec->data_offset, rec->data_len ); in ssl_prepare_record_content()
3613 if( ssl_check_record_type( rec->type ) ) in ssl_prepare_record_content()
3620 if( rec->data_len == 0 ) in ssl_prepare_record_content()
3624 && rec->type != MBEDTLS_SSL_MSG_APPLICATION_DATA ) in ssl_prepare_record_content()
4260 unsigned char * rec; in ssl_load_buffered_record() local
4274 rec = hs->buffering.future_record.data; in ssl_load_buffered_record()
4278 if( rec == NULL ) in ssl_load_buffered_record()
4303 memcpy( ssl->in_hdr, rec, rec_len ); in ssl_load_buffered_record()
4315 mbedtls_record const *rec ) in ssl_buffer_future_record() argument
4325 if( rec->type != MBEDTLS_SSL_MSG_HANDSHAKE ) in ssl_buffer_future_record()
4333 if( rec->buf_len > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - in ssl_buffer_future_record()
4340 rec->buf_len, (size_t) MBEDTLS_SSL_DTLS_MAX_BUFFERING, in ssl_buffer_future_record()
4348 MBEDTLS_SSL_DEBUG_BUF( 3, "Buffered record", rec->buf, rec->buf_len ); in ssl_buffer_future_record()
4353 hs->buffering.future_record.len = rec->buf_len; in ssl_buffer_future_record()
4364 memcpy( hs->buffering.future_record.data, rec->buf, rec->buf_len ); in ssl_buffer_future_record()
4366 hs->buffering.total_bytes_buffered += rec->buf_len; in ssl_buffer_future_record()
4375 mbedtls_record rec; in ssl_get_next_record() local
4399 ret = ssl_parse_record_header( ssl, ssl->in_hdr, ssl->in_left, &rec ); in ssl_get_next_record()
4407 ret = ssl_buffer_future_record( ssl, &rec ); in ssl_get_next_record()
4424 ssl->in_msgtype = rec.type; in ssl_get_next_record()
4426 ssl->in_len = ssl->in_cid + rec.cid_len; in ssl_get_next_record()
4429 ssl->in_msglen = rec.data_len; in ssl_get_next_record()
4438 ssl->next_record_offset = rec.buf_len; in ssl_get_next_record()
4467 ssl->next_record_offset = rec.buf_len; in ssl_get_next_record()
4479 ret = mbedtls_ssl_fetch_input( ssl, rec.buf_len ); in ssl_get_next_record()
4493 if( ( ret = ssl_prepare_record_content( ssl, &rec ) ) != 0 ) in ssl_get_next_record()
4559 ssl->in_len = ssl->in_cid + rec.cid_len; in ssl_get_next_record()
4565 ssl->in_msgtype = rec.type; in ssl_get_next_record()
4570 ssl->in_hdr[0] = rec.type; in ssl_get_next_record()
4571 ssl->in_msg = rec.buf + rec.data_offset; in ssl_get_next_record()
4572 ssl->in_msglen = rec.data_len; in ssl_get_next_record()
4573 MBEDTLS_PUT_UINT16_BE( rec.data_len, ssl->in_len, 0 ); in ssl_get_next_record()