crypto: qcrypto_random_bytes() now works on windows w/o any other crypto libs
commita37278169d0d7d33270c6817f4a2e4f7345e1098
authorGeert Martin Ijewski <gm.ijewski@web.de>
Tue, 25 Apr 2017 22:15:01 +0000 (26 00:15 +0200)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 9 May 2017 13:41:47 +0000 (9 14:41 +0100)
treee3f7866ae58d6dad3b84240cca0fe7852124e04b
parente4a3507e86a1ef1453d603031bca27d5ac4cff3c
crypto: qcrypto_random_bytes() now works on windows w/o any other crypto libs

If no crypto library is included in the build, QEMU uses
qcrypto_random_bytes() to generate random data. That function tried to open
/dev/urandom or /dev/random and if opening both files failed it errored out.

Those files obviously do not exist on windows, so there the code uses
CryptGenRandom().

Furthermore there was some refactoring and a new function
qcrypto_random_init() was introduced. If a proper crypto library (gnutls or
libgcrypt) is included in the build, this function does nothing. If neither
is included it initializes the (platform specific) handles that are used by
qcrypto_random_bytes().
Either:
* a handle to /dev/urandom | /dev/random on unix like systems
* a handle to a cryptographic service provider on windows

Signed-off-by: Geert Martin Ijewski <gm.ijewski@web.de>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
crypto/init.c
crypto/random-gcrypt.c
crypto/random-gnutls.c
crypto/random-platform.c
include/crypto/random.h