diff options
author | Geert Martin Ijewski <gm.ijewski@web.de> | 2017-04-26 00:15:01 +0200 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2017-05-09 14:41:47 +0100 |
commit | a37278169d0d7d33270c6817f4a2e4f7345e1098 (patch) | |
tree | e3f7866ae58d6dad3b84240cca0fe7852124e04b /include/crypto | |
parent | e4a3507e86a1ef1453d603031bca27d5ac4cff3c (diff) | |
download | qemu-a37278169d0d7d33270c6817f4a2e4f7345e1098.zip qemu-a37278169d0d7d33270c6817f4a2e4f7345e1098.tar.gz qemu-a37278169d0d7d33270c6817f4a2e4f7345e1098.tar.bz2 |
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>
Diffstat (limited to 'include/crypto')
-rw-r--r-- | include/crypto/random.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/crypto/random.h b/include/crypto/random.h index a101353..a07229c 100644 --- a/include/crypto/random.h +++ b/include/crypto/random.h @@ -40,5 +40,14 @@ int qcrypto_random_bytes(uint8_t *buf, size_t buflen, Error **errp); +/** + * qcrypto_random_init: + * @errp: pointer to a NULL-initialized error object + * + * Initializes the handles used by qcrypto_random_bytes + * + * Returns 0 on success, -1 on error + */ +int qcrypto_random_init(Error **errp); #endif /* QCRYPTO_RANDOM_H */ |