)]}'
{
  "commit": "7f5dce08ad77519bfea58880492e1d290cd13cb0",
  "tree": "a72ef5006dace9ac6c6cc95e9099cd417537f3c6",
  "parents": [
    "0663fe9862951a52cc67e3af8213ee99b76297e0"
  ],
  "author": {
    "name": "Filippo Valsorda",
    "email": "filippo@golang.org",
    "time": "Wed Oct 31 09:34:10 2018 -0400"
  },
  "committer": {
    "name": "Filippo Valsorda",
    "email": "filippo@golang.org",
    "time": "Fri Nov 02 22:05:06 2018 +0000"
  },
  "message": "crypto/tls: implement TLS 1.3 version negotiation\n\nRFC 8446 recommends using the supported_versions extension to negotiate\nlower versions as well, so begin by implementing it to negotiate the\ncurrently supported versions.\n\nNote that pickTLSVersion was incorrectly negotiating the ServerHello\nversion down on the client. If the server had illegally sent a version\nhigher than the ClientHello version, the client would have just\ndowngraded it, hopefully failing later in the handshake.\n\nIn TestGetConfigForClient, we were hitting the record version check\nbecause the server would select TLS 1.1, the handshake would fail on the\nclient which required TLS 1.2, which would then send a TLS 1.0 record\nheader on its fatal alert (not having negotiated a version), while the\nserver would expect a TLS 1.1 header at that point. Now, the client gets\nto communicate the minimum version through the extension and the\nhandshake fails on the server.\n\nUpdates #9671\n\nChange-Id: Ie33c7124c0c769f62e10baad51cbed745c424e5b\nReviewed-on: https://go-review.googlesource.com/c/146217\nRun-TryBot: Filippo Valsorda \u003cfilippo@golang.org\u003e\nTryBot-Result: Gobot Gobot \u003cgobot@golang.org\u003e\nReviewed-by: Adam Langley \u003cagl@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d08b096b20900695172476af4b3af748f6d1815d",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/common.go",
      "new_id": "228c06534464b2632f7fdac3a724f92cd2833449",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/common.go"
    },
    {
      "type": "modify",
      "old_id": "322839caacecb2061ac73c39b0b2ad4fce51b10d",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/handshake_client.go",
      "new_id": "cfa7a75b79295355fa617e8b3c20013424a32789",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/handshake_client.go"
    },
    {
      "type": "modify",
      "old_id": "437aaed4625ae343533192927792fc4c071d8d55",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/handshake_client_test.go",
      "new_id": "18c15340ea0e54367f471a5baef07e64534f603b",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/handshake_client_test.go"
    },
    {
      "type": "modify",
      "old_id": "2c916e853e62265fab6c350381407ebea0db98b2",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/handshake_server.go",
      "new_id": "ae793e2dd4d5ab96c8e5a7e4d904fa903633ccfa",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/handshake_server.go"
    },
    {
      "type": "modify",
      "old_id": "01de92d97108b33227210b53146cc441bea6aa61",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/handshake_server_test.go",
      "new_id": "5aaa8152794d66cbd9f2e0e56ed822431b482369",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/handshake_server_test.go"
    }
  ]
}
