From 1f08e3415120637cad7f540d9ceb4dba3136dbdd Mon Sep 17 00:00:00 2001 From: Zihao Chang Date: Tue, 16 Mar 2021 15:58:44 +0800 Subject: vnc: support reload x509 certificates for vnc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch add vnc_display_reload_certs() to support update x509 certificates. Signed-off-by: Zihao Chang Reviewed-by: Daniel P. Berrangé Message-Id: <20210316075845.1476-3-changzihao1@huawei.com> Signed-off-by: Gerd Hoffmann --- ui/vnc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'ui') diff --git a/ui/vnc.c b/ui/vnc.c index e0fac21..456db47 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -585,6 +585,34 @@ VncInfo2List *qmp_query_vnc_servers(Error **errp) return prev; } +bool vnc_display_reload_certs(const char *id, Error **errp) +{ + VncDisplay *vd = vnc_display_find(id); + QCryptoTLSCredsClass *creds = NULL; + + if (!vd) { + error_setg(errp, "Can not find vnc display"); + return false; + } + + if (!vd->tlscreds) { + error_setg(errp, "vnc tls is not enable"); + return false; + } + + creds = QCRYPTO_TLS_CREDS_GET_CLASS(OBJECT(vd->tlscreds)); + if (creds->reload == NULL) { + error_setg(errp, "%s doesn't support to reload TLS credential", + object_get_typename(OBJECT(vd->tlscreds))); + return false; + } + if (!creds->reload(vd->tlscreds, errp)) { + return false; + } + + return true; +} + /* TODO 1) Get the queue working for IO. 2) there is some weirdness when using the -S option (the screen is grey -- cgit v1.1