OpenVAS Scanner  22.7.9
network.h
Go to the documentation of this file.
1 /* SPDX-FileCopyrightText: 2023 Greenbone AG
2  * SPDX-FileCopyrightText: 1998-2007 Tenable Network Security, Inc.
3  *
4  * SPDX-License-Identifier: GPL-2.0-or-later
5  */
6 
12 #ifndef MISC_NETWORK_H
13 #define MISC_NETWORK_H
14 
15 #include "scanneraux.h"
16 
17 #include <gnutls/gnutls.h>
18 #include <gnutls/x509.h>
19 #include <netinet/in.h> /* struct in_addr, struct in6_addr */
20 #include <sys/select.h> /* at least for fd_set */
21 
22 /*
23  * Type of "transport layer", for encapsulated connections
24  * Only SSL is supported at this time.
25  * (Bad) examples of other layers could be SOCKS, httptunnel, icmptunnel,
26  * RMI over HTTP, DCOM over HTTP, TCP over TCP, etc.
27  */
28 typedef enum openvas_encaps
29 {
30  OPENVAS_ENCAPS_AUTO = 0, /* Request auto detection. */
32  OPENVAS_ENCAPS_SSLv23, /* Ask for compatibility options */
39  OPENVAS_ENCAPS_TLScustom, /* SSL/TLS using custom priorities. */
42 
43 #define IS_ENCAPS_SSL(x) \
44  ((x) >= OPENVAS_ENCAPS_SSLv23 && (x) <= OPENVAS_ENCAPS_TLScustom)
45 
46 /* Define FLAGS for setting other priorities in
47  open_stream_connection_ext */
48 #define NO_PRIORITY_FLAGS 0
49 #define INSECURE_DH_PRIME_BITS (1 << 0) // 1
50 
51 /* Plugin specific network functions */
52 int
53 open_sock_tcp (struct script_infos *, unsigned int, int);
54 
55 int
56 open_sock_option (struct script_infos *, unsigned int, int, int, int);
57 
58 int
59 recv_line (int, char *, size_t);
60 
61 int
62 nrecv (int, void *, int, int);
63 
64 int
65 socket_close (int);
66 
67 int
68 get_sock_infos (int sock, int *r_transport, void **r_tls_session);
69 
70 unsigned short *
71 getpts (char *, int *);
72 
73 void
74 open_stream_tls_default_priorities (const char *p, const int pflag);
75 
76 int
77 open_stream_connection (struct script_infos *, unsigned int, int, int);
78 
79 int
80 open_stream_connection_ext (struct script_infos *, unsigned int, int, int,
81  const char *, int);
82 
83 int
84 open_stream_auto_encaps_ext (struct script_infos *, unsigned int port,
85  int timeout, int force);
86 
87 int
88 write_stream_connection (int, void *buf, int n);
89 
90 int
91 read_stream_connection (int, void *, int);
92 
93 int
94 read_stream_connection_min (int, void *, int, int);
95 
96 int
97 nsend (int, void *, int, int);
98 
99 void
101 
102 int
104 
105 const char *get_encaps_name (openvas_encaps_t);
106 
108 
109 /* Additional functions -- should not be used by the plugins */
110 int
111 open_sock_opt_hn (const char *, unsigned int, int, int, int);
112 
113 int
114 openvas_SSL_init (void);
115 
116 int
117 stream_set_buffer (int, int);
118 
119 int
121 
122 int
123 stream_get_err (int);
124 
125 int
126 openvas_register_connection (int s, void *ssl,
127  gnutls_certificate_credentials_t certcred,
128  openvas_encaps_t encaps);
129 int
131 
132 int
134 
135 gnutls_session_t
137 
138 int
139 stream_zero (fd_set *);
140 
141 int
142 stream_set (int, fd_set *);
143 
144 int
145 os_send (int, void *, int, int);
146 
147 int
148 os_recv (int, void *, int, int);
149 
150 int
151 fd_is_stream (int);
152 
153 int
154 stream_set_timeout (int, int);
155 
156 int
158 int
160 
161 int
163 
164 void
165 socket_get_cert (int, void **, int *);
166 
167 int
169 
170 void
171 socket_get_ssl_session_id (int, void **, size_t *);
172 
173 int
175 
176 int
178 
179 #endif
openvas_deregister_connection
int openvas_deregister_connection(int)
Definition: network.c:259
nsend
int nsend(int, void *, int, int)
Definition: network.c:1589
open_sock_option
int open_sock_option(struct script_infos *, unsigned int, int, int, int)
Definition: network.c:1996
script_infos
Definition: scanneraux.h:29
read_stream_connection_min
int read_stream_connection_min(int, void *, int, int)
Definition: network.c:1397
OPENVAS_ENCAPS_IP
@ OPENVAS_ENCAPS_IP
Definition: network.h:31
get_encaps_through
const char * get_encaps_through(openvas_encaps_t)
Definition: network.c:1766
getpts
unsigned short * getpts(char *, int *)
Converts a string like "-100,200-1024,3000-4000,60000-" into an array.
Definition: network.c:2296
stream_set_timeout
int stream_set_timeout(int, int)
Definition: network.c:1216
socket_negotiate_ssl
int socket_negotiate_ssl(int, openvas_encaps_t, struct script_infos *)
Upgrade an ENCAPS_IP socket to an SSL/TLS encapsulated one.
Definition: network.c:820
stream_get_buffer_sz
int stream_get_buffer_sz(int)
Definition: network.c:2158
recv_line
int recv_line(int, char *, size_t)
Reads a text from the socket stream into the argument buffer, always.
Definition: network.c:2040
socket_close
int socket_close(int)
Definition: network.c:2142
nrecv
int nrecv(int, void *, int, int)
Definition: network.c:1628
openvas_register_connection
int openvas_register_connection(int s, void *ssl, gnutls_certificate_credentials_t certcred, openvas_encaps_t encaps)
Definition: network.c:234
OPENVAS_ENCAPS_TLSv13
@ OPENVAS_ENCAPS_TLSv13
Definition: network.h:38
read_stream_connection
int read_stream_connection(int, void *, int)
Definition: network.c:1457
stream_get_err
int stream_get_err(int)
Definition: network.c:132
close_stream_connection
int close_stream_connection(int)
Definition: network.c:1705
OPENVAS_ENCAPS_MAX
@ OPENVAS_ENCAPS_MAX
Definition: network.h:40
OPENVAS_ENCAPS_TLScustom
@ OPENVAS_ENCAPS_TLScustom
Definition: network.h:39
stream_zero
int stream_zero(fd_set *)
open_stream_auto_encaps_ext
int open_stream_auto_encaps_ext(struct script_infos *, unsigned int port, int timeout, int force)
Definition: network.c:1185
socket_ssl_safe_renegotiation_status
int socket_ssl_safe_renegotiation_status(int)
Check if Secure Renegotiation is supported in the server side.
Definition: network.c:716
open_sock_tcp
int open_sock_tcp(struct script_infos *, unsigned int, int)
Definition: network.c:1919
socket_get_cert
void socket_get_cert(int, void **, int *)
Definition: network.c:887
open_stream_tls_default_priorities
void open_stream_tls_default_priorities(const char *p, const int pflag)
Definition: network.c:1168
get_sock_infos
int get_sock_infos(int sock, int *r_transport, void **r_tls_session)
Definition: network.c:2256
scanneraux.h
Auxiliary structures for scanner.
OPENVAS_ENCAPS_SSLv2
@ OPENVAS_ENCAPS_SSLv2
Definition: network.h:33
openvas_encaps_t
enum openvas_encaps openvas_encaps_t
stream_set_buffer
int stream_set_buffer(int, int)
Definition: network.c:2168
openvas_SSL_init
int openvas_SSL_init(void)
Initializes SSL support.
Definition: network.c:341
open_sock_opt_hn
int open_sock_opt_hn(const char *, unsigned int, int, int, int)
Definition: network.c:1890
open_stream_connection
int open_stream_connection(struct script_infos *, unsigned int, int, int)
Definition: network.c:1175
socket_get_ssl_ciphersuite
int socket_get_ssl_ciphersuite(int)
Definition: network.c:1006
OPENVAS_ENCAPS_TLSv1
@ OPENVAS_ENCAPS_TLSv1
Definition: network.h:35
write_stream_connection
int write_stream_connection(int, void *buf, int n)
Definition: network.c:1583
ovas_get_tlssession_from_connection
gnutls_session_t ovas_get_tlssession_from_connection(int)
Definition: network.c:377
stream_set
int stream_set(int, fd_set *)
socket_get_ssl_version
int socket_get_ssl_version(int)
Definition: network.c:923
os_send
int os_send(int, void *, int, int)
Definition: network.c:2216
openvas_get_socket_from_connection
int openvas_get_socket_from_connection(int)
Definition: network.c:357
OPENVAS_ENCAPS_SSLv3
@ OPENVAS_ENCAPS_SSLv3
Definition: network.h:34
socket_ssl_do_handshake
int socket_ssl_do_handshake(int)
Do a re-handshake of the TLS/SSL protocol.
Definition: network.c:737
socket_get_ssl_session_id
void socket_get_ssl_session_id(int, void **, size_t *)
Definition: network.c:966
openvas_encaps
openvas_encaps
Definition: network.h:29
socket_get_ssl_compression
int socket_get_ssl_compression(int)
os_recv
int os_recv(int, void *, int, int)
Definition: network.c:2235
OPENVAS_ENCAPS_TLSv11
@ OPENVAS_ENCAPS_TLSv11
Definition: network.h:36
OPENVAS_ENCAPS_TLSv12
@ OPENVAS_ENCAPS_TLSv12
Definition: network.h:37
open_stream_connection_ext
int open_stream_connection_ext(struct script_infos *, unsigned int, int, int, const char *, int)
Definition: network.c:1046
get_encaps_name
const char * get_encaps_name(openvas_encaps_t)
Definition: network.c:1733
add_close_stream_connection_hook
void add_close_stream_connection_hook(int(*)(int))
fd_is_stream
int fd_is_stream(int)
Definition: network.c:2152
OPENVAS_ENCAPS_AUTO
@ OPENVAS_ENCAPS_AUTO
Definition: network.h:30
OPENVAS_ENCAPS_SSLv23
@ OPENVAS_ENCAPS_SSLv23
Definition: network.h:32