)]}'
{
  "commit": "e843114d7e01ab55707f9913be6e342717f40e06",
  "tree": "496b8effc8861401db3389a78722eed347733d55",
  "parents": [
    "713634d75fd49cc0fff6e121c6050d6864dbbfe8"
  ],
  "author": {
    "name": "Devon H. O\u0027Dell",
    "email": "dhobsd@google.com",
    "time": "Fri Jan 29 15:32:28 2021 -0800"
  },
  "committer": {
    "name": "Devon H. O\u0027Dell",
    "email": "dhobsd@google.com",
    "time": "Wed Feb 03 10:04:53 2021 -0800"
  },
  "message": "[fuchsia-hyper] Add RFC8446 Appendix C.4 session cache\n\nTLS 1.3 makes some large changes around how sessions are resumed. In\nparticular, tickets are no longer sent from the server in plaintext.\nWhile the client does send these to the server in plaintext, section\n4.6.1 of the RFC suggests servers send multiple tickets to the client.\n\nOne reason for this is to prevent tracking of client sessions. Because\nclient session tickets are sent in plain text, it is possible to know\nwhich sessions are related. Clients that never reuse a session ticket\ncannot be tracked in this fashion.\n\nAlthough the default session storage implementation doesn\u0027t reuse\ntickets (it uses the newest ticket supplied), it has some undesirable\nproperties:\n\n * It evicts tickets in an arbitrary order. When the capacity of the\n cache is full, the newest item may be the one evicted. This may return\n the original item, which diminishes privacy.\n * It only stores a single ticket, which prevents effective racing of\n TLS connections in a Happy Eyeballs implementation.\n * When a negotiation attempt fails, the ticket will be retried.\n\nThis change adds a `StoresClientSessions` implementation that solves\nthese issues. The cache is sized and LRU-managed. Because keyspace is\nshared between TLS 1.3 and TLS 1.2 resumption information, insertion of\none where the other is present evicts all the rest. It is expected to be\nunlikely to run into cases where a SN is served by native 1.3 and 1.2\nservers, and that this will continue to be unlikelier.\n\nThe TLS 1.3 cache stores 6 tickets per subject name; this value is\nderived from Appendix C.4, which suggests that this is an expected\nconcurrency level for HTTP/1.1 clients. This is also a reasonable number\nof tickets to store from a Happy Eyeballs perspective, allowing\nconsumption of all 6 tickets within the \"magical\" 2 second window\ndefined-in and oft-cited-from [Miller68].\n\nThis change makes the new C.4 compliant cache the default for\nfuchsia_hyper clients, and updates the httpsdate client library to use\nthis cache as well.\n\n[Miller68]: https://dl.acm.org/doi/10.1145/1476589.1476628\n\nTest: New unit tests, OTA tests, CQ, bogo test in upstream.\nFixed: 68871\n\nChange-Id: Iffa78459c14a2e66f8be38f5c229bfce71afe8a9\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "91da568e9bad1f704a55f03915539c47aadd3e44",
      "old_mode": 33188,
      "old_path": "src/lib/fuchsia-hyper/BUILD.gn",
      "new_id": "093d3e7078eda1f3b94b36f1f39632970ae5dd86",
      "new_mode": 33188,
      "new_path": "src/lib/fuchsia-hyper/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "2944119294c31dbd61f4486a624205d8402cf010",
      "old_mode": 33188,
      "old_path": "src/lib/fuchsia-hyper/OWNERS",
      "new_id": "890abaddf317ce7971792e866b023659e9e3b737",
      "new_mode": 33188,
      "new_path": "src/lib/fuchsia-hyper/OWNERS"
    },
    {
      "type": "modify",
      "old_id": "7d36007489d6c3cc6b6b9fbac19d44f0c74ad242",
      "old_mode": 33188,
      "old_path": "src/lib/fuchsia-hyper/src/lib.rs",
      "new_id": "6d529018852070e73f922d767644646b3e257238",
      "new_mode": 33188,
      "new_path": "src/lib/fuchsia-hyper/src/lib.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5ee8c9bc0f8c98235a3c1be46193c9a2be7b1645",
      "new_mode": 33188,
      "new_path": "src/lib/fuchsia-hyper/src/session_cache.rs"
    },
    {
      "type": "modify",
      "old_id": "9d22558b85628f3f1d08dd0fb25891eb2d86bde1",
      "old_mode": 33188,
      "old_path": "src/sys/time/lib/httpdate-hyper/src/lib.rs",
      "new_id": "978682d216a78a8a0a24c39657432e2546de8683",
      "new_mode": 33188,
      "new_path": "src/sys/time/lib/httpdate-hyper/src/lib.rs"
    }
  ]
}
