)]}'
{
  "commit": "25072c19053fe87993486e411eb85d059856f1fc",
  "tree": "d638601a71b5bd840d465e0756158f023b2b7a61",
  "parents": [
    "70d63bec9418dd9f4b9dce46fd0f04b6cb00c0fe"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Jun 17 10:48:18 2026 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Jun 17 13:38:50 2026 +0100"
  },
  "message": "[crypto] Use private data field for key exchange algorithms\n\nFor historical reasons, TLS versions 1.2 and earlier identify FFDHE\ngroups by specifying the raw group prime and generator (the \"dh_p\" and\n\"dh_g\" fields in ServerDHParams), rather than using a numeric code to\nidentify a named group.\n\nThis adds complexity to the process of identifying the internal key\nexchange algorithm.  One option would be to extend the definition of\nstruct tls_key_exchange_algorithm to include the identifying values\nfor the field prime and generator, but this is undesirable since the\nfield prime values may be large, and these values are already\navailable (indirectly) in ffdhe.c.\n\nExtend our definition of a key exchange algorithm to include an opaque\nprivate data field.  This allows us to remove the wrapper functions\ncurrently created by FFDHE_GROUP() and WEIERSTRASS_CURVE(), and opens\nup the option of accessing the existing FFDHE field prime and\ngenerator values from within the TLS layer.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d6f9449bef1c19d3fb7588ff8ed177fe771fbda3",
      "old_mode": 33188,
      "old_path": "src/crypto/ffdhe.c",
      "new_id": "004170ddb3de2ac5d3eb3d3b0c840e8467877181",
      "new_mode": 33188,
      "new_path": "src/crypto/ffdhe.c"
    },
    {
      "type": "modify",
      "old_id": "ab2df240794ecd0890f03d1827f9e4849a8d1a0b",
      "old_mode": 33188,
      "old_path": "src/crypto/weierstrass.c",
      "new_id": "7fa18ca41da0747cc9c15c0f2f27e99bdcfd8c3e",
      "new_mode": 33188,
      "new_path": "src/crypto/weierstrass.c"
    },
    {
      "type": "modify",
      "old_id": "58382bc8914745ab055c642f2812d189b68a1df1",
      "old_mode": 33188,
      "old_path": "src/crypto/x25519.c",
      "new_id": "5eb74b627366732861b5219682f69fc39ef2bac4",
      "new_mode": 33188,
      "new_path": "src/crypto/x25519.c"
    },
    {
      "type": "modify",
      "old_id": "ad085533a3b90056d95d18414f80e5f243be238f",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/crypto.h",
      "new_id": "e512ae06ccc1ad05613f353a55c7e5c5547fdcac",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/crypto.h"
    },
    {
      "type": "modify",
      "old_id": "349680fdfddd94c1dafd21ba1755eea892f35330",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/ffdhe.h",
      "new_id": "12e0e31600c6daf1a8186e8140ca48680fa431a5",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/ffdhe.h"
    },
    {
      "type": "modify",
      "old_id": "fa2e53cc982fc2592b161f7154093c913aefcb3e",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/weierstrass.h",
      "new_id": "4095b4a779f9c6fc743ef56bfbfdb4773cc63e02",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/weierstrass.h"
    }
  ]
}
