From: Daniel P. Berrange Date: Fri, 3 Jun 2016 16:31:48 +0000 (+0100) Subject: configure: allow setting default TLS priority string X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=cbb2e91ecc56d218ca20c1a9ba345eaf754d6c5d;p=libvirt.git configure: allow setting default TLS priority string Currently libvirt calls gnutls_set_default_priority() which on old systems resolves to "NORMAL" while new systems it resolves to "@SYSTEM". Either way, this is a global default that is identical across all apps. We want to allow distros to flexibility to define a custom default string for libvirt priority, so add a --tls-priority=STRING flag to configure to enable this to be set. It is expected that distros would use this when creating RPM/Deb/etc packages, according to their preferred crypto handling policies. Signed-off-by: Daniel P. Berrange --- diff --git a/configure.ac b/configure.ac index 73ce586fed..827d9db796 100644 --- a/configure.ac +++ b/configure.ac @@ -1276,6 +1276,16 @@ AC_SUBST([GNUTLS_CFLAGS]) AC_SUBST([GNUTLS_LIBS]) +AC_ARG_WITH([tls-priority], + [AS_HELP_STRING([--with-tls-priority], + [set the default TLS session priority string @<:@default=NORMAL@:>@])], + [], + [with_tls_priority=NORMAL]) + +AC_DEFINE_UNQUOTED([TLS_PRIORITY], ["$with_tls_priority"], + [TLS default priority string]) + + dnl PolicyKit library POLKIT_CFLAGS= POLKIT_LIBS= @@ -2874,6 +2884,7 @@ AC_MSG_NOTICE([ Default Editor: $DEFAULT_EDITOR]) AC_MSG_NOTICE([ Loader/NVRAM: $with_loader_nvram]) AC_MSG_NOTICE([ virt-login-shell: $with_login_shell]) AC_MSG_NOTICE([virt-host-validate: $with_host_validate]) +AC_MSG_NOTICE([ TLS priority: $with_tls_priority]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Developer Tools]) AC_MSG_NOTICE([]) diff --git a/src/rpc/virnettlscontext.c b/src/rpc/virnettlscontext.c index ef96587b24..dd22630de6 100644 --- a/src/rpc/virnettlscontext.c +++ b/src/rpc/virnettlscontext.c @@ -1197,10 +1197,10 @@ virNetTLSSessionPtr virNetTLSSessionNew(virNetTLSContextPtr ctxt, /* avoid calling all the priority functions, since the defaults * are adequate. */ - if ((err = gnutls_set_default_priority(sess->session)) != 0) { + if ((err = gnutls_priority_set_direct(sess->session, TLS_PRIORITY, NULL)) != 0) { virReportError(VIR_ERR_SYSTEM_ERROR, - _("Failed to set TLS session priority %s"), - gnutls_strerror(err)); + _("Failed to set TLS session priority to %s: %s"), + TLS_PRIORITY, gnutls_strerror(err)); goto error; }