From: "Daniel P. Berrange" <berrange@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 7/9] crypto: introduce new module for handling TLS sessions
Date: Fri, 28 Aug 2015 14:14:35 +0100 [thread overview]
Message-ID: <20150828131435.GP28526@redhat.com> (raw)
In-Reply-To: <55DF1FC7.3000506@redhat.com>
On Thu, Aug 27, 2015 at 08:33:43AM -0600, Eric Blake wrote:
> On 08/26/2015 09:05 AM, Daniel P. Berrange wrote:
> > Introduce a QCryptoTLSSession object that will encapsulate
> > all the code for setting up and using a client/sever TLS
> > session. This isolates the code which depends on the gnutls
> > library, avoiding #ifdefs in the rest of the codebase, as
> > well as facilitating any possible future port to other TLS
> > libraries, if desired. It makes use of the previously
> > defined QCryptoTLSCreds object to access credentials to
> > use with the session. It also includes further unit tests
> > to validate the correctness of the TLS session handshake
> > and certificate validation. This is functionally equivalent
> > to the current TLS session handling code embedded in the
> > VNC server, and will obsolete it.
> >
> > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > ---
> > crypto/Makefile.objs | 1 +
> > crypto/tlssession.c | 583 +++++++++++++++++++++++++++++++++++++++++
> > include/crypto/tlssession.h | 322 +++++++++++++++++++++++
> > tests/.gitignore | 4 +
> > tests/Makefile | 3 +
> > tests/test-crypto-tlssession.c | 534 +++++++++++++++++++++++++++++++++++++
> > 6 files changed, 1447 insertions(+)
> > create mode 100644 crypto/tlssession.c
> > create mode 100644 include/crypto/tlssession.h
> > create mode 100644 tests/test-crypto-tlssession.c
> >
>
> > +++ b/crypto/tlssession.c
>
> > +
> > +struct _QCryptoTLSSession {
>
> Why the leading underscore before a capital? This collides with the
> namespace reserved to the compiler/library toolchain.
Just left over from my conversion from libvirt code, so will
remove that.
> > +
> > +void
> > +qcrypto_tls_session_free(QCryptoTLSSession *session)
>
> qemu coding style generally puts the return type and function name on
> the same line; but if checkpatch.pl isn't complaining, I won't insist.
> (I actually like the return type on a separate line, as emacs handles it
> nicer)
I ended up putting the return type on a separate line
because in several places it helped keep under the
80 character limit.
> > +++ b/include/crypto/tlssession.h
>
> > + * sess = qcrypto_tls_session_new(creds,
> > + * "vnc.example.com",
> > + * NULL,
> > + * QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT,
> > + * errp);
> > + * if (sess == NULL) {
> > + * return -1;
> > + * }
>
> Indentation is off
>
> > + *
> > + * qcrypto_tls_session_set_callbacks(sess,
> > + * mysock_send,
> > + * mysock_recv
> > + * GINT_TO_POINTER(fd));
> > + *
> > + * while (1) {
> > + * if (qcrypto_tls_session_handshake(sess, errp) < 0) {
> > + * qcrypto_tls_session_free(sess);
> > + * return -1;
> > + * }
> > + *
> > + * switch(qcrypto_tls_session_get_handshake_status(sess)) {
> > + * case QCRYPTO_TLS_HANDSHAKE_COMPLETE:
> > + * if (qcrypto_tls_session_check_credentials(sess, errp) < )) {
>
> Unusual indentation
Hehe, reviewing code examples in the comments is nice :-)
> > + /* We'll use this for our fake client-server connection */
> > + g_assert(socketpair(AF_UNIX, SOCK_STREAM, 0, channel) == 0);
>
> Evil to stick side-effects in a g_assert() (not as evil as doing it in
> assert(), but still something you should hoist out separately).
yep, will separate.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
next prev parent reply other threads:[~2015-08-28 13:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-26 15:05 [Qemu-devel] [PATCH v5 0/9] Extract TLS handling code from VNC server Daniel P. Berrange
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 1/9] qapi: allow override of default enum prefix naming Daniel P. Berrange
2015-08-26 15:22 ` Eric Blake
2015-08-27 11:04 ` Daniel P. Berrange
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 2/9] make: ensure all members of libqemuutil.a are linked Daniel P. Berrange
2015-08-26 15:25 ` Eric Blake
2015-08-26 15:42 ` Daniel P. Berrange
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 3/9] crypto: introduce new base module for TLS credentials Daniel P. Berrange
2015-08-26 16:56 ` Eric Blake
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 4/9] crypto: introduce new module for TLS anonymous credentials Daniel P. Berrange
2015-08-26 21:22 ` Eric Blake
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 5/9] crypto: introduce new module for TLS x509 credentials Daniel P. Berrange
2015-08-26 21:32 ` Eric Blake
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 6/9] crypto: add sanity checking of " Daniel P. Berrange
2015-08-26 21:53 ` Eric Blake
2015-08-27 8:48 ` Daniel P. Berrange
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 7/9] crypto: introduce new module for handling TLS sessions Daniel P. Berrange
2015-08-27 14:33 ` Eric Blake
2015-08-28 13:14 ` Daniel P. Berrange [this message]
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 8/9] ui: fix return type for VNC I/O functions to be ssize_t Daniel P. Berrange
2015-08-28 21:08 ` Eric Blake
2015-08-26 15:05 ` [Qemu-devel] [PATCH v5 9/9] ui: convert VNC server to use QCryptoTLSSession Daniel P. Berrange
2015-09-01 15:08 ` Eric Blake
2015-09-02 11:06 ` 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=20150828131435.GP28526@redhat.com \
--to=berrange@redhat.com \
--cc=eblake@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.