[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 01/15] crypto: add cryptographic random byte
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH v1 01/15] crypto: add cryptographic random byte source |
Date: |
Wed, 13 Jan 2016 10:46:48 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Tue, 01/12 18:56, Daniel P. Berrange wrote:
> Signed-off-by: Daniel P. Berrange <address@hidden>
> ---
> crypto/Makefile.objs | 1 +
> crypto/random.c | 50
> +++++++++++++++++++++++++++++++++++++++++++++++++
> include/crypto/random.h | 43 ++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 94 insertions(+)
> create mode 100644 crypto/random.c
> create mode 100644 include/crypto/random.h
>
> diff --git a/crypto/Makefile.objs b/crypto/Makefile.objs
> index a3135f1..5f38d2d 100644
> --- a/crypto/Makefile.objs
> +++ b/crypto/Makefile.objs
> @@ -8,6 +8,7 @@ crypto-obj-y += tlscredsanon.o
> crypto-obj-y += tlscredsx509.o
> crypto-obj-y += tlssession.o
> crypto-obj-y += secret.o
> +crypto-obj-y += random.o
>
> # Let the userspace emulators avoid linking gnutls/etc
> crypto-aes-obj-y = aes.o
> diff --git a/crypto/random.c b/crypto/random.c
> new file mode 100644
> index 0000000..8257d24
> --- /dev/null
> +++ b/crypto/random.c
> @@ -0,0 +1,50 @@
> +/*
> + * QEMU Crypto random number provider
> + *
> + * Copyright (c) 2015 Red Hat, Inc.
s/2015/2016/
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see
> <http://www.gnu.org/licenses/>.
> + *
> + */
> +
> +#include <config-host.h>
> +
> +#include "crypto/random.h"
> +
> +int qcrypto_random_bytes(uint8_t *buf,
> + size_t buflen,
> + Error **errp)
> +{
> + ssize_t ret;
> + int fd = open("/dev/random", O_RDONLY);
> + if (fd < 0) {
> + error_setg_errno(errp, errno,
> + "Unable to open /dev/random");
> + return -1;
> + }
> +
> + while (buflen) {
> + ret = read(fd, buf, buflen);
> + if (ret < 0) {
> + error_setg_errno(errp, errno,
> + "Unable to read random bytes");
> + close(fd);
> + return -1;
> + }
> + buflen -= ret;
> + }
> +
> + close(fd);
> + return 0;
> +}
> diff --git a/include/crypto/random.h b/include/crypto/random.h
> new file mode 100644
> index 0000000..ce1626b
> --- /dev/null
> +++ b/include/crypto/random.h
> @@ -0,0 +1,43 @@
> +/*
> + * QEMU Crypto random number provider
> + *
> + * Copyright (c) 2015 Red Hat, Inc.
s/2015/2016/
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see
> <http://www.gnu.org/licenses/>.
> + *
> + */
> +
> +#ifndef QCRYPTO_RANDOM_H__
> +#define QCRYPTO_RANDOM_H__
> +
> +#include "qemu-common.h"
> +#include "qapi/error.h"
> +
> +
> +/**
> + * qcrypto_random_bytes:
> + * @buf: the buffer to fill
> + * @buflen: length of @buf in bytes
> + * @errp: pointer to uninitialized error objet
s/objet/object/, but more importantly @errp must be NULL, so it's not exact to
say it "uninitialized".
> + *
> + * Fill @buf with @buflen bytes of random data
> + *
> + * Returns 0 on sucess, -1 on error
> + */
> +int qcrypto_random_bytes(uint8_t *buf,
> + size_t buflen,
> + Error **errp);
> +
> +
> +#endif /* QCRYPTO_RANDOM_H__ */
> --
> 2.5.0
>
>
- [Qemu-devel] [PATCH v1 00/15] Support LUKS encryption in block devices, Daniel P. Berrange, 2016/01/12
- [Qemu-devel] [PATCH v1 01/15] crypto: add cryptographic random byte source, Daniel P. Berrange, 2016/01/12
- Re: [Qemu-devel] [PATCH v1 01/15] crypto: add cryptographic random byte source,
Fam Zheng <=
- [Qemu-devel] [PATCH v1 02/15] crypto: add support for PBKDF2 algorithm, Daniel P. Berrange, 2016/01/12
- [Qemu-devel] [PATCH v1 03/15] crypto: add support for generating initialization vectors, Daniel P. Berrange, 2016/01/12
- [Qemu-devel] [PATCH v1 09/15] qcow2: make qcow2_encrypt_sectors encrypt in place, Daniel P. Berrange, 2016/01/12
- [Qemu-devel] [PATCH v1 07/15] block: add flag to indicate that no I/O will be performed, Daniel P. Berrange, 2016/01/12
- [Qemu-devel] [PATCH v1 11/15] qcow: make encrypt_sectors encrypt in place, Daniel P. Berrange, 2016/01/12
- [Qemu-devel] [PATCH v1 14/15] block: remove all encryption handling APIs, Daniel P. Berrange, 2016/01/12