)]}'
{
  "commit": "e68ca57f46efdeebbf72893b35aab2b18a34d2e7",
  "tree": "e09f4b51c1c5c55279a9d43c1889f117de776621",
  "parents": [
    "05a459f795a260e6161c8f06d4ba9b00327d81c8"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Sat Jun 13 15:28:52 2026 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Sat Jun 13 15:53:19 2026 +0100"
  },
  "message": "[crypto] Use generic implementations of slow-path big integer functions\n\nIn the original big integer implementation, big integers were entirely\nopaque to the caller and only the architecture-dependent code knew any\ndetails of the internal structure.\n\nThis has long since ceased to be the case: for the sake of arithmetic\nefficiency, many portions of the codebase now presume that big\nintegers are represented as an array of elements, with each element\nbeing a native-endian unsigned value (with the precise type being\nchosen by the architecture-specific header file) and with the least\nsignificant element being first in the array.\n\nThe functions bigint_init(), bigint_done(), bigint_is_zero(),\nbigint_is_geq(), and bigint_max_bit_set() are never used on fast code\npaths, and most architectures use a generic C implementation of these\nfunctions.\n\nProvide generic implementations of these slow-path functions to be\nused on all architectures.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "988bef5ff68451666d217a7156672ac1843c79be",
      "old_mode": 33188,
      "old_path": "src/arch/arm32/include/bits/bigint.h",
      "new_id": "da6cfbf30e265441e78ee4f33eedb4f0fe18d899",
      "new_mode": 33188,
      "new_path": "src/arch/arm32/include/bits/bigint.h"
    },
    {
      "type": "modify",
      "old_id": "a4c351c9360749d02bb1af2e72d4090d23bb5151",
      "old_mode": 33188,
      "old_path": "src/arch/arm64/include/bits/bigint.h",
      "new_id": "8d7a795310b6b5156a4e381d73d5c7b357b773c7",
      "new_mode": 33188,
      "new_path": "src/arch/arm64/include/bits/bigint.h"
    },
    {
      "type": "modify",
      "old_id": "ac475da67dff04433b82bcca82f4b1b3cd4275ed",
      "old_mode": 33188,
      "old_path": "src/arch/loong64/include/bits/bigint.h",
      "new_id": "b2938f849827dbb40534d659cfdaa51bbd500d53",
      "new_mode": 33188,
      "new_path": "src/arch/loong64/include/bits/bigint.h"
    },
    {
      "type": "modify",
      "old_id": "89718f3ebdb58e2a799b1e7e7ac6c4b7a67e1f08",
      "old_mode": 33188,
      "old_path": "src/arch/riscv/include/bits/bigint.h",
      "new_id": "70a267bbef59892c33b0cfc25d1962609e5a67e0",
      "new_mode": 33188,
      "new_path": "src/arch/riscv/include/bits/bigint.h"
    },
    {
      "type": "modify",
      "old_id": "21cffa0cf7c5f27c06b5f63f92b5bb5b3e11e2df",
      "old_mode": 33188,
      "old_path": "src/arch/x86/include/bits/bigint.h",
      "new_id": "e4ac52d1e8f31a03097550102505ae78d33e3223",
      "new_mode": 33188,
      "new_path": "src/arch/x86/include/bits/bigint.h"
    },
    {
      "type": "modify",
      "old_id": "5d2f7b5601de7525f13bf63a4ca7e48b1428134d",
      "old_mode": 33188,
      "old_path": "src/crypto/bigint.c",
      "new_id": "d3eafe19afdac23ab669999f525c8802ec12e8bf",
      "new_mode": 33188,
      "new_path": "src/crypto/bigint.c"
    },
    {
      "type": "modify",
      "old_id": "7dc9457fca2af3a7d536c44b80543fb8832d6543",
      "old_mode": 33188,
      "old_path": "src/crypto/ffdhe.c",
      "new_id": "41bd90813bbc8ad2258dd132d9b7de85167e308a",
      "new_mode": 33188,
      "new_path": "src/crypto/ffdhe.c"
    },
    {
      "type": "modify",
      "old_id": "783e07a9037d5dc85fecdc91b133ab85033c4abe",
      "old_mode": 33188,
      "old_path": "src/crypto/weierstrass.c",
      "new_id": "ab2df240794ecd0890f03d1827f9e4849a8d1a0b",
      "new_mode": 33188,
      "new_path": "src/crypto/weierstrass.c"
    }
  ]
}
