)]}'
{
  "commit": "6e89b5c4bf8d7a8ece01b533c60a57f194169f97",
  "tree": "71275db4ebc4e4ab34fd0ea5749e41d2d6e6ca95",
  "parents": [
    "cbfa5ef6d32200e0263de9687fafbe1fa46754a5"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Tue Jul 07 15:19:02 2026 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Tue Jul 07 16:04:39 2026 +0100"
  },
  "message": "[tls] Track and check key schedule state\n\nTLS already allows for several different paths to the establishment of\na shared secret channel.  The shared secret may be generated by the\nclient and encrypted using RSA key transport, or negotiated as a\nDiffie-Hellman shared secret (via FFDHE or ECDHE), or mutually agreed\nto be restored from a previously saved session resumption secret.\n\nTLS version 1.3 defines several new paths to exist alongside these:\nephemeral key exchange is moved to the ClientHello and ServerHello\nmessages, server identity is verified using a CertificateVerify\nmessage (instead of a signed ServerKeyExchange or an encrypted\nClientKeyExchange), and session resumption is handled via a new\npre-shared key mechanism.\n\nWhile TLS version 1.3 in isolation is substantially simpler and\ncleaner than earlier versions, the requirement to support both new and\nold versions in the same code comes with a significant complexity\ncost.\n\nGuard against the possibility of future bugs by defining two\nproperties for the key schedule:\n\n- a \"keyed\" flag indicating that the key schedule actually holds some\n  shared secret key material (e.g. from ECDHE)\n\n- a \"bound\" flag indicating that the shared secret key material in the\n  key schedule has been bound to the identity represented by the\n  server\u0027s certificate\n\nThese flags are updated when relevant key schedule events happen, and\nvalidated before processing the server\u0027s Finished message.  If we\nsomehow end up receiving a Finished message without having established\nand authenticated a shared secret, this check prevents us from marking\nthe connection as ready for application data.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3c2bcd450bd71f3c92a610eb67cd3e501541e61d",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/tls.h",
      "new_id": "cbaae22155c42dc4ff92e1cf7e62867338c81ffb",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/tls.h"
    },
    {
      "type": "modify",
      "old_id": "c5cf92fd84122c756b1fc352318403266952f2aa",
      "old_mode": 33188,
      "old_path": "src/net/tls.c",
      "new_id": "f0cad9ff09e31edb24b46d907562bfcd99accc5f",
      "new_mode": 33188,
      "new_path": "src/net/tls.c"
    }
  ]
}
