)]}'
{
  "commit": "9604031edf3be729ce684d7c99e638ecb1d5d83a",
  "tree": "d3013b88fad94e372ba5b55db2fe7718b6e55908",
  "parents": [
    "8fc456031549c1c76f25b512d7d47bcfe489a847"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Jul 03 14:00:09 2026 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Jul 03 14:50:31 2026 +0100"
  },
  "message": "[tls] Restructure to use a single key derivation function master secret\n\nCalls to the key derivation function tls_prf() currently have to pass\nthe relevant secret (i.e. the pre-master secret or the master secret)\nas a parameter.\n\nRestructure to more closely match the design of the TLS version 1.3\nkey schedule, which maintains a single running secret (which we choose\nto name the \"key derivation function master secret\") that is always\nimplicitly used as the secret for key expansion.\n\nThe secret value is currently used by tls_prf() only as the key to\nhmac_init().  We can therefore use hmac_key() to reduce the secret to\na fixed-length value.  (The TLS master secret is already a fixed 48\nbytes, but the pre-master secret may be any length.)\n\nThe fixed length of the secret is dependent upon the protocol version\nand the cipher suite digest algorithm.  For TLS version 1.2, the\nlength is the HMAC key size for the digest algorithm.  For TLS version\n1.1, which uses separate invocations of HMAC-MD5 and HMAC-SHA1, the\nlength is the sum of the HMAC-MD5 and HMAC-SHA1 key sizes.  (For TLS\nversion 1.3, the length will be the HKDF key size, i.e. the output\nsize of the digest algorithm.)\n\nTo avoid introducing some very messy memory allocation code paths, we\ncontinue to use a fixed size of 48 bytes for the resumption master\nsecret stored in the TLS session.  This is sufficient to hold the\n48-byte raw master secret for TLS version 1.2 and earlier, and will\nalso be sufficient to hold the HKDF Derive-Secret output for the\nlongest supported digest algorithm (SHA-384) in TLS version 1.3.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8ae5477c6d08e9dff6711ef88b71a8c635c88c58",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/tls.h",
      "new_id": "befc31f36b22571a24c5fc13befd45a6bbe854f0",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/tls.h"
    },
    {
      "type": "modify",
      "old_id": "f71391a846dfec708283f9019f4031a5ab69aea8",
      "old_mode": 33188,
      "old_path": "src/net/tls.c",
      "new_id": "028cce6dbab133e86ea6b271c96e2c843a20a592",
      "new_mode": 33188,
      "new_path": "src/net/tls.c"
    }
  ]
}
