)]}'
{
  "commit": "d1975edf8f2c0dac0b7dbcf9b911925e4d8839aa",
  "tree": "14cfcc12de863448fca2db5469fddf9299cefc50",
  "parents": [
    "7ee7e4879560249c1524119e05f05a48c5e2cb09"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Tue Apr 21 13:13:58 2026 -0400"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue Aug 11 14:10:10 2026 -0700"
  },
  "message": "Merge to fips-20250107: Check hashes when parsing test-only, semi-expand ML-KEM private keys\n\nML-KEM has two private key formats: a short seed, and an internal\n\"semi-expanded\" format that is only used in unit and ACVP testing. Only\nthe seed form is reachable from outside the library. Seeds simplify a\nlot of questions, including making it impossible for components of the\nprivate key to be inconsistent with each other.\n\nThe semi-expanded form has a redundancy in that it carries both the\npublic key and the hash. Matching what\nhttps://boringssl-review.googlesource.com/c/boringssl/+/82991 did for\nML-DSA, check the hash is correct as part of parsing. This somewhat\ndefeats the point of having the hash listed explicitly. (It\u0027s an\noptimization for systems that parse a trusted key over and over.) But\nsince we\u0027ve now concluded this wasn\u0027t a great private key format in the\nfirst place, this codepath is test-only anyway. That means there is no\noptimization potential and it is better to include the check to avoid\nhaving to think about it.\n\nSee https://boringssl-review.googlesource.com/c/boringssl/+/93247\n(cherry picked from commit c8eb36bae607541c5c6bc518e60ba6ec44e3d10a)\nChange-Id: I8b5c42bf38b7f7564dc7a125c23d9aa2fa7e568d\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/100807\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "07ed846b14722ac4154d04a67b2ec94ddf2121da",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/mlkem/mlkem.cc.inc",
      "new_id": "c4e5ae48b7d2358852699e2b1d38128f6a5edb28",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/mlkem/mlkem.cc.inc"
    },
    {
      "type": "modify",
      "old_id": "96d652d214c408ad472a3de37372f3746c102bee",
      "old_mode": 33188,
      "old_path": "crypto/mlkem/mlkem_test.cc",
      "new_id": "401ff09e3c254a93471fd4aac1403bc57ffdfcdc",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem_test.cc"
    }
  ]
}
