[libvirt] [PATCH v2 5/6] qemu: Add support for TLS X.509 path to TCP chardev backend

Daniel P. Berrange berrange at redhat.com
Thu Jun 16 13:21:01 UTC 2016


On Thu, Jun 16, 2016 at 06:42:26AM -0400, John Ferlan wrote:
> When building a chardev device string for tcp, add the necessary pieces to
> access provide the TLS X.509 path to qemu.  This includes generating the
> 'tls-creds-x509' object and then adding the 'tls-creds' parameter to the
> VIR_DOMAIN_CHR_TYPE_TCP command line.
> 
> Finally add the tests for the qemu command line. This test will make use
> of the "new(ish)" /etc/pki/libvirt-default setting for a TLS certificate
> environment by *not* "resetting" the charTCPTLSx509certdir prior to
> running the test.
> 
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>  src/qemu/qemu_command.c                            | 102 ++++++++++++++++++++-
>  .../qemuxml2argv-serial-tcp-tlsx509-chardev.args   |  33 +++++++
>  tests/qemuxml2argvtest.c                           |   6 ++
>  3 files changed, 140 insertions(+), 1 deletion(-)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-serial-tcp-tlsx509-chardev.args
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 4a8def1..815785c 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -701,6 +701,97 @@ qemuBuildRBDSecinfoURI(virBufferPtr buf,
>  }
>  
>  
> +/* qemuBuildTLSx509BackendProps:
> + * @tlspath: path to the TLS credentials
> + * @listen: boolen listen for client or server setting
> + * @qemuCaps: capabilities
> + * @propsret: json properties to return
> + *
> + * Create a backend string for the tls-creds-x509 object.
> + *
> + * Returns 0 on success, -1 on failure with error set.
> + */
> +static int
> +qemuBuildTLSx509BackendProps(const char *tlspath,
> +                             bool listen,
> +                             virQEMUCapsPtr qemuCaps,
> +                             virJSONValuePtr *propsret)
> +{
> +    virBuffer buf = VIR_BUFFER_INITIALIZER;
> +    char *path = NULL;
> +    int ret = -1;
> +
> +    if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_TLS_CREDS_X509)) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                       _("tls-creds-x509 not supported in this QEMU binary"));
> +        return -1;
> +    }
> +
> +    qemuBufferEscapeComma(&buf, tlspath);
> +    if (virBufferCheckError(&buf) < 0)
> +        goto cleanup;
> +    path = virBufferContentAndReset(&buf);
> +
> +    if (virJSONValueObjectCreate(propsret,
> +                                 "s:dir", path,
> +                                 "s:endpoint", (listen ? "server": "client"),

We should also have ability to set 'verify-peer' to yes/no


Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list