ui: convert VNC server to use QCryptoTLSSession
commit3e305e4a4752f70c0b5c3cf5b43ec957881714f7
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 6 Aug 2015 13:39:32 +0000 (6 14:39 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 15 Sep 2015 14:20:55 +0000 (15 15:20 +0100)
treee3ba8537a1753b436804b676aaddbdcc9448bb15
parentfdd1ab6ad5c27a1564a1c73045908736b228458b
ui: convert VNC server to use QCryptoTLSSession

Switch VNC server over to using the QCryptoTLSSession object
for the TLS session. This removes the direct use of gnutls
from the VNC server code. It also removes most knowledge
about TLS certificate handling from the VNC server code.
This has the nice effect that all the CONFIG_VNC_TLS
conditionals go away and the user gets an actual error
message when requesting TLS instead of it being silently
ignored.

With this change, the existing configuration options for
enabling TLS with -vnc are deprecated.

Old syntax for anon-DH credentials:

  -vnc hostname:0,tls

New syntax:

  -object tls-creds-anon,id=tls0,endpoint=server \
  -vnc hostname:0,tls-creds=tls0

Old syntax for x509 credentials, no client certs:

  -vnc hostname:0,tls,x509=/path/to/certs

New syntax:

  -object tls-creds-x509,id=tls0,dir=/path/to/certs,endpoint=server,verify-peer=no \
  -vnc hostname:0,tls-creds=tls0

Old syntax for x509 credentials, requiring client certs:

  -vnc hostname:0,tls,x509verify=/path/to/certs

New syntax:

  -object tls-creds-x509,id=tls0,dir=/path/to/certs,endpoint=server,verify-peer=yes \
  -vnc hostname:0,tls-creds=tls0

This aligns VNC with the way TLS credentials are to be
configured in the future for chardev, nbd and migration
backends. It also has the benefit that the same TLS
credentials can be shared across multiple VNC server
instances, if desired.

If someone uses the deprecated syntax, it will internally
result in the creation of a 'tls-creds' object with an ID
based on the VNC server ID. This allows backwards compat
with the CLI syntax, while still deleting all the original
TLS code from the VNC server.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
configure
qemu-options.hx
ui/Makefile.objs
ui/vnc-auth-sasl.c
ui/vnc-auth-vencrypt.c
ui/vnc-tls.c [deleted file]
ui/vnc-tls.h [deleted file]
ui/vnc-ws.c
ui/vnc-ws.h
ui/vnc.c
ui/vnc.h