Skip to content

Commit

Permalink
vnc: support reload x509 certificates for vnc
Browse files Browse the repository at this point in the history
This patch add vnc_display_reload_certs() to support
update x509 certificates.

Signed-off-by: Zihao Chang <changzihao1@huawei.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20210316075845.1476-3-changzihao1@huawei.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
  • Loading branch information
Zihao Chang authored and kraxel committed Mar 23, 2021
1 parent a29acc9 commit 1f08e34
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/ui/console.h
Expand Up @@ -476,6 +476,7 @@ int vnc_display_password(const char *id, const char *password);
int vnc_display_pw_expire(const char *id, time_t expires);
void vnc_parse(const char *str);
int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp);
bool vnc_display_reload_certs(const char *id, Error **errp);

/* input.c */
int index_from_key(const char *key, size_t key_length);
Expand Down
28 changes: 28 additions & 0 deletions ui/vnc.c
Expand Up @@ -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
Expand Down

0 comments on commit 1f08e34

Please sign in to comment.