Skip to content
Snippets Groups Projects
  • Philippe Mathieu-Daudé's avatar
    678bcc3c
    crypto: Make QCryptoTLSCreds* structures private · 678bcc3c
    Philippe Mathieu-Daudé authored
    
    Code consuming the "crypto/tlscreds*.h" APIs doesn't need
    to access its internals. Move the structure definitions to
    the "tlscredspriv.h" private header (only accessible by
    implementations). The public headers (in include/) still
    forward-declare the structures typedef.
    
    Note, tlscreds.c and 3 of the 5 modified source files already
    include "tlscredspriv.h", so only add it to tls-cipher-suites.c
    and tlssession.c.
    
    Removing the internals from the public header solves a bug
    introduced by commit 7de2e856 ("yank: Unregister function
    when using TLS migration") which made migration/qemu-file-channel.c
    include "io/channel-tls.h", itself sometime depends on GNUTLS,
    leading to a build failure on OSX:
    
      [2/35] Compiling C object libmigration.fa.p/migration_qemu-file-channel.c.o
      FAILED: libmigration.fa.p/migration_qemu-file-channel.c.o
      cc -Ilibmigration.fa.p -I. -I.. -Iqapi [ ... ] -o libmigration.fa.p/migration_qemu-file-channel.c.o -c ../migration/qemu-file-channel.c
      In file included from ../migration/qemu-file-channel.c:29:
      In file included from include/io/channel-tls.h:26:
      In file included from include/crypto/tlssession.h:24:
      include/crypto/tlscreds.h:28:10: fatal error: 'gnutls/gnutls.h' file not found
      #include <gnutls/gnutls.h>
               ^~~~~~~~~~~~~~~~~
      1 error generated.
    
    Reported-by: default avatarStefan Weil <sw@weilnetz.de>
    Suggested-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407
    
    
    Fixes: 7de2e856 ("yank: Unregister function when using TLS migration")
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    678bcc3c
    History
    crypto: Make QCryptoTLSCreds* structures private
    Philippe Mathieu-Daudé authored
    
    Code consuming the "crypto/tlscreds*.h" APIs doesn't need
    to access its internals. Move the structure definitions to
    the "tlscredspriv.h" private header (only accessible by
    implementations). The public headers (in include/) still
    forward-declare the structures typedef.
    
    Note, tlscreds.c and 3 of the 5 modified source files already
    include "tlscredspriv.h", so only add it to tls-cipher-suites.c
    and tlssession.c.
    
    Removing the internals from the public header solves a bug
    introduced by commit 7de2e856 ("yank: Unregister function
    when using TLS migration") which made migration/qemu-file-channel.c
    include "io/channel-tls.h", itself sometime depends on GNUTLS,
    leading to a build failure on OSX:
    
      [2/35] Compiling C object libmigration.fa.p/migration_qemu-file-channel.c.o
      FAILED: libmigration.fa.p/migration_qemu-file-channel.c.o
      cc -Ilibmigration.fa.p -I. -I.. -Iqapi [ ... ] -o libmigration.fa.p/migration_qemu-file-channel.c.o -c ../migration/qemu-file-channel.c
      In file included from ../migration/qemu-file-channel.c:29:
      In file included from include/io/channel-tls.h:26:
      In file included from include/crypto/tlssession.h:24:
      include/crypto/tlscreds.h:28:10: fatal error: 'gnutls/gnutls.h' file not found
      #include <gnutls/gnutls.h>
               ^~~~~~~~~~~~~~~~~
      1 error generated.
    
    Reported-by: default avatarStefan Weil <sw@weilnetz.de>
    Suggested-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    Resolves: https://gitlab.com/qemu-project/qemu/-/issues/407
    
    
    Fixes: 7de2e856 ("yank: Unregister function when using TLS migration")
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>