Subject: [TLS] "Draft Version" extension

From: Eric Rescorla <[email-masked]>
Date: Mon, 11 Aug 2014 09:53:41 -0700

Experience with HTTP 2 has shown that it's convenient to be able to
distinguish which draft version you're implementing so you don't end
worrying about interop between various I-D versions. Accordingly,
for TLS 1.3 I'd like to define a temporary extension that indicates which
TLS 1.3 draft it implements. The idea here is that the client would signal
TLS 1.3 and then "draft 3" and the server would only negotiate 1.3 if
it had a compatible draft. Otherwise it would fall back to TLS 1.2.

My proposed extension would be as follows:

struct {
  uint16 draft_version;
} DraftVersionExtension;

And would have a code point in the (unofficially) experimental range:
0xff02.
We would not need a permanent allocation since once TLS 1.3 ships you
would  send no extension at all.

I've implemented this in NSS and it's trivial to do.

Thoughts?
-Ekr

---

From: Watson Ladd <[email-masked]>
Date: Mon, 11 Aug 2014 10:15:28 -0700

> it had a compatible draft. Otherwise it would fall back to TLS 1.2.

How would the server negotiate v2 vs v3? Nothing in the spec requires the
pain of a version jump. Other then that I think it is reasonable.

0xff02.
> _______________________________________________
> TLS mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/tls
>

---

From: Eric Rescorla <[email-masked]>
Date: Mon, 11 Aug 2014 10:26:20 -0700

On Mon, Aug 11, 2014 at 10:15 AM, Watson Ladd <[email-masked]> wrote:

> How would the server negotiate v2 vs v3?
>

You negotiate TLS 1.2 versus TLS 1.3 via the usual mechanism, I.e., the
version
in the ClientHello.

-Ekr

---

From: Alexey Melnikov <[email-masked]>
Date: Tue, 12 Aug 2014 19:26:24 +0100

> I've implemented this in NSS and it's trivial to do.
Sounds like a good idea. I implemented similar extensions for other 
protocols.