Subject: [quicwg/base-drafts] clarify when a client needs to include the version (#325)

From: Marten Seemann <[email-masked]>
Date: Fri, 17 Feb 2017 20:37:31 -0800

There's conflicting information in Section 6.1:

First it says

> If the packet contains a version that is acceptable to the server, the server proceeds with the handshake (Section 6.2). All subsequent packets sent by the server MUST have the VERSION flag unset.

Two paragraphs later it says

> The client MUST set the VERSION flag and include its selected version on all packets until it has 1-RTT keys and it has received a packet from the server that does not have the VERSION flag set.

This is conflicting, because the client may receive a packet from the server (which is not a Version Negotiation Packet, meaning that the server accepted the proposed version) before having the 1-RTT keys.

Furthermore, the last part of the last sentence makes little sense anyway. It's impossible for the client to have 1-RTT keys unless the server already accepted the version.

-- 
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/325

---

From: Martin Thomson <[email-masked]>
Date: Sun, 19 Feb 2017 20:13:47 -0800

These are two separate requirements: the first describes when the server can use the VERSION flag, the second describes when the client can use the VERSION flag.

The latter sentence is the logical conjunction:

```
must_include_version_flag = has_1rtt_keys() && received_packet_without_version()
```

Can you propose a way to reword this that is less confusing to you?

-- 
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/325#issuecomment-280984129

---

From: Marten Seemann <[email-masked]>
Date: Sun, 19 Feb 2017 20:21:22 -0800

@martinthomson: Seems I didn't read carefully enough. There's no conflict in that paragraph. Sorry for that!

I'd still suggest to shorten the second sentence to 

> The client MUST set the VERSION flag and include its selected version on all packets until it has 1-RTT keys.

because there's no way a client can obtain a 1-RTT key from a version negotiation packet.

-- 
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/325#issuecomment-280984865

---

From: Martin Thomson <[email-masked]>
Date: Mon, 20 Feb 2017 15:25:52 -0800

The extra condition is a concession to proprietary things that Google are doing.  If you can convince @janaiyengar, I'd be very happy to make that change.

-- 
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/325#issuecomment-281204994

---

From: ianswett <[email-masked]>
Date: Tue, 21 Feb 2017 06:21:42 -0800

I think we want the ability to do out of band key negotiation, and not just for Google internal use cases, because I believe others will/do have similar use cases.

-- 
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/325#issuecomment-281357335

---

From: Marten Seemann <[email-masked]>
Date: Tue, 21 Feb 2017 06:26:32 -0800

That makes sense, I didn't consider that use case.
I guess nothing needs to be changed here then.

-- 
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/325#issuecomment-281358706

---

From: Marten Seemann <[email-masked]>
Date: Tue, 21 Feb 2017 06:26:32 -0800

Closed #325.

-- 
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/325#event-970793512