Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (C) 2000-2012 Free Software Foundation, Inc. |
3 | | * |
4 | | * Author: Nikos Mavrogiannopoulos |
5 | | * |
6 | | * This file is part of GnuTLS. |
7 | | * |
8 | | * The GnuTLS is free software; you can redistribute it and/or |
9 | | * modify it under the terms of the GNU Lesser General Public License |
10 | | * as published by the Free Software Foundation; either version 2.1 of |
11 | | * the License, or (at your option) any later version. |
12 | | * |
13 | | * This library is distributed in the hope that it will be useful, but |
14 | | * WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | | * Lesser General Public License for more details. |
17 | | * |
18 | | * You should have received a copy of the GNU Lesser General Public License |
19 | | * along with this program. If not, see <https://www.gnu.org/licenses/> |
20 | | * |
21 | | */ |
22 | | |
23 | | #ifndef GNUTLS_LIB_RECORD_H |
24 | | # define GNUTLS_LIB_RECORD_H |
25 | | |
26 | | # include <gnutls/gnutls.h> |
27 | | # include <buffers.h> |
28 | | # include <constate.h> |
29 | | |
30 | | ssize_t _gnutls_send_tlen_int(gnutls_session_t session, |
31 | | content_type_t type, |
32 | | gnutls_handshake_description_t htype, |
33 | | unsigned int epoch_rel, const void *data, |
34 | | size_t sizeofdata, size_t min_pad, |
35 | | unsigned int mflags); |
36 | | |
37 | | inline static ssize_t |
38 | | _gnutls_send_int(gnutls_session_t session, content_type_t type, |
39 | | gnutls_handshake_description_t htype, |
40 | | unsigned int epoch_rel, const void *_data, |
41 | | size_t data_size, unsigned int mflags) |
42 | 0 | { |
43 | 0 | return _gnutls_send_tlen_int(session, type, htype, epoch_rel, |
44 | 0 | _data, data_size, 0, mflags); |
45 | 0 | } Unexecuted instantiation: record.c:_gnutls_send_int Unexecuted instantiation: cipher.c:_gnutls_send_int Unexecuted instantiation: handshake-tls13.c:_gnutls_send_int Unexecuted instantiation: buffers.c:_gnutls_send_int Unexecuted instantiation: handshake.c:_gnutls_send_int Unexecuted instantiation: kx.c:_gnutls_send_int Unexecuted instantiation: sslv2_compat.c:_gnutls_send_int Unexecuted instantiation: constate.c:_gnutls_send_int Unexecuted instantiation: alert.c:_gnutls_send_int Unexecuted instantiation: state.c:_gnutls_send_int Unexecuted instantiation: cert-cred-x509.c:_gnutls_send_int Unexecuted instantiation: dtls.c:_gnutls_send_int Unexecuted instantiation: system_override.c:_gnutls_send_int Unexecuted instantiation: prf.c:_gnutls_send_int Unexecuted instantiation: handshake-checks.c:_gnutls_send_int Unexecuted instantiation: dtls-sw.c:_gnutls_send_int Unexecuted instantiation: ocsp-api.c:_gnutls_send_int Unexecuted instantiation: encrypted_extensions.c:_gnutls_send_int Unexecuted instantiation: certificate_request.c:_gnutls_send_int Unexecuted instantiation: certificate_verify.c:_gnutls_send_int Unexecuted instantiation: finished.c:_gnutls_send_int Unexecuted instantiation: key_update.c:_gnutls_send_int Unexecuted instantiation: hello_retry.c:_gnutls_send_int Unexecuted instantiation: session_ticket.c:_gnutls_send_int Unexecuted instantiation: certificate.c:_gnutls_send_int Unexecuted instantiation: early_data.c:_gnutls_send_int Unexecuted instantiation: post_handshake.c:_gnutls_send_int |
46 | | |
47 | | ssize_t _gnutls_recv_int(gnutls_session_t session, content_type_t type, |
48 | | uint8_t * data, |
49 | | size_t sizeofdata, void *seq, unsigned int ms); |
50 | | |
51 | | inline static unsigned max_record_recv_size(gnutls_session_t session) |
52 | 0 | { |
53 | 0 | unsigned size; |
54 | |
|
55 | 0 | if (session->internals.max_recv_size == 0) { |
56 | 0 | size = |
57 | 0 | session->security_parameters.max_record_recv_size + |
58 | 0 | RECORD_HEADER_SIZE(session); |
59 | 0 | if (session->internals.allow_large_records != 0) |
60 | 0 | size += EXTRA_COMP_SIZE; |
61 | 0 | } else { |
62 | 0 | size = session->internals.max_recv_size; |
63 | 0 | } |
64 | |
|
65 | 0 | return size; |
66 | 0 | } Unexecuted instantiation: record.c:max_record_recv_size Unexecuted instantiation: cipher.c:max_record_recv_size Unexecuted instantiation: handshake-tls13.c:max_record_recv_size Unexecuted instantiation: buffers.c:max_record_recv_size Unexecuted instantiation: handshake.c:max_record_recv_size Unexecuted instantiation: kx.c:max_record_recv_size Unexecuted instantiation: sslv2_compat.c:max_record_recv_size Unexecuted instantiation: constate.c:max_record_recv_size Unexecuted instantiation: alert.c:max_record_recv_size Unexecuted instantiation: state.c:max_record_recv_size Unexecuted instantiation: cert-cred-x509.c:max_record_recv_size Unexecuted instantiation: dtls.c:max_record_recv_size Unexecuted instantiation: system_override.c:max_record_recv_size Unexecuted instantiation: prf.c:max_record_recv_size Unexecuted instantiation: handshake-checks.c:max_record_recv_size Unexecuted instantiation: dtls-sw.c:max_record_recv_size Unexecuted instantiation: ocsp-api.c:max_record_recv_size Unexecuted instantiation: encrypted_extensions.c:max_record_recv_size Unexecuted instantiation: certificate_request.c:max_record_recv_size Unexecuted instantiation: certificate_verify.c:max_record_recv_size Unexecuted instantiation: finished.c:max_record_recv_size Unexecuted instantiation: key_update.c:max_record_recv_size Unexecuted instantiation: hello_retry.c:max_record_recv_size Unexecuted instantiation: session_ticket.c:max_record_recv_size Unexecuted instantiation: certificate.c:max_record_recv_size Unexecuted instantiation: early_data.c:max_record_recv_size Unexecuted instantiation: post_handshake.c:max_record_recv_size |
67 | | |
68 | | inline static unsigned max_decrypted_size(gnutls_session_t session) |
69 | 0 | { |
70 | 0 | unsigned size = 0; |
71 | |
|
72 | 0 | if (session->internals.allow_large_records != 0) |
73 | 0 | size += EXTRA_COMP_SIZE; |
74 | |
|
75 | 0 | size += session->security_parameters.max_record_recv_size; |
76 | |
|
77 | 0 | return size; |
78 | 0 | } Unexecuted instantiation: record.c:max_decrypted_size Unexecuted instantiation: cipher.c:max_decrypted_size Unexecuted instantiation: handshake-tls13.c:max_decrypted_size Unexecuted instantiation: buffers.c:max_decrypted_size Unexecuted instantiation: handshake.c:max_decrypted_size Unexecuted instantiation: kx.c:max_decrypted_size Unexecuted instantiation: sslv2_compat.c:max_decrypted_size Unexecuted instantiation: constate.c:max_decrypted_size Unexecuted instantiation: alert.c:max_decrypted_size Unexecuted instantiation: state.c:max_decrypted_size Unexecuted instantiation: cert-cred-x509.c:max_decrypted_size Unexecuted instantiation: dtls.c:max_decrypted_size Unexecuted instantiation: system_override.c:max_decrypted_size Unexecuted instantiation: prf.c:max_decrypted_size Unexecuted instantiation: handshake-checks.c:max_decrypted_size Unexecuted instantiation: dtls-sw.c:max_decrypted_size Unexecuted instantiation: ocsp-api.c:max_decrypted_size Unexecuted instantiation: encrypted_extensions.c:max_decrypted_size Unexecuted instantiation: certificate_request.c:max_decrypted_size Unexecuted instantiation: certificate_verify.c:max_decrypted_size Unexecuted instantiation: finished.c:max_decrypted_size Unexecuted instantiation: key_update.c:max_decrypted_size Unexecuted instantiation: hello_retry.c:max_decrypted_size Unexecuted instantiation: session_ticket.c:max_decrypted_size Unexecuted instantiation: certificate.c:max_decrypted_size Unexecuted instantiation: early_data.c:max_decrypted_size Unexecuted instantiation: post_handshake.c:max_decrypted_size |
79 | | |
80 | | /* Returns the headers + any IV that the ciphersuite |
81 | | * requires */ |
82 | | inline static |
83 | | unsigned int get_total_headers(gnutls_session_t session) |
84 | 0 | { |
85 | 0 | int ret; |
86 | 0 | record_parameters_st *params; |
87 | 0 | unsigned total = RECORD_HEADER_SIZE(session); |
88 | |
|
89 | 0 | ret = _gnutls_epoch_get(session, EPOCH_WRITE_CURRENT, ¶ms); |
90 | 0 | if (ret < 0) { |
91 | 0 | return total; |
92 | 0 | } |
93 | | |
94 | 0 | return total + _gnutls_cipher_get_explicit_iv_size(params->cipher); |
95 | 0 | } Unexecuted instantiation: record.c:get_total_headers Unexecuted instantiation: cipher.c:get_total_headers Unexecuted instantiation: handshake-tls13.c:get_total_headers Unexecuted instantiation: buffers.c:get_total_headers Unexecuted instantiation: handshake.c:get_total_headers Unexecuted instantiation: kx.c:get_total_headers Unexecuted instantiation: sslv2_compat.c:get_total_headers Unexecuted instantiation: constate.c:get_total_headers Unexecuted instantiation: alert.c:get_total_headers Unexecuted instantiation: state.c:get_total_headers Unexecuted instantiation: cert-cred-x509.c:get_total_headers Unexecuted instantiation: dtls.c:get_total_headers Unexecuted instantiation: system_override.c:get_total_headers Unexecuted instantiation: prf.c:get_total_headers Unexecuted instantiation: handshake-checks.c:get_total_headers Unexecuted instantiation: dtls-sw.c:get_total_headers Unexecuted instantiation: ocsp-api.c:get_total_headers Unexecuted instantiation: encrypted_extensions.c:get_total_headers Unexecuted instantiation: certificate_request.c:get_total_headers Unexecuted instantiation: certificate_verify.c:get_total_headers Unexecuted instantiation: finished.c:get_total_headers Unexecuted instantiation: key_update.c:get_total_headers Unexecuted instantiation: hello_retry.c:get_total_headers Unexecuted instantiation: session_ticket.c:get_total_headers Unexecuted instantiation: certificate.c:get_total_headers Unexecuted instantiation: early_data.c:get_total_headers Unexecuted instantiation: post_handshake.c:get_total_headers |
96 | | |
97 | | inline static |
98 | | unsigned int get_total_headers2(gnutls_session_t session, |
99 | | record_parameters_st * params) |
100 | 0 | { |
101 | 0 | unsigned total = RECORD_HEADER_SIZE(session); |
102 | |
|
103 | 0 | return total + _gnutls_cipher_get_explicit_iv_size(params->cipher); |
104 | 0 | } Unexecuted instantiation: record.c:get_total_headers2 Unexecuted instantiation: cipher.c:get_total_headers2 Unexecuted instantiation: handshake-tls13.c:get_total_headers2 Unexecuted instantiation: buffers.c:get_total_headers2 Unexecuted instantiation: handshake.c:get_total_headers2 Unexecuted instantiation: kx.c:get_total_headers2 Unexecuted instantiation: sslv2_compat.c:get_total_headers2 Unexecuted instantiation: constate.c:get_total_headers2 Unexecuted instantiation: alert.c:get_total_headers2 Unexecuted instantiation: state.c:get_total_headers2 Unexecuted instantiation: cert-cred-x509.c:get_total_headers2 Unexecuted instantiation: dtls.c:get_total_headers2 Unexecuted instantiation: system_override.c:get_total_headers2 Unexecuted instantiation: prf.c:get_total_headers2 Unexecuted instantiation: handshake-checks.c:get_total_headers2 Unexecuted instantiation: dtls-sw.c:get_total_headers2 Unexecuted instantiation: ocsp-api.c:get_total_headers2 Unexecuted instantiation: encrypted_extensions.c:get_total_headers2 Unexecuted instantiation: certificate_request.c:get_total_headers2 Unexecuted instantiation: certificate_verify.c:get_total_headers2 Unexecuted instantiation: finished.c:get_total_headers2 Unexecuted instantiation: key_update.c:get_total_headers2 Unexecuted instantiation: hello_retry.c:get_total_headers2 Unexecuted instantiation: session_ticket.c:get_total_headers2 Unexecuted instantiation: certificate.c:get_total_headers2 Unexecuted instantiation: early_data.c:get_total_headers2 Unexecuted instantiation: post_handshake.c:get_total_headers2 |
105 | | |
106 | | inline static void session_invalidate(gnutls_session_t session) |
107 | 0 | { |
108 | 0 | session->internals.invalid_connection = 1; |
109 | 0 | } Unexecuted instantiation: record.c:session_invalidate Unexecuted instantiation: cipher.c:session_invalidate Unexecuted instantiation: handshake-tls13.c:session_invalidate Unexecuted instantiation: buffers.c:session_invalidate Unexecuted instantiation: handshake.c:session_invalidate Unexecuted instantiation: kx.c:session_invalidate Unexecuted instantiation: sslv2_compat.c:session_invalidate Unexecuted instantiation: constate.c:session_invalidate Unexecuted instantiation: alert.c:session_invalidate Unexecuted instantiation: state.c:session_invalidate Unexecuted instantiation: cert-cred-x509.c:session_invalidate Unexecuted instantiation: dtls.c:session_invalidate Unexecuted instantiation: system_override.c:session_invalidate Unexecuted instantiation: prf.c:session_invalidate Unexecuted instantiation: handshake-checks.c:session_invalidate Unexecuted instantiation: dtls-sw.c:session_invalidate Unexecuted instantiation: ocsp-api.c:session_invalidate Unexecuted instantiation: encrypted_extensions.c:session_invalidate Unexecuted instantiation: certificate_request.c:session_invalidate Unexecuted instantiation: certificate_verify.c:session_invalidate Unexecuted instantiation: finished.c:session_invalidate Unexecuted instantiation: key_update.c:session_invalidate Unexecuted instantiation: hello_retry.c:session_invalidate Unexecuted instantiation: session_ticket.c:session_invalidate Unexecuted instantiation: certificate.c:session_invalidate Unexecuted instantiation: early_data.c:session_invalidate Unexecuted instantiation: post_handshake.c:session_invalidate |
110 | | |
111 | | #endif /* GNUTLS_LIB_RECORD_H */ |