From: Eric Blake <eblake@redhat.com>
To: "Daniel P. Berrange" <berrange@redhat.com>, qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4 1/7] crypto: introduce new base module for TLS credentials
Date: Mon, 24 Aug 2015 14:25:24 -0600 [thread overview]
Message-ID: <55DB7DB4.30907@redhat.com> (raw)
In-Reply-To: <1440425695-24286-2-git-send-email-berrange@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 4167 bytes --]
On 08/24/2015 08:14 AM, Daniel P. Berrange wrote:
> Introduce a QCryptoTLSCreds class to act as the base class for
> storing TLS credentials. This will be later subclassed to provide
> handling of anonymous and x509 credential types. The subclasses
> will be user creatable objects, so instances can be created &
> deleted via 'object-add' and 'object-del' QMP commands respectively,
> or via the -object command line arg.
>
> If the credentials cannot be initialized an error will be reported
> as a QMP reply, or on stderr respectively.
>
> The idea is to make it possible to represent and manager TLS
s/manager/manage/
> credentials independantly of the network service that is using
s/independantly/independently/
> them. This will enable multiple services to use the same set of
> credentials and minimize code duplication. A later patch will
> convert the current VNC server TLS code over to use this object.
>
> The representation of credentials will be functionally equivalent
> to that currently implemented in the VNC server with one exception.
> The new code has the ability to (optionally) load a pre-generated
> set of diffie-hellman parameters, if the file dh-params.pem exists,
> whereas the current VNC server will always generate them on startup.
> This is beneficial for admins who wish to avoid the (small) time
> sink of generating DH parameters at startup and/or avoid depleting
> entropy.
>
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
> crypto/Makefile.objs | 1 +
> crypto/init.c | 11 ++
> crypto/tlscreds.c | 270 ++++++++++++++++++++++++++++++++++++++++++++++
> crypto/tlscredspriv.h | 41 +++++++
> include/crypto/tlscreds.h | 77 +++++++++++++
> tests/Makefile | 4 +-
> 6 files changed, 402 insertions(+), 2 deletions(-)
> create mode 100644 crypto/tlscreds.c
> create mode 100644 crypto/tlscredspriv.h
> create mode 100644 include/crypto/tlscreds.h
>
> +++ b/crypto/tlscreds.c
> @@ -0,0 +1,270 @@
> +/* #define QCRYPTO_DEBUG */
> +
> +#ifdef QCRYPTO_DEBUG
> +#define DPRINTF(fmt, ...) do { fprintf(stderr, fmt, ## __VA_ARGS__); } while (0)
> +#else
> +#define DPRINTF(fmt, ...) do { } while (0)
> +#endif
Please rework this to:
#ifdef QCRYPTO_DEBUG
# define QCRYPT_DEBUG_PRINT 1
#else
# define QCRYPT_DEBUG_PRINT 0
#endif
#define DPRINTF(fmt, ...) \
do { \
if (QCRYPT_DEBUG_PRINT) { \
fprintf(stderr, fmt, ## __VA_ARGS__); \
} \
} while (0)
so that we don't bit-rot the printf arguments when debugging is disabled.
> +
> +
> +#define DH_BITS 2048
> +
> +static const char * const endpoint_map[QCRYPTO_TLS_CREDS_ENDPOINT_LAST + 1] = {
> + [QCRYPTO_TLS_CREDS_ENDPOINT_SERVER] = "server",
> + [QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT] = "client",
> + [QCRYPTO_TLS_CREDS_ENDPOINT_LAST] = NULL,
> +};
Is it worth an entry in a .json file to get qapi to generate this
mapping automatically?
> +
> +
> +#ifdef CONFIG_GNUTLS
> +int
> +qcrypto_tls_creds_get_dh_params_file(const char *filename,
> + gnutls_dh_params_t *dh_params,
> + Error **errp)
> +{
> + int ret;
> +
> + DPRINTF("Loading DH params %s\n", filename ? filename : "<generated>");
> + if (filename == NULL) {
> + ret = gnutls_dh_params_init(dh_params);
> + if (ret < 0) {
> + error_setg(errp, "Unable to initialize DH parameters %s",
> + gnutls_strerror(ret));
Maybe s/parameters %s/parameters: %s/ ?
> + return -1;
> + }
> + ret = gnutls_dh_params_generate2(*dh_params, DH_BITS);
> + if (ret < 0) {
> + gnutls_dh_params_deinit(*dh_params);
> + *dh_params = NULL;
> + error_setg(errp, "Unable to generate DH parameters %s",
> + gnutls_strerror(ret));
and again? (Recurring theme, so I'll quit pointing it out)
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2015-08-24 20:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-24 14:14 [Qemu-devel] [PATCH v4 0/7] Extract TLS handling code from VNC server Daniel P. Berrange
2015-08-24 14:14 ` [Qemu-devel] [PATCH v4 1/7] crypto: introduce new base module for TLS credentials Daniel P. Berrange
2015-08-24 20:25 ` Eric Blake [this message]
2015-08-26 12:48 ` Daniel P. Berrange
2015-08-24 14:14 ` [Qemu-devel] [PATCH v4 2/7] crypto: introduce new module for TLS anonymous credentials Daniel P. Berrange
2015-08-24 20:46 ` Eric Blake
2015-08-26 14:49 ` Daniel P. Berrange
2015-08-24 14:14 ` [Qemu-devel] [PATCH v4 3/7] crypto: introduce new module for TLS x509 credentials Daniel P. Berrange
2015-08-26 15:07 ` Eric Blake
2015-08-24 14:14 ` [Qemu-devel] [PATCH v4 4/7] crypto: add sanity checking of " Daniel P. Berrange
2015-08-24 14:14 ` [Qemu-devel] [PATCH v4 5/7] crypto: introduce new module for handling TLS sessions Daniel P. Berrange
2015-08-24 14:14 ` [Qemu-devel] [PATCH v4 6/7] ui: fix return type for VNC I/O functions to be ssize_t Daniel P. Berrange
2015-08-24 14:14 ` [Qemu-devel] [PATCH v4 7/7] ui: convert VNC server to use QCryptoTLSSession Daniel P. Berrange
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55DB7DB4.30907@redhat.com \
--to=eblake@redhat.com \
--cc=berrange@redhat.com \
--cc=kraxel@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).