Revision eb38c52c vnc.c
b/vnc.c | ||
---|---|---|
35 | 35 |
#include "keymaps.c" |
36 | 36 |
#include "d3des.h" |
37 | 37 |
|
38 |
#if CONFIG_VNC_TLS |
|
38 |
#ifdef CONFIG_VNC_TLS
|
|
39 | 39 |
#include <gnutls/gnutls.h> |
40 | 40 |
#include <gnutls/x509.h> |
41 | 41 |
#endif /* CONFIG_VNC_TLS */ |
42 | 42 |
|
43 | 43 |
// #define _VNC_DEBUG 1 |
44 | 44 |
|
45 |
#if _VNC_DEBUG |
|
45 |
#ifdef _VNC_DEBUG
|
|
46 | 46 |
#define VNC_DEBUG(fmt, ...) do { fprintf(stderr, fmt, ## __VA_ARGS__); } while (0) |
47 | 47 |
|
48 | 48 |
#if CONFIG_VNC_TLS && _VNC_DEBUG >= 2 |
... | ... | |
93 | 93 |
VNC_AUTH_VENCRYPT = 19 |
94 | 94 |
}; |
95 | 95 |
|
96 |
#if CONFIG_VNC_TLS |
|
96 |
#ifdef CONFIG_VNC_TLS
|
|
97 | 97 |
enum { |
98 | 98 |
VNC_WIREMODE_CLEAR, |
99 | 99 |
VNC_WIREMODE_TLS, |
... | ... | |
141 | 141 |
char *display; |
142 | 142 |
char *password; |
143 | 143 |
int auth; |
144 |
#if CONFIG_VNC_TLS |
|
144 |
#ifdef CONFIG_VNC_TLS
|
|
145 | 145 |
int subauth; |
146 | 146 |
int x509verify; |
147 | 147 |
|
... | ... | |
152 | 152 |
#endif |
153 | 153 |
char challenge[VNC_AUTH_CHALLENGE_SIZE]; |
154 | 154 |
|
155 |
#if CONFIG_VNC_TLS |
|
155 |
#ifdef CONFIG_VNC_TLS
|
|
156 | 156 |
int wiremode; |
157 | 157 |
gnutls_session_t tls_session; |
158 | 158 |
#endif |
... | ... | |
662 | 662 |
buffer_reset(&vs->input); |
663 | 663 |
buffer_reset(&vs->output); |
664 | 664 |
vs->need_update = 0; |
665 |
#if CONFIG_VNC_TLS |
|
665 |
#ifdef CONFIG_VNC_TLS
|
|
666 | 666 |
if (vs->tls_session) { |
667 | 667 |
gnutls_deinit(vs->tls_session); |
668 | 668 |
vs->tls_session = NULL; |
... | ... | |
684 | 684 |
long ret; |
685 | 685 |
VncState *vs = opaque; |
686 | 686 |
|
687 |
#if CONFIG_VNC_TLS |
|
687 |
#ifdef CONFIG_VNC_TLS
|
|
688 | 688 |
if (vs->tls_session) { |
689 | 689 |
ret = gnutls_write(vs->tls_session, vs->output.buffer, vs->output.offset); |
690 | 690 |
if (ret < 0) { |
... | ... | |
722 | 722 |
|
723 | 723 |
buffer_reserve(&vs->input, 4096); |
724 | 724 |
|
725 |
#if CONFIG_VNC_TLS |
|
725 |
#ifdef CONFIG_VNC_TLS
|
|
726 | 726 |
if (vs->tls_session) { |
727 | 727 |
ret = gnutls_read(vs->tls_session, buffer_end(&vs->input), 4096); |
728 | 728 |
if (ret < 0) { |
... | ... | |
829 | 829 |
(data[offset + 2] << 8) | data[offset + 3]); |
830 | 830 |
} |
831 | 831 |
|
832 |
#if CONFIG_VNC_TLS |
|
832 |
#ifdef CONFIG_VNC_TLS
|
|
833 | 833 |
static ssize_t vnc_tls_push(gnutls_transport_ptr_t transport, |
834 | 834 |
const void *data, |
835 | 835 |
size_t len) { |
... | ... | |
1439 | 1439 |
} |
1440 | 1440 |
|
1441 | 1441 |
|
1442 |
#if CONFIG_VNC_TLS |
|
1442 |
#ifdef CONFIG_VNC_TLS
|
|
1443 | 1443 |
#define DH_BITS 1024 |
1444 | 1444 |
static gnutls_dh_params_t dh_params; |
1445 | 1445 |
|
... | ... | |
1877 | 1877 |
VNC_DEBUG("Start VNC auth\n"); |
1878 | 1878 |
return start_auth_vnc(vs); |
1879 | 1879 |
|
1880 |
#if CONFIG_VNC_TLS |
|
1880 |
#ifdef CONFIG_VNC_TLS
|
|
1881 | 1881 |
case VNC_AUTH_VENCRYPT: |
1882 | 1882 |
VNC_DEBUG("Accept VeNCrypt auth\n");; |
1883 | 1883 |
return start_auth_vencrypt(vs); |
... | ... | |
2030 | 2030 |
vnc_dpy_resize(vs->ds, 640, 400); |
2031 | 2031 |
} |
2032 | 2032 |
|
2033 |
#if CONFIG_VNC_TLS |
|
2033 |
#ifdef CONFIG_VNC_TLS
|
|
2034 | 2034 |
static int vnc_set_x509_credential(VncState *vs, |
2035 | 2035 |
const char *certdir, |
2036 | 2036 |
const char *filename, |
... | ... | |
2107 | 2107 |
buffer_reset(&vs->input); |
2108 | 2108 |
buffer_reset(&vs->output); |
2109 | 2109 |
vs->need_update = 0; |
2110 |
#if CONFIG_VNC_TLS |
|
2110 |
#ifdef CONFIG_VNC_TLS
|
|
2111 | 2111 |
if (vs->tls_session) { |
2112 | 2112 |
gnutls_deinit(vs->tls_session); |
2113 | 2113 |
vs->tls_session = NULL; |
... | ... | |
2116 | 2116 |
#endif /* CONFIG_VNC_TLS */ |
2117 | 2117 |
} |
2118 | 2118 |
vs->auth = VNC_AUTH_INVALID; |
2119 |
#if CONFIG_VNC_TLS |
|
2119 |
#ifdef CONFIG_VNC_TLS
|
|
2120 | 2120 |
vs->subauth = VNC_AUTH_INVALID; |
2121 | 2121 |
vs->x509verify = 0; |
2122 | 2122 |
#endif |
... | ... | |
2152 | 2152 |
const char *options; |
2153 | 2153 |
int password = 0; |
2154 | 2154 |
int reverse = 0; |
2155 |
#if CONFIG_VNC_TLS |
|
2155 |
#ifdef CONFIG_VNC_TLS
|
|
2156 | 2156 |
int tls = 0, x509 = 0; |
2157 | 2157 |
#endif |
2158 | 2158 |
|
... | ... | |
2170 | 2170 |
password = 1; /* Require password auth */ |
2171 | 2171 |
} else if (strncmp(options, "reverse", 7) == 0) { |
2172 | 2172 |
reverse = 1; |
2173 |
#if CONFIG_VNC_TLS |
|
2173 |
#ifdef CONFIG_VNC_TLS
|
|
2174 | 2174 |
} else if (strncmp(options, "tls", 3) == 0) { |
2175 | 2175 |
tls = 1; /* Require TLS */ |
2176 | 2176 |
} else if (strncmp(options, "x509", 4) == 0) { |
... | ... | |
2208 | 2208 |
} |
2209 | 2209 |
|
2210 | 2210 |
if (password) { |
2211 |
#if CONFIG_VNC_TLS |
|
2211 |
#ifdef CONFIG_VNC_TLS
|
|
2212 | 2212 |
if (tls) { |
2213 | 2213 |
vs->auth = VNC_AUTH_VENCRYPT; |
2214 | 2214 |
if (x509) { |
... | ... | |
2222 | 2222 |
#endif |
2223 | 2223 |
VNC_DEBUG("Initializing VNC server with password auth\n"); |
2224 | 2224 |
vs->auth = VNC_AUTH_VNC; |
2225 |
#if CONFIG_VNC_TLS |
|
2225 |
#ifdef CONFIG_VNC_TLS
|
|
2226 | 2226 |
vs->subauth = VNC_AUTH_INVALID; |
2227 | 2227 |
} |
2228 | 2228 |
#endif |
2229 | 2229 |
} else { |
2230 |
#if CONFIG_VNC_TLS |
|
2230 |
#ifdef CONFIG_VNC_TLS
|
|
2231 | 2231 |
if (tls) { |
2232 | 2232 |
vs->auth = VNC_AUTH_VENCRYPT; |
2233 | 2233 |
if (x509) { |
... | ... | |
2241 | 2241 |
#endif |
2242 | 2242 |
VNC_DEBUG("Initializing VNC server with no auth\n"); |
2243 | 2243 |
vs->auth = VNC_AUTH_NONE; |
2244 |
#if CONFIG_VNC_TLS |
|
2244 |
#ifdef CONFIG_VNC_TLS
|
|
2245 | 2245 |
vs->subauth = VNC_AUTH_INVALID; |
2246 | 2246 |
} |
2247 | 2247 |
#endif |
Also available in: Unified diff