Subject: [quicwg/base-drafts] Ben Kaduk's TLS Comment 6 (#4482)

From: Lucas Pardue <[email-masked]>
Date: Tue, 05 Jan 2021 18:50:34 -0800

@kaduk said:

> Section 4.1.5
> 
> Why does the server call Get Handshake twice between receiving the
> client Initial and the client's second Hansdhake flight?  IIUC the
> interface says that additional handshake data will only be supplied from
> TLS in response to input handshake data (and thus, not in response to
> TLS generating new keys, which is what the figure suggests to be a
> proximal trigger for the second Get Handshake).  We should probably be
> careful that the interfaces we document are capable of describing the
> case where TLS provides both new keys and handshake bytes, and the
> handshake bytes are split across encryption levels (as is the case for
> the server's first flight), which may be the motivation for the two Get
> Handshake calls depicted here.
> 
> Similarly, it's my understanding that the client should still call Get
> Handshake after receiving the Initial (but would receive only keys and
> not output handshake data at that point).  I'm not sure whether the
> figure should indicate that (ineffectual) Get Handshake call.
> 
> Should the figure indicate the Handshake Confirmed operation in addition
> to Handshake Complete?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/4482

---

From: Martin Thomson <[email-masked]>
Date: Tue, 05 Jan 2021 20:43:22 -0800

I think that the multiple invocations is enough to call out.  However, the retrieval of bytes to send after processing some data is not necessary.  For reference, the [requirement](https://quicwg.org/base-drafts/draft-ietf-quic-tls.html#section-4.1.3-11) is:

> Each time that TLS is provided with new data, new handshake bytes are requested from TLS.

This does not necessarily imply that you pull after every byte provided.  As the bytes here are provided in a coalesced packet, it is reasonable to defer the "Get Handshake" call until all of the bytes arrive.  I know that our stack does, though this is not uniformly true.

to Handshake Complete?

YES!  Thanks.  That's going to be awkward, as it involves QUIC-layer messages, but I think we can do that.  (In a separate PR though.)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/4482#issuecomment-755074278

---

From: Martin Thomson <[email-masked]>
Date: Wed, 06 Jan 2021 22:54:19 -0800

Closed #4482 via #4567.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/4482#event-4178462317