Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clarify when a client needs to include the version #325

Closed
marten-seemann opened this issue Feb 18, 2017 · 5 comments
Closed

clarify when a client needs to include the version #325

marten-seemann opened this issue Feb 18, 2017 · 5 comments
Labels
-transport editorial An issue that does not affect the design of the protocol; does not require consensus.

Comments

@marten-seemann
Copy link
Contributor

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.

@martinthomson
Copy link
Member

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?

@martinthomson martinthomson added editorial An issue that does not affect the design of the protocol; does not require consensus. -transport labels Feb 20, 2017
@marten-seemann
Copy link
Contributor Author

@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.

@martinthomson
Copy link
Member

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.

@ianswett
Copy link
Contributor

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.

@marten-seemann
Copy link
Contributor Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-transport editorial An issue that does not affect the design of the protocol; does not require consensus.
Projects
None yet
Development

No branches or pull requests

3 participants