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, content_type_t type, |
31 | | gnutls_handshake_description_t htype, |
32 | | unsigned int epoch_rel, const void *data, |
33 | | size_t sizeofdata, size_t min_pad, |
34 | | unsigned int mflags); |
35 | | |
36 | | inline static ssize_t |
37 | | _gnutls_send_int(gnutls_session_t session, content_type_t type, |
38 | | gnutls_handshake_description_t htype, unsigned int epoch_rel, |
39 | | const void *_data, size_t data_size, unsigned int mflags) |
40 | 0 | { |
41 | 0 | return _gnutls_send_tlen_int(session, type, htype, epoch_rel, _data, |
42 | 0 | data_size, 0, mflags); |
43 | 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 Unexecuted instantiation: heartbeat.c:_gnutls_send_int Unexecuted instantiation: key_share.c:_gnutls_send_int Unexecuted instantiation: pre_shared_key.c:_gnutls_send_int Unexecuted instantiation: status_request.c:_gnutls_send_int Unexecuted instantiation: supported_versions.c:_gnutls_send_int Unexecuted instantiation: cert.c:_gnutls_send_int |
44 | | |
45 | | ssize_t _gnutls_recv_int(gnutls_session_t session, content_type_t type, |
46 | | uint8_t *data, size_t sizeofdata, void *seq, |
47 | | unsigned int ms); |
48 | | |
49 | | inline static unsigned max_record_recv_size(gnutls_session_t session) |
50 | 0 | { |
51 | 0 | unsigned size; |
52 | |
|
53 | 0 | if (session->internals.max_recv_size == 0) { |
54 | 0 | size = session->security_parameters.max_record_recv_size + |
55 | 0 | RECORD_HEADER_SIZE(session); |
56 | 0 | if (session->internals.allow_large_records != 0) |
57 | 0 | size += EXTRA_COMP_SIZE; |
58 | 0 | } else { |
59 | 0 | size = session->internals.max_recv_size; |
60 | 0 | } |
61 | |
|
62 | 0 | return size; |
63 | 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 Unexecuted instantiation: heartbeat.c:max_record_recv_size Unexecuted instantiation: key_share.c:max_record_recv_size Unexecuted instantiation: pre_shared_key.c:max_record_recv_size Unexecuted instantiation: status_request.c:max_record_recv_size Unexecuted instantiation: supported_versions.c:max_record_recv_size Unexecuted instantiation: cert.c:max_record_recv_size |
64 | | |
65 | | inline static unsigned max_decrypted_size(gnutls_session_t session) |
66 | 0 | { |
67 | 0 | unsigned size = 0; |
68 | |
|
69 | 0 | if (session->internals.allow_large_records != 0) |
70 | 0 | size += EXTRA_COMP_SIZE; |
71 | |
|
72 | 0 | size += session->security_parameters.max_record_recv_size; |
73 | |
|
74 | 0 | return size; |
75 | 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 Unexecuted instantiation: heartbeat.c:max_decrypted_size Unexecuted instantiation: key_share.c:max_decrypted_size Unexecuted instantiation: pre_shared_key.c:max_decrypted_size Unexecuted instantiation: status_request.c:max_decrypted_size Unexecuted instantiation: supported_versions.c:max_decrypted_size Unexecuted instantiation: cert.c:max_decrypted_size |
76 | | |
77 | | /* Returns the headers + any IV that the ciphersuite |
78 | | * requires */ |
79 | | inline static unsigned int get_total_headers(gnutls_session_t session) |
80 | 0 | { |
81 | 0 | int ret; |
82 | 0 | record_parameters_st *params; |
83 | 0 | unsigned total = RECORD_HEADER_SIZE(session); |
84 | |
|
85 | 0 | ret = _gnutls_epoch_get(session, EPOCH_WRITE_CURRENT, ¶ms); |
86 | 0 | if (ret < 0) { |
87 | 0 | return total; |
88 | 0 | } |
89 | | |
90 | 0 | return total + _gnutls_cipher_get_explicit_iv_size(params->cipher); |
91 | 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 Unexecuted instantiation: heartbeat.c:get_total_headers Unexecuted instantiation: key_share.c:get_total_headers Unexecuted instantiation: pre_shared_key.c:get_total_headers Unexecuted instantiation: status_request.c:get_total_headers Unexecuted instantiation: supported_versions.c:get_total_headers Unexecuted instantiation: cert.c:get_total_headers |
92 | | |
93 | | inline static unsigned int get_total_headers2(gnutls_session_t session, |
94 | | record_parameters_st *params) |
95 | 0 | { |
96 | 0 | unsigned total = RECORD_HEADER_SIZE(session); |
97 | |
|
98 | 0 | return total + _gnutls_cipher_get_explicit_iv_size(params->cipher); |
99 | 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 Unexecuted instantiation: heartbeat.c:get_total_headers2 Unexecuted instantiation: key_share.c:get_total_headers2 Unexecuted instantiation: pre_shared_key.c:get_total_headers2 Unexecuted instantiation: status_request.c:get_total_headers2 Unexecuted instantiation: supported_versions.c:get_total_headers2 Unexecuted instantiation: cert.c:get_total_headers2 |
100 | | |
101 | | inline static void session_invalidate(gnutls_session_t session) |
102 | 0 | { |
103 | 0 | session->internals.invalid_connection = 1; |
104 | 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 Unexecuted instantiation: heartbeat.c:session_invalidate Unexecuted instantiation: key_share.c:session_invalidate Unexecuted instantiation: pre_shared_key.c:session_invalidate Unexecuted instantiation: status_request.c:session_invalidate Unexecuted instantiation: supported_versions.c:session_invalidate Unexecuted instantiation: cert.c:session_invalidate |
105 | | |
106 | | #endif /* GNUTLS_LIB_RECORD_H */ |