)]}'
{
  "commit": "500fa1f9d274d06ddfc112e1815ad5dc5ce92234",
  "tree": "8796feeb3eabf5a82d2b5eec7896c9b6bd1ac3bd",
  "parents": [
    "74a51c6ab3c9c674a62bf02c904f12e5109761b8"
  ],
  "author": {
    "name": "Adam Langley",
    "email": "agl@chromium.org",
    "time": "Tue Jul 30 11:26:14 2024 -0700"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Aug 21 19:37:53 2024 +0000"
  },
  "message": "Add ML-KEM.\n\nThis change implements FIPS 203.\n\nThis marks the first use of C++ in libcrypto. If you can\u0027t compile C++\nin this context, please reach out to boringssl@ and filter out the .cc\nfiles for now.\n\nThis also makes marshaling a private key an internal function and,\ninstead, exposes the seed from the generation process and a function to\ncalculate a private key from a seed. Seeds are significantly smaller\nthan NIST\u0027s format for private keys and don\u0027t require validation.\n\nOn an M1 Pro:\n\nDid 22320 Kyber generate + decap operations in 1001900us (22277.7 ops/sec)\nDid 39000 Kyber parse + encap operations in 1005523us (38785.8 ops/sec)\nDid 22608 ML-KEM-768 generate + decap operations in 1010509us (22372.9 ops/sec)\nDid 44000 ML-KEM-768 parse + encap operations in 1013729us (43404.1 ops/sec)\nDid 15410 ML-KEM-1024 generate + decap operations in 1011500us (15234.8 ops/sec)\nDid 29000 ML-KEM-1024 parse + encap operations in 1003919us (28886.8 ops/sec)\n\nChange-Id: Ib563bd4d45228237b55cedbe7d7fdf0f0221a3cc\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/69928\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9cd0f8521eabf2883a2d4e20cca9a8897e05e0f2",
      "old_mode": 33188,
      "old_path": "build.json",
      "new_id": "c44dc6716ad62969a4ef2ee1ed87f19c8a357836",
      "new_mode": 33188,
      "new_path": "build.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9a262c39499aefe90e22ae4df173c8030cb8aeef",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/internal.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eca8134de51f3d0ec4edfd8850ecc46e156883ed",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b4b06e08847fd5dd0cdedd6d5012baa20548367d",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem1024_decap_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b7fd485adb983f362619211317bad82020238a6",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem1024_encap_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "63223189e128a5be5a7b70d2e090787bcff3dfa6",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem1024_keygen_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bdacc5c10ef07713471ebbd97e2422c3014adb7a",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem1024_nist_decap_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8206e8ddb471e914d19f0dbeb9cf0cf8357353be",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem1024_nist_keygen_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fd46649bbe611582abc7749a19c3384093c29ccf",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem768_decap_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "76b0cbdef33fdb4aefe8f7e153317d2551e14ff3",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem768_encap_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7dadd1c420b645389a39eb382c11535842448559",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem768_keygen_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "784fea35802ffc908d75c9e64d4e80a1b3e7017f",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem768_nist_decap_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9a988c84a87d8a4e9fe03bbd0d8894106e3b6190",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem768_nist_keygen_tests.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9868dd958ecd4b96cdab8bdc814870f06167332c",
      "new_mode": 33188,
      "new_path": "crypto/mlkem/mlkem_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f65972fbca3bc9c1d049b9e7bfe7a59daaa9a590",
      "old_mode": 33188,
      "old_path": "gen/sources.bzl",
      "new_id": "5f8a3b2ada8912e25f3049ad5bf1b1ddffcada0b",
      "new_mode": 33188,
      "new_path": "gen/sources.bzl"
    },
    {
      "type": "modify",
      "old_id": "46473608657a6419763fef0369d1a7e5e952ee30",
      "old_mode": 33188,
      "old_path": "gen/sources.cmake",
      "new_id": "919e0a6b0be3755128d68a4ce89f807314629554",
      "new_mode": 33188,
      "new_path": "gen/sources.cmake"
    },
    {
      "type": "modify",
      "old_id": "1ac7ec21c6cc4299fe142d6a0d15d78d6bbb0ed9",
      "old_mode": 33188,
      "old_path": "gen/sources.json",
      "new_id": "795c3ff897d319f467624e04eaa355c9d342262b",
      "new_mode": 33188,
      "new_path": "gen/sources.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "34fdd9d287c8b3914a5fba8b1e193cfc0e729393",
      "new_mode": 33188,
      "new_path": "include/openssl/mlkem.h"
    },
    {
      "type": "modify",
      "old_id": "f8d81f1ab3039c6c9e6e4c2c66064fea27e57651",
      "old_mode": 33188,
      "old_path": "tool/speed.cc",
      "new_id": "a1e74adcb52e6b68878cebc9b95dec526825b679",
      "new_mode": 33188,
      "new_path": "tool/speed.cc"
    },
    {
      "type": "modify",
      "old_id": "d982e6429a33c7a4a18f6a98c9462362327f47e2",
      "old_mode": 33188,
      "old_path": "util/doc.config",
      "new_id": "a16637c91ca5264a86db33f75ddea0675166bf04",
      "new_mode": 33188,
      "new_path": "util/doc.config"
    }
  ]
}
