)]}'
{
  "log": [
    {
      "commit": "0ce3e48c3de154edaa80f43875591896fa5536b9",
      "tree": "346fac80134b994fb104ebc39f99620af9b61434",
      "parents": [
        "b0e1c486e0c601cb9b94f21772b200ee1d3afe32"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sat Aug 01 11:47:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 11:47:10 2026"
      },
      "message": "Bump downstream dependencies in CI (#15376)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "b0e1c486e0c601cb9b94f21772b200ee1d3afe32",
      "tree": "4c4a2ad9b66cd1319529fe09b7cab0902b04a624",
      "parents": [
        "bdb303963b0f8f0fcb4167b348aea1125b986837"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sat Aug 01 11:46:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 11:46:12 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15375)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "bdb303963b0f8f0fcb4167b348aea1125b986837",
      "tree": "78ec43b4d520124e7c84a9a0bb27fe77d560250f",
      "parents": [
        "dcb7050b807b00392fa9fe2eac7cb362fcf355cc"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Fri Jul 31 15:09:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 15:09:41 2026"
      },
      "message": "reopen main for development (#15373)\n\nBump the version to 51.0.0-dev1 and add a changelog section for the next\nrelease.\n\n\nClaude-Session: https://claude.ai/code/session_01XFSYJJ1k7PDnNV7stHJgLg\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "dcb7050b807b00392fa9fe2eac7cb362fcf355cc",
      "tree": "ed92e8774240414d576106f372ed365a7ea2cbe8",
      "parents": [
        "53fccd93413a8d7f07d6d8999681f27b75cffa3f"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Fri Jul 31 14:05:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 14:05:37 2026"
      },
      "message": "Prepare for 50.0.0 release (#15372)"
    },
    {
      "commit": "53fccd93413a8d7f07d6d8999681f27b75cffa3f",
      "tree": "1f80db7b0424ba5fd7c8a9a975213a573273c37c",
      "parents": [
        "d472f978470fbefa521b86d98b2ecccbbb4d1dd8"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Fri Jul 31 13:24:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 13:24:53 2026"
      },
      "message": "Don\u0027t leak how PKCS#7 encryptedKey decryption failed (#15369)\n\n* Don\u0027t leak how PKCS#7 encryptedKey decryption failed\n\npkcs7_decrypt_der and its PEM and S/MIME variants reported invalid RSA\nPKCS#1 v1.5 padding, a recovered key of the wrong length, and a wrong\nkey as three distinct errors, and the middle one disclosed the exact\nrecovered length. That is a Bleichenbacher oracle for any caller that\ndecrypts untrusted messages. The wrong-length case also returned before\nthe AES-CBC pass, so the same distinction was observable by timing,\nproportional to a content size the attacker chooses.\n\nSubstitute a random key of the expected length on failure, per RFC 3218,\nand continue down an identical path so that every outcome looks alike.\n\nEnvelopedData still authenticates nothing, so revealing whether\ndecryption succeeded remains a CBC padding oracle regardless. That is a\nproperty of PKCS#7 rather than of this implementation, and is now\ndocumented instead.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n\n* Cover the non-ValueError path out of encryptedKey decryption\n\nOnly a ValueError from unwrapping the key is attacker controlled and so\ndeliberately silenced. A private key implemented outside of this library\ncan fail in other ways, and those still reach the caller -- but nothing\nexercised that arm, leaving it uncovered.\n\nAdd a DummyRSAPrivateKey double whose decrypt() raises a TypeError, and\ntests for each of its methods.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n\n* fix?\n\n* error message\n\n---------\n\nCo-authored-by: Claude Opus 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d472f978470fbefa521b86d98b2ecccbbb4d1dd8",
      "tree": "a1ccdbfa5437a4cba603c3776194b1c6ab470e48",
      "parents": [
        "908773d53829fb1466c6db364b31321c3cd8eb9a"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Fri Jul 31 13:05:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 13:05:27 2026"
      },
      "message": "Add `from __future__ import annotations` to all src/ Python files (#15371)\n\n96 of the 104 Python source files under `src/` already carried this\nimport; this adds it to the remaining 8 so the convention holds\nuniformly across the tree.\n\n\nClaude-Session: https://claude.ai/code/session_01RxhHMqmQbqHobfoidB1iFT\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "908773d53829fb1466c6db364b31321c3cd8eb9a",
      "tree": "798076330b1ceb3540155321dc5804a1b0273430",
      "parents": [
        "2cc07cc948948211899bcb0cddd1fddf86e95812"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Fri Jul 31 11:10:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 11:10:23 2026"
      },
      "message": "Bump downstream dependencies in CI (#15368)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "2cc07cc948948211899bcb0cddd1fddf86e95812",
      "tree": "3c2262d3c7eba09e3c6e0010bbb24406c471bb72",
      "parents": [
        "c94ede9f040fa44942f7139772603419000acf66"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Fri Jul 31 11:10:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 11:10:08 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15367)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "c94ede9f040fa44942f7139772603419000acf66",
      "tree": "00933588c0eb63a294ca09abbd3ff970f799fc87",
      "parents": [
        "67a8308dc9ea4cce6056e0f1438f903c208c3f35"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 31 11:09:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 11:09:12 2026"
      },
      "message": "chore(deps): bump ruff from 0.16.0 to 0.16.1 (#15366)\n\nBumps [ruff](https://github.com/astral-sh/ruff) from 0.16.0 to 0.16.1.\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/ruff/compare/0.16.0...0.16.1)\n\n---\nupdated-dependencies:\n- dependency-name: ruff\n  dependency-version: 0.16.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "67a8308dc9ea4cce6056e0f1438f903c208c3f35",
      "tree": "79e9e81c4f83ea5986e743ebbae9fc0563426aa8",
      "parents": [
        "95018ffcdbbc510fd92fc872e3a3e80aa6e58596"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 31 11:08:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 11:08:49 2026"
      },
      "message": "chore(deps): bump virtualenv from 21.7.0 to 21.7.1 (#15365)\n\nBumps [virtualenv](https://github.com/pypa/virtualenv) from 21.7.0 to 21.7.1.\n- [Release notes](https://github.com/pypa/virtualenv/releases)\n- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/pypa/virtualenv/compare/21.7.0...21.7.1)\n\n---\nupdated-dependencies:\n- dependency-name: virtualenv\n  dependency-version: 21.7.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "95018ffcdbbc510fd92fc872e3a3e80aa6e58596",
      "tree": "bacc6ea0421085b0d8ff47838f54ef16fdb47f53",
      "parents": [
        "6954733eaf55a0074abf88f06f7242dfca3a5d02"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 14:45:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 14:45:17 2026"
      },
      "message": "Release the GIL in one-shot AEAD encrypt/decrypt (#15361)\n\n* Release the GIL in one-shot AEAD encrypt/decrypt\n\nFollow-up to the hash/HMAC/cipher GIL-release work: EvpCipherAead\nencrypt/decrypt (the AESGCM, ChaCha20Poly1305, AESGCMSIV, AESOCB3,\nAESSIV, and AESCCM one-shot APIs) now run the process_aad +\nprocess_data + tag region via run_with_gil_detached when\nplaintext + AAD is at least the 2KiB threshold.\n\nBecause the detached region must not touch Python objects, the AAD\nbuffers are now extracted and length-checked up front (extract_aad),\nkeeping the CffiBufs alive on the calling frame while only borrowed\nslices cross into the detached closure. The BoringSSL/AWS-LC EvpAead\npath is unchanged.\n\nBenchmark (Linux x86-64, 4 cores, CPython 3.11, release build):\n\n    4 threads each AESGCM-encrypting 16MiB:\n        9.3 ms -\u003e 5.1 ms wall (1.8x; memory-bandwidth bound)\n    AESGCM encrypt 64B: 617 -\u003e 630 ns (noise)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Address review feedback\n\nFold the AAD slice harvesting and total-length computation into\nextract_aad itself: the returned ExtractedAad carries the raw slices\n(with the full GIL lifetime) alongside the CffiBufs that keep the\nbuffers alive, so call sites just pass extracted.slices() through and\nthe single-AAD path allocates nothing.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Return a tuple from extract_aad\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Address review feedback: pass ExtractedAad through; inline the closures\n\nSplit the AAD extraction result into an AadOwner (the Python buffer\nkeepalives, which stay on the calling frame) and an ExtractedAad (raw\nslices + total length, no Python references) so process_aad takes the\nExtractedAad directly and the whole thing can cross into the detached\nclosure, which is now written inline at each call site.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Make CffiBuf GIL-independent and pass ExtractedAad directly\n\nPer review: store Py rather than Bound inside CffiBuf (PyBuffer is\nalready Send + Sync), which makes CffiBuf itself usable from a detached\nregion as long as it\u0027s kept alive. ExtractedAad is then just the\nCffiBufs, process_aad takes it directly, and the separate owner/slices\nsplit and the wide-lifetime as_bytes_full accessor are gone.\ninto_pyobj now takes py to rebind.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Return the AAD length from extract_aad\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Remove comment per review\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Retain the soundness note on CffiBuf\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "6954733eaf55a0074abf88f06f7242dfca3a5d02",
      "tree": "815ef033a65ce9ef37b61be2c156f76000a327f8",
      "parents": [
        "6893b94c33e948f6240082461424cfb5da2dacc6"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 14:32:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 14:32:39 2026"
      },
      "message": "Release the GIL during DH and DSA parameter generation (#15364)\n\n* Release the GIL during DH and DSA parameter generation\n\nDH parameter generation runs for seconds to minutes at common key sizes\nand DSA parameter generation for hundreds of milliseconds, all while\nholding the GIL and freezing every other thread in the process. Wrap the\nOpenSSL calls in Python::detach; neither closure touches Python objects.\n\nDeliberately NOT detached: EC keygen (~20 us), and DH/DSA\ngenerate_private_key (sub-millisecond to low-millisecond). Re-attaching\nafter a detach can wait up to sys.getswitchinterval() (5 ms default) when\nanother thread is CPU-bound, so detaching operations much shorter than\nthe switch interval makes them dramatically slower under contention\n(measured: EC keygen 55 us -\u003e 5.1 ms per op with a busy background\nthread). Only operations that run for at least tens of milliseconds are\nworth detaching here.\n\nBenchmark (Linux x86-64, CPython 3.11, release build; background Python\nthread\u0027s progress while the main thread generates):\n\n    dsa.generate_parameters(2048): background thread throughput\n        1.0M iters/s -\u003e 27M iters/s (i.e. other threads now actually run)\n    ec.generate_private_key / generate_private_key: unchanged\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Remove comments per review\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "6893b94c33e948f6240082461424cfb5da2dacc6",
      "tree": "040b6800f0b0135e5ba9de16d9cd44e43f11bbd2",
      "parents": [
        "a7582c75fa96560cebdd3db7c07f2b3a93711a15"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 14:13:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 14:13:54 2026"
      },
      "message": "Import _serialization instead of serialization in x509/extensions (#15363)\n\nx509/extensions.py only uses serialization.Encoding and\nserialization.PublicFormat, both defined in _serialization -- the module\nthat exists precisely to break this cycle, and which every asymmetric\nmodule already imports. Importing the serialization package pulled its\nwhole __init__ (and with it ssh.py and its dependency graph) into every\n\u0027import cryptography.x509\u0027.\n\nBenchmark (release build, warm bytecode cache, python -X importtime,\nmin of 5 warm runs):\n\n    import cryptography.x509: 67.8 ms -\u003e 53.7 ms (-21%)\n\n\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "a7582c75fa96560cebdd3db7c07f2b3a93711a15",
      "tree": "824606c39bd549952efda8e4c9da4df47ba9e322",
      "parents": [
        "27307caadda1347a95c969fb221e3118f7c1a73f"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 14:04:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 14:04:08 2026"
      },
      "message": "Remove unused utils.cached_property (#15362)\n\nIt has no callers in the codebase, and its cache-attribute name is\nbuggy anyway: f\"_cached_{func}\" embeds the function repr (including\nits memory address) rather than its name.\n\n\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "27307caadda1347a95c969fb221e3118f7c1a73f",
      "tree": "447c9be224e3005aece2d19a08503f22aab3902a",
      "parents": [
        "d1eaccbcea2c5156b4e46805fff3bef9cfcfa70a"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 13:52:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 13:52:28 2026"
      },
      "message": "Add a fast path to _check_byteslike for common buffer types (#15360)\n\n_check_byteslike constructed a memoryview just to probe whether the\nvalue supports the buffer protocol. Return immediately for\nbytes/bytearray/memoryview instead, which covers essentially all real\ninputs; anything else still goes through the memoryview probe with\nidentical error behavior.\n\nBenchmarks (Linux x86-64, CPython 3.11, release build, min of 7 timeit\nrepeats):\n\n    _check_byteslike(bytes):      204 ns -\u003e 141 ns\n    _check_byteslike(bytearray):  207 ns -\u003e 161 ns\n    _check_byteslike(memoryview): 152 ns -\u003e 179 ns (rare case; pays the\n        isinstance tuple walk)\n    modes.CBC(iv) construction:   455 ns -\u003e 396 ns\n\n\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d1eaccbcea2c5156b4e46805fff3bef9cfcfa70a",
      "tree": "fad17e847e56f7f724be68903f8f59bf786a7ce2",
      "parents": [
        "9bcfcce5ba07d761e279b2f815d5186386430a9c"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 13:44:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 13:44:48 2026"
      },
      "message": "Release the GIL in hash, HMAC, cipher, and AEAD operations (#15359)\n\n* Release the GIL in hash, HMAC, cipher, and AEAD operations\n\nHashing/HMAC/symmetric-cipher/AEAD work held the GIL for the entire\noperation, so multi-threaded workloads serialized completely (unlike\nstdlib hashlib, which releases the GIL for buffers \u003e 2047 bytes).\n\nWrap the underlying OpenSSL calls in Python::detach when the input is at\nleast GIL_DETACH_THRESHOLD (2048) bytes:\n\n- hashes.rs: Hash.update, one-shot Hash.hash, XOFHash.update\n- hmac.rs: HMAC.update\n- ciphers.rs: CipherContext update/update_into (all cipher-context\n  classes) and authenticate_additional_data\n- aead.rs: EvpCipherAead encrypt/decrypt (covering AESGCM,\n  ChaCha20Poly1305, AESGCMSIV, AESOCB3, AESSIV, AESCCM one-shot APIs);\n  AAD buffers are extracted and length-checked while attached, then the\n  process_aad + process_data + tag region runs detached. The\n  BoringSSL/AWS-LC EvpAead path is unchanged.\n\nAll borrowed slices remain owned by CffiBufs held on the calling frame,\nand no Python object access happens inside the detached closures.\n\nBenchmarks (Linux x86-64, 4 cores, CPython 3.11, release build):\n\n    4 threads each SHA256-hashing 16MiB:\n        43.4 ms -\u003e 11.2 ms wall (3.9x scaling; previously 1.01x)\n    4 threads each AESGCM-encrypting 16MiB:\n        9.3 ms -\u003e 5.1 ms wall (1.8x; memory-bandwidth bound)\n    Small payloads (below threshold) are unchanged:\n        SHA256 one-shot 64B: 1093 -\u003e 1090-1120 ns (noise)\n        HMAC-SHA256 64B: 1713 -\u003e 1746 ns (noise)\n        AESGCM encrypt 64B: 617 -\u003e 630 ns (noise)\n        CTR update 64B: 163 -\u003e 166-180 ns (noise)\n    Crossover check: 2048B hash update pays ~75 ns (~5%) for the detach,\n    4KiB and up is at parity single-threaded while enabling scaling.\n\nAlso adds threaded correctness tests for the detached hash and AEAD\npaths.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Address review feedback\n\n- Add a shared run_with_gil_detached helper that encapsulates the\n  threshold check instead of repeating it at every call site.\n- Drop the redundant lifetime comments.\n- Remove the threaded correctness tests.\n- Split the AEAD changes (and the AAD-extraction refactor they require)\n  out of this PR entirely; they\u0027ll come as a follow-up.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Move the GIL release into Hash/Hmac update_bytes; drop changelog entry\n\nPutting run_with_gil_detached inside update_bytes (which now takes py)\ngives every internal caller -- fingerprint, calculate_digest_and_algorithm,\nHPKE, the KDFs, PKCS#12 -- the same large-input GIL release as the public\nupdate methods, instead of special-casing only the pymethod wrappers.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Restore XOFHash::update_bytes with the GIL release inside\n\nIt had become dead code when the detach was inlined into update; keep it\nas the canonical implementation like Hash/Hmac::update_bytes.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "9bcfcce5ba07d761e279b2f815d5186386430a9c",
      "tree": "da03fc770833e831d29d74e6707dbaccba5df831",
      "parents": [
        "6f73ba2cc636bdff52ead29a57c003af10533542"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 12:50:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:50:58 2026"
      },
      "message": "Avoid double allocation in CipherContext.update for stream modes (#15358)\n\n* Avoid double allocation in CipherContext.update for stream modes\n\nCipherContext.update allocated a zeroed Vec of len+block_size, encrypted\ninto it, then allocated a PyBytes and copied the result over -- three\nextra passes over the data. For block_size \u003d\u003d 1 ciphers (CTR, CFB, OFB,\nGCM streaming, ChaCha20, XTS) the output length is exactly the input\nlength, so encrypt directly into the result PyBytes via\nPyBytes::new_with. Block modes keep the scratch-buffer path since their\noutput length depends on internal buffering.\n\nBenchmarks (Linux x86-64, CPython 3.11, release build, min of 7 timeit\nrepeats, reused AES-CTR context):\n\n    update(64B):    163 ns -\u003e 148 ns\n    update(64KiB):  10289 ns -\u003e 8550 ns (1.2x)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Drop the mode enumeration from the streaming-path comment\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "6f73ba2cc636bdff52ead29a57c003af10533542",
      "tree": "c720c1c6aaa244de60ae5276e855531547ba12cb",
      "parents": [
        "33601e1cc0df19930e9633e356ec4f5abe239f84"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Thu Jul 30 12:42:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:42:13 2026"
      },
      "message": "Deprecate Diffie-Hellman over finite fields (FFDH) (#15171)\n\n* Deprecate Diffie-Hellman over finite fields (FFDH)\n\nAccessing any of the classes or functions in\ncryptography.hazmat.primitives.asymmetric.dh now emits a\nCryptographyDeprecationWarning, as does loading a DH key or DH\nparameters via load_{pem,der}_{private,public}_key and\nload_{pem,der}_parameters. Users should migrate to X25519 or ECDH.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017iUUcywCCXL51sy4WUGqbM\n\n* Address review feedback on FFDH deprecation\n\n- Shorten the deprecation messages and docs: don\u0027t name the warning\n  class, and point users open-endedly at more modern key exchange\n  algorithms such as ML-KEM.\n- Deprecate load_pem_parameters/load_der_parameters themselves (they\n  can only load FFDH parameters) instead of warning inside the Rust\n  parameter parsing path.\n- Drop the new deprecation-assertion tests.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017iUUcywCCXL51sy4WUGqbM\n\n* More FFDH deprecation review feedback\n\n- Don\u0027t name a specific replacement algorithm in the deprecation\n  messages and docs.\n- Use pytest.warns() at each load_{pem,der}_parameters callsite in\n  test_dh.py instead of binding the functions at module scope.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017iUUcywCCXL51sy4WUGqbM\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "33601e1cc0df19930e9633e356ec4f5abe239f84",
      "tree": "d09130c5d000dd5548cfc31877258a9e2756c1d4",
      "parents": [
        "9b03229914c67cecee0076ae72d232d35d578dd4"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 12:35:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:35:48 2026"
      },
      "message": "Reduce Fernet per-operation overhead (#15357)\n\n* Reduce Fernet per-operation overhead\n\n- Hoist the PKCS7(128) and SHA256() singletons to module level and cache\n  the AES algorithm object on the Fernet instance instead of rebuilding\n  all three (plus the deprecated-module attribute lookups they involve)\n  on every encrypt/decrypt.\n- MultiFernet.decrypt/decrypt_at_time/extract_timestamp now base64-decode\n  and parse the token once, then try each key against the parsed data\n  (mirroring what rotate() already did) instead of re-decoding the whole\n  token for every key.\n- Use memoryview slices for the HMAC region and ciphertext instead of\n  copying (data[:-32] alone is a full copy per verify).\n\nBenchmarks (Linux x86-64, CPython 3.11, release build, min of 7 timeit\nrepeats):\n\n    Fernet.encrypt (64B):  15712 ns -\u003e 12364 ns\n    Fernet.decrypt (64B):  14245 ns -\u003e 11221 ns\n    MultiFernet (3 keys, oldest matches) decrypt of 1MiB token:\n        12.76 ms -\u003e 6.61 ms (1.9x)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n* Cover MultiFernet.decrypt ttl path and extract_timestamp bad-signature path\n\nMultiFernet.decrypt now computes time_info itself, and\nextract_timestamp\u0027s terminal InvalidToken is only reachable with a\nwell-framed token whose signature matches no key (framing-invalid tokens\nnow raise during the initial parse). Neither path had a test.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "9b03229914c67cecee0076ae72d232d35d578dd4",
      "tree": "1896fa11768562effeb7748c7c54b9420b73236d",
      "parents": [
        "c468ba0e8c813f10ad3b24907cb60a7e09ba4db2"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 12:03:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:03:05 2026"
      },
      "message": "Cache non-deprecated attributes in _ModuleWithDeprecations (#15356)\n\nutils.deprecated() replaces a module in sys.modules with a wrapper whose\n__dict__ only contained _module, so every attribute access on wrapped\nmodules (e.g. ciphers.algorithms, ciphers.modes) went through Python-level\n__getattr__, defeating CPython\u0027s LOAD_ATTR module-attribute caching even\nfor names that aren\u0027t deprecated.\n\nNow non-deprecated attributes are lazily mirrored into the wrapper\u0027s own\n__dict__ on first access, so subsequent lookups are plain module attribute\naccesses. __setattr__/__delattr__ keep the mirror coherent, and\n_DeprecatedValue attributes are never mirrored so they still warn on every\naccess. deprecated()\u0027s public semantics (including the name\u003dNone contract\nrelied on by pyOpenSSL) are unchanged.\n\nBenchmarks (Linux x86-64, CPython 3.11, release build, min of 7 timeit\nrepeats):\n\n    algorithms.AES attribute access:   1042 ns -\u003e 75 ns   (13.9x)\n    modes.CBC attribute access:        1076 ns -\u003e 76 ns   (14.2x)\n    Cipher(AES,CBC).encryptor()+update+finalize (64B):\n                                       8583 ns -\u003e 4038 ns (2.1x)\n    Fernet.encrypt (64B):             15712 ns -\u003e 9740 ns (1.6x)\n    Fernet.decrypt (64B):             14245 ns -\u003e 9650 ns (1.5x)\n\n\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c468ba0e8c813f10ad3b24907cb60a7e09ba4db2",
      "tree": "7a4f35a25b80353a9150e8c228fd98929a11847e",
      "parents": [
        "afde35f5ff8bf39415a68c7308237b14f7aa003c"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 30 12:01:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:01:15 2026"
      },
      "message": "Use sort_by_cached_key when sorting candidate issuers (#15355)\n\nfind_potential_parents sorts candidates with a key function that re-parses\nthe candidate\u0027s extensions (fresh allocation + linear DER re-parse) on\nevery comparison, i.e. O(n log n) parses. sort_by_cached_key computes the\nkey once per candidate.\n\nBenchmark (verify a leaf against a store of N same-DN CAs — the\nadversarial name-collision case the sort exists for; Linux x86-64,\nCPython 3.11, release build, min of 7 timeit repeats):\n\n    N\u003d4:     102.5 us -\u003e 98.4 us\n    N\u003d32:    176.5 us -\u003e 117.2 us  (1.5x)\n    N\u003d100:   359.9 us -\u003e 151.1 us  (2.4x)\n\n\nClaude-Session: https://claude.ai/code/session_01C5bsKENedjVD9gcLApf1x4\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "afde35f5ff8bf39415a68c7308237b14f7aa003c",
      "tree": "8468a16481c192a61af23f6fe0f6891eeec7b76f",
      "parents": [
        "a2fa65cd460197c40761913c1a57c8a99121ffb6"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Thu Jul 30 12:00:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 12:00:11 2026"
      },
      "message": "Bump downstream dependencies in CI (#15354)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "a2fa65cd460197c40761913c1a57c8a99121ffb6",
      "tree": "09dd6811c9dad9707756945a2d13ed1b63452e3a",
      "parents": [
        "9555a863eaeb52fd3b36abab33eca62eef8ea47b"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Thu Jul 30 11:59:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 11:59:56 2026"
      },
      "message": "Bump x509-limbo and/or wycheproof in CI (#15353)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "9555a863eaeb52fd3b36abab33eca62eef8ea47b",
      "tree": "1dd973692cd45dab82b8b49e5761aeffe7b31d4d",
      "parents": [
        "68767d3cf64b59ea4bd5759b9f6b3bcad94145cf"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Thu Jul 30 11:59:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 11:59:45 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15352)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "68767d3cf64b59ea4bd5759b9f6b3bcad94145cf",
      "tree": "cf8b79103f74921166c0cc223154d14694d0c3fd",
      "parents": [
        "51063f2ebe4a7875ca558bf6a96368b5f80dd65f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jul 30 10:11:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 10:11:06 2026"
      },
      "message": "chore(deps): bump filelock from 3.32.0 to 3.32.2 (#15351)\n\nBumps [filelock](https://github.com/tox-dev/py-filelock) from 3.32.0 to 3.32.2.\n- [Release notes](https://github.com/tox-dev/py-filelock/releases)\n- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/py-filelock/compare/3.32.0...3.32.2)\n\n---\nupdated-dependencies:\n- dependency-name: filelock\n  dependency-version: 3.32.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "51063f2ebe4a7875ca558bf6a96368b5f80dd65f",
      "tree": "beb08da0734f96c5b8a3434f502a9b7045f2d1f8",
      "parents": [
        "3b92d4d51b94262f5a794776f79b6ac632d51f8d"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Wed Jul 29 18:30:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 18:30:23 2026"
      },
      "message": "Bump downstream dependencies in CI (#15349)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "3b92d4d51b94262f5a794776f79b6ac632d51f8d",
      "tree": "c88f283f73ff6791ecd2f3fac280c31a033584d8",
      "parents": [
        "c23200ebd2d4062f48f4cc8ecfe5aa184de1b95b"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Wed Jul 29 11:31:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 11:31:34 2026"
      },
      "message": "Bump downstream dependencies in CI (#15348)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "c23200ebd2d4062f48f4cc8ecfe5aa184de1b95b",
      "tree": "670b2df56d9212444371e48b36a7aed2b457f17b",
      "parents": [
        "2bcff0ae809defbdfd50c29ecc143f558c1b1045"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Wed Jul 29 11:31:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 11:31:01 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15347)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "2bcff0ae809defbdfd50c29ecc143f558c1b1045",
      "tree": "c995c7a72d4fc4f26f2c24e073a0655fb417fa83",
      "parents": [
        "124927ff3d67245ef05b03a33ad4d1e2887b13bc"
      ],
      "author": {
        "name": "Ronald van Rij",
        "email": "ronaldvanrij@users.noreply.github.com",
        "time": "Tue Jul 28 20:23:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 20:23:32 2026"
      },
      "message": "Allow a ML-KEM public key in X.509 certificates (#15309)"
    },
    {
      "commit": "124927ff3d67245ef05b03a33ad4d1e2887b13bc",
      "tree": "b79cc0a3a5651bbe54251354902d85850436fd0d",
      "parents": [
        "ed608981585f269171a261249f213eaee50dbdc5"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Tue Jul 28 19:58:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 19:58:31 2026"
      },
      "message": "Bump uv and uv_build to 0.12.0 (#15346)\n\nRegenerates the pinned wheel-builder requirements and widens the\nuv_build build-system bound to allow the 0.12 series.\n\n\nClaude-Session: https://claude.ai/code/session_01DZD4KPC8yQ9z61Y4uZraAx\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ed608981585f269171a261249f213eaee50dbdc5",
      "tree": "2c0495feabd9a59f56519383e3428dd8aed0487b",
      "parents": [
        "66f2a8c17ec1049e05c5bf7789b4cbc2903250ac"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 19:42:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 19:42:28 2026"
      },
      "message": "chore(deps): bump uv from 0.11.32 to 0.12.0 (#15345)\n\nBumps [uv](https://github.com/astral-sh/uv) from 0.11.32 to 0.12.0.\n- [Release notes](https://github.com/astral-sh/uv/releases)\n- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/uv/compare/0.11.32...0.12.0)\n\n---\nupdated-dependencies:\n- dependency-name: uv\n  dependency-version: 0.12.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "66f2a8c17ec1049e05c5bf7789b4cbc2903250ac",
      "tree": "0b357603ae4f15889c056aa09e432b490c4173af",
      "parents": [
        "b7da311bf1798f97686a3cb09cd397d2350232af"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 19:39:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 19:39:39 2026"
      },
      "message": "chore(deps): bump pem from 3.0.6 to 4.0.0 (#15344)\n\nBumps [pem](https://github.com/jcreekmore/pem-rs) from 3.0.6 to 4.0.0.\n- [Changelog](https://github.com/jcreekmore/pem-rs/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/jcreekmore/pem-rs/compare/v3.0.6...v4.0.0)\n\n---\nupdated-dependencies:\n- dependency-name: pem\n  dependency-version: 4.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b7da311bf1798f97686a3cb09cd397d2350232af",
      "tree": "f3d2a0725ca99e06543d6d0ac0640fc3f09916ab",
      "parents": [
        "27e4885821aef793440004e19edfe269842be681"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 11:08:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:08:11 2026"
      },
      "message": "Bump downstream dependencies in CI (#15342)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "27e4885821aef793440004e19edfe269842be681",
      "tree": "65dcd7a9973a45588289fc8942d65cb564b9dc18",
      "parents": [
        "f19469a5ddeb58b52478ca552be86f5cff06d108"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 11:05:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:05:52 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15341)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "f19469a5ddeb58b52478ca552be86f5cff06d108",
      "tree": "da3f251943deff02dc25877a47cb8fc3bcb051ca",
      "parents": [
        "2b602c2bf9f41b4c9aa778a707d68a2961a1ffdc"
      ],
      "author": {
        "name": "mcoret",
        "email": "50789469+mcoret@users.noreply.github.com",
        "time": "Mon Jul 27 17:39:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 17:39:49 2026"
      },
      "message": "Add shake xof classmethods (#15340)\n\n* Add SHAKE XOF convenience classmethods\n\n* Restore changelog newline\n\n* Fix formatting\n\n* Organize imports\n\n* Fix formatting and documentation\n\n* Minor formatting\n\n---------\n\nCo-authored-by: mcore \u003cmcore@gitea.com\u003e"
    },
    {
      "commit": "2b602c2bf9f41b4c9aa778a707d68a2961a1ffdc",
      "tree": "3d24adc17787d7706dbc3f69fb38063901cf58e4",
      "parents": [
        "36126265fa58cd8420664059bce2d70bb9946ef9"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 11:25:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:25:41 2026"
      },
      "message": "Bump downstream dependencies in CI (#15339)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "36126265fa58cd8420664059bce2d70bb9946ef9",
      "tree": "fa2957a4fdc4d902cc37e23756d2c802812ce430",
      "parents": [
        "d919cc4509563295e4807243b8357e5af994d5c3"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 11:24:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:24:35 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15338)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "d919cc4509563295e4807243b8357e5af994d5c3",
      "tree": "25d20332e026107b2f8d3989ad7e5dea51da6bc4",
      "parents": [
        "14a415cf256466d6fe2663df9c675fe47d5a317d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 11:24:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:24:06 2026"
      },
      "message": "chore(deps): bump actions/setup-python in /.github/actions/windows-wheel (#15337)\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 6.3.0 to 7.0.0.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/ece7cb06caefa5fff74198d8649806c4678c61a1...5fda3b95a4ea91299a34e894583c3862153e4b97)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "14a415cf256466d6fe2663df9c675fe47d5a317d",
      "tree": "9ea9a438561788dcf369dbc1e9765184949b5c84",
      "parents": [
        "1a5e94b5f92c50e80563d7c01d71ebed83b48b55"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 11:23:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:23:51 2026"
      },
      "message": "chore(deps): bump actions/setup-python in /.github/actions/windows-tests (#15336)\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 6.3.0 to 7.0.0.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/ece7cb06caefa5fff74198d8649806c4678c61a1...5fda3b95a4ea91299a34e894583c3862153e4b97)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1a5e94b5f92c50e80563d7c01d71ebed83b48b55",
      "tree": "a56a11dd60fdd78b152f28219c5269ac4d34e5e6",
      "parents": [
        "be5a7da58864ca97a08d3d2f97371743f4f42eaf"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 11:23:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:23:36 2026"
      },
      "message": "chore(deps): bump cc from 1.3.0 to 1.4.0 (#15335)\n\nBumps [cc](https://github.com/rust-lang/cc-rs) from 1.3.0 to 1.4.0.\n- [Release notes](https://github.com/rust-lang/cc-rs/releases)\n- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.3.0...cc-v1.4.0)\n\n---\nupdated-dependencies:\n- dependency-name: cc\n  dependency-version: 1.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "be5a7da58864ca97a08d3d2f97371743f4f42eaf",
      "tree": "96520c287b8a7327ae8e4b1674bfa81658c1dd30",
      "parents": [
        "dd786a9543fea31af1e31752a4d91f2702c7dbd2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 11:23:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 11:23:10 2026"
      },
      "message": "chore(deps): bump actions/setup-python from 6.3.0 to 7.0.0 (#15334)\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 6.3.0 to 7.0.0.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/ece7cb06caefa5fff74198d8649806c4678c61a1...5fda3b95a4ea91299a34e894583c3862153e4b97)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "dd786a9543fea31af1e31752a4d91f2702c7dbd2",
      "tree": "24b6cfff3fd5187882d8bae1f104a6868681419f",
      "parents": [
        "6b781b384f6570442921109af3062cc6571265e7"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Sun Jul 26 23:36:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 23:36:16 2026"
      },
      "message": "Permit ML-DSA by default in the X.509 verifier (#15332)\n\n* Permit ML-DSA by default in the X.509 verifier\n\nAdd ML-DSA-44, ML-DSA-65, and ML-DSA-87 to both\nWEBPKI_PERMITTED_SPKI_ALGORITHMS and\nWEBPKI_PERMITTED_SIGNATURE_ALGORITHMS, so that policies built by\nPolicyBuilder accept ML-DSA issuer public keys and ML-DSA certificate\nsignatures without any additional configuration.\n\nML-DSA takes no parameters and is not parameterized by a hash, so the\nsame AlgorithmIdentifier appears in both the SubjectPublicKeyInfo and\nsignature positions and a single constant per variant serves both sets.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01DJ9Qa8WGToptmm9mr2XFkt\n\n* Drop the Python ML-DSA verification tests\n\nThese will be covered by wycheproof instead.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01DJ9Qa8WGToptmm9mr2XFkt\n\n* Trim ML-DSA comments in the verification policy\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01DJ9Qa8WGToptmm9mr2XFkt\n\n* Reword ML-DSA comments and changelog entry\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01DJ9Qa8WGToptmm9mr2XFkt\n\n* Bump x509-limbo in CI to pick up the ML-DSA cert tests\n\nx509-limbo 1252c30 adds an rfc9881 namespace with six ML-DSA testcases,\nwhich give this branch\u0027s permit-list change end-to-end coverage.\n\nThe new cases carry a \"has-mldsa\" feature. Gate it on\nbackend.mldsa_supported() so the CI jobs built against backends without\nML-DSA (OpenSSL \u003c 3.5, LibreSSL) skip them rather than failing when the\nissuer\u0027s public key can\u0027t be parsed.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01DJ9Qa8WGToptmm9mr2XFkt\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "6b781b384f6570442921109af3062cc6571265e7",
      "tree": "e646ef15c71994dd3f68d48820fbe2ea7d1ad686",
      "parents": [
        "e3ea2a9e2d6b923cb43fbc40e07cd40aa09c3225"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Sat Jul 25 16:20:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 16:20:31 2026"
      },
      "message": "remove workaround for memleak tests that don\u0027t exist anymore (#15330)"
    },
    {
      "commit": "e3ea2a9e2d6b923cb43fbc40e07cd40aa09c3225",
      "tree": "1bae722fbbe8759d1fed25806cdf6a2f3647727e",
      "parents": [
        "0a97f91f6011a921867d71263533678e21852e20"
      ],
      "author": {
        "name": "Duksh Koonjoobeeharry",
        "email": "586947+duksh@users.noreply.github.com",
        "time": "Sat Jul 25 13:48:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 13:48:53 2026"
      },
      "message": "Guard the publish job against running from forks (#15325)\n\nwheel-builder.yml triggers on any tag push and pypi-publish.yml chains\nfrom its completion, checking only the event type and conclusion. On a\nfork, pushing a tag therefore attempts an OIDC trusted publish (and\nattestation minting), relying entirely on no trusted publisher being\nconfigured on PyPI for the fork.\n\nAdd the same repository_owner guard the scheduled bot workflows already\nuse to the publish job.\n\n\nClaude-Session: https://claude.ai/code/session_01DWoMomNAcBM3e8duJrb2do\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "0a97f91f6011a921867d71263533678e21852e20",
      "tree": "7f3bd20343bd4d3f9e6d2eabe1c47c577d944b05",
      "parents": [
        "663c3dd367c39a36c96b9f077e3065e8849ba108"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sat Jul 25 13:14:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 13:14:21 2026"
      },
      "message": "Bump downstream dependencies in CI (#15329)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "663c3dd367c39a36c96b9f077e3065e8849ba108",
      "tree": "ab6fb78d6cff43ac92acbf954c8a59c21d80b37e",
      "parents": [
        "d415c799e389c25f484c981a93a6c92ad7981f5b"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sat Jul 25 13:13:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 13:13:51 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15328)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "d415c799e389c25f484c981a93a6c92ad7981f5b",
      "tree": "1388138015432973b45e7b1837ce8f5b0c058967",
      "parents": [
        "da0cbf3484c71446da20ed731ec0a670a66194cd"
      ],
      "author": {
        "name": "Duksh Koonjoobeeharry",
        "email": "586947+duksh@users.noreply.github.com",
        "time": "Sat Jul 25 13:10:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 13:10:48 2026"
      },
      "message": "Remove dead PUBLISH_REQUIREMENTS_PATH env from pypi-publish.yml (#15324)\n\nThis env var points at .github/requirements/publish-requirements.txt,\nwhich no longer exists, and nothing in the workflow reads it.\n\n\nClaude-Session: https://claude.ai/code/session_01DWoMomNAcBM3e8duJrb2do\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "da0cbf3484c71446da20ed731ec0a670a66194cd",
      "tree": "7e21fd004bb367657ce82fcad8099e824c900aee",
      "parents": [
        "59b023bcc96e317690d7ab592c3a7d19de782e4e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 14:15:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 14:15:16 2026"
      },
      "message": "chore(deps): bump ruff from 0.15.22 to 0.16.0 (#15318)\n\nBumps [ruff](https://github.com/astral-sh/ruff) from 0.15.22 to 0.16.0.\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/ruff/compare/0.15.22...0.16.0)\n\n---\nupdated-dependencies:\n- dependency-name: ruff\n  dependency-version: 0.16.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "59b023bcc96e317690d7ab592c3a7d19de782e4e",
      "tree": "b65bfa67cc1282c45c1afa05d07378947ebf6547",
      "parents": [
        "ba4c947d9735a973372759a7825c11847407b13d"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Fri Jul 24 13:53:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 13:53:30 2026"
      },
      "message": "Remove pkcs7_supported from the OpenSSL backend (#15312)\n\nIt unconditionally returned True, so the test markers that used it can\nrely solely on rsa_encryption_supported.\n\n\nClaude-Session: https://claude.ai/code/session_012eYAuV7atLDFf6ufWPnEp6\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ba4c947d9735a973372759a7825c11847407b13d",
      "tree": "dfeb9041a39517d72cc2be40b5de29f77795c8bf",
      "parents": [
        "30619b8d7a9a7abf150cd7d19df0172182bfe132"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Fri Jul 24 13:53:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 13:53:04 2026"
      },
      "message": "fixes for new ruff release (#15321)"
    },
    {
      "commit": "30619b8d7a9a7abf150cd7d19df0172182bfe132",
      "tree": "6462e2f9efec968acfbdbfcbee7a77280fa6eef6",
      "parents": [
        "899c521bff357258432d81adab4c9b81abcb91b5"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 11:10:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 11:10:41 2026"
      },
      "message": "Bump downstream dependencies in CI (#15320)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "899c521bff357258432d81adab4c9b81abcb91b5",
      "tree": "e00c29ed323e025d58c79459b45465ccad64d9b4",
      "parents": [
        "c6203e865a0126ed6545db7439c99fbd97b02bf7"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 11:10:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 11:10:20 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15319)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "c6203e865a0126ed6545db7439c99fbd97b02bf7",
      "tree": "55815d0128ad71df70d23a4a66263ca1d3b194fa",
      "parents": [
        "da98e0830036beb4d00ad6ab0fbc7c3aa3b8f834"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 11:09:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 11:09:12 2026"
      },
      "message": "chore(deps): bump uv from 0.11.31 to 0.11.32 (#15317)\n\nBumps [uv](https://github.com/astral-sh/uv) from 0.11.31 to 0.11.32.\n- [Release notes](https://github.com/astral-sh/uv/releases)\n- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/uv/compare/0.11.31...0.11.32)\n\n---\nupdated-dependencies:\n- dependency-name: uv\n  dependency-version: 0.11.32\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "da98e0830036beb4d00ad6ab0fbc7c3aa3b8f834",
      "tree": "08fd979284e4d9316fb1c49c5d4ddd0d4f52d22d",
      "parents": [
        "7771a6aff5516a61606589eea2ae8c1cbd428c87"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 11:08:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 11:08:59 2026"
      },
      "message": "chore(deps): bump colorlog from 6.11.0 to 6.12.0 (#15316)\n\nBumps [colorlog](https://github.com/borntyping/python-colorlog) from 6.11.0 to 6.12.0.\n- [Release notes](https://github.com/borntyping/python-colorlog/releases)\n- [Commits](https://github.com/borntyping/python-colorlog/compare/v6.11.0...v6.12.0)\n\n---\nupdated-dependencies:\n- dependency-name: colorlog\n  dependency-version: 6.12.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7771a6aff5516a61606589eea2ae8c1cbd428c87",
      "tree": "495d6bbf0bfd9e0e0bc04495bcab8fd65c9f6a71",
      "parents": [
        "7606c47984175679b5fbdd13de7a96db8d69416f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 11:08:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 11:08:42 2026"
      },
      "message": "chore(deps): bump base64 from 0.22.1 to 0.23.0 (#15315)\n\nBumps [base64](https://github.com/marshallpierce/rust-base64) from 0.22.1 to 0.23.0.\n- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)\n- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.22.1...v0.23.0)\n\n---\nupdated-dependencies:\n- dependency-name: base64\n  dependency-version: 0.23.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7606c47984175679b5fbdd13de7a96db8d69416f",
      "tree": "03f0f36d2bc6164a0b18729c0296f5eea4f74495",
      "parents": [
        "e0958922b496d63a32678f8533db41bb4faeaff9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 24 11:05:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 11:05:20 2026"
      },
      "message": "chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#15314)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 7.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e0958922b496d63a32678f8533db41bb4faeaff9",
      "tree": "fd14d074c0514efd422e2e76f80d254e9b823dd7",
      "parents": [
        "ad2ffee0f56b9733a9e759902f8a2c9b483e44d3"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Thu Jul 23 11:06:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 11:06:05 2026"
      },
      "message": "Bump downstream dependencies in CI (#15311)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "ad2ffee0f56b9733a9e759902f8a2c9b483e44d3",
      "tree": "032179d8427506492a930754e7f431656a2716a3",
      "parents": [
        "e027b8cf95779dc191675dc9476d80842e1840a3"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Thu Jul 23 11:05:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 11:05:51 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15310)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "e027b8cf95779dc191675dc9476d80842e1840a3",
      "tree": "c11fbf684dcaeb4e0d49aa7e3b2c6c38c5332643",
      "parents": [
        "48afdb5c45888a753e9891962aa8e339988c5926"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:15:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:15:38 2026"
      },
      "message": "chore(deps): bump filelock from 3.31.2 to 3.32.0 (#15301)\n\nBumps [filelock](https://github.com/tox-dev/py-filelock) from 3.31.2 to 3.32.0.\n- [Release notes](https://github.com/tox-dev/py-filelock/releases)\n- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/py-filelock/compare/3.31.2...3.32.0)\n\n---\nupdated-dependencies:\n- dependency-name: filelock\n  dependency-version: 3.32.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "48afdb5c45888a753e9891962aa8e339988c5926",
      "tree": "45d7868d15be7e11741954efe720ff2a7d5d0c41",
      "parents": [
        "ce196c41b1d4de0926dd9a21cd1752f5d4a07f7d"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:08:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:08:36 2026"
      },
      "message": "Bump downstream dependencies in CI (#15308)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "ce196c41b1d4de0926dd9a21cd1752f5d4a07f7d",
      "tree": "6c5c96a92bbb064309fd8372844caa50c800852f",
      "parents": [
        "d3a54f1ce8a3f16438928e5d5da78ff55e927995"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:08:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:08:07 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15307)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "d3a54f1ce8a3f16438928e5d5da78ff55e927995",
      "tree": "c091911eb1a4b80d0bfafaea7050e1bb1f403ecf",
      "parents": [
        "71bbb097af84596701b5e673901ab2140915e8ca"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:07:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:07:30 2026"
      },
      "message": "chore(deps): bump platformdirs from 4.10.1 to 4.11.0 (#15306)\n\nBumps [platformdirs](https://github.com/tox-dev/platformdirs) from 4.10.1 to 4.11.0.\n- [Release notes](https://github.com/tox-dev/platformdirs/releases)\n- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/platformdirs/compare/4.10.1...4.11.0)\n\n---\nupdated-dependencies:\n- dependency-name: platformdirs\n  dependency-version: 4.11.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "71bbb097af84596701b5e673901ab2140915e8ca",
      "tree": "2d1903c4e5cc1efeeda594001345a542003db428",
      "parents": [
        "56911d560cf8bec18a1af692e59ff83d18065f75"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:06:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:06:59 2026"
      },
      "message": "chore(deps): bump virtualenv from 21.6.1 to 21.7.0 (#15305)\n\nBumps [virtualenv](https://github.com/pypa/virtualenv) from 21.6.1 to 21.7.0.\n- [Release notes](https://github.com/pypa/virtualenv/releases)\n- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/pypa/virtualenv/compare/21.6.1...21.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: virtualenv\n  dependency-version: 21.7.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "56911d560cf8bec18a1af692e59ff83d18065f75",
      "tree": "ea5ffd9580478e7a2fea9909fe951284b361ace4",
      "parents": [
        "df671e5887c2d2f6d54c97bd03e40accaef69743"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:06:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:06:22 2026"
      },
      "message": "chore(deps): bump certifi from 2026.6.17 to 2026.7.22 (#15304)\n\nBumps [certifi](https://github.com/certifi/python-certifi) from 2026.6.17 to 2026.7.22.\n- [Commits](https://github.com/certifi/python-certifi/compare/2026.06.17...2026.07.22)\n\n---\nupdated-dependencies:\n- dependency-name: certifi\n  dependency-version: 2026.7.22\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "df671e5887c2d2f6d54c97bd03e40accaef69743",
      "tree": "cb7276bdd16a7c7f2ab091f329ae777520252112",
      "parents": [
        "b9399c017aa5d145fec269bfa49c8c38e56667e7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:06:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:06:08 2026"
      },
      "message": "chore(deps): bump python-discovery from 1.4.4 to 1.5.0 (#15303)\n\nBumps [python-discovery](https://github.com/tox-dev/python-discovery) from 1.4.4 to 1.5.0.\n- [Release notes](https://github.com/tox-dev/python-discovery/releases)\n- [Changelog](https://github.com/tox-dev/python-discovery/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/python-discovery/compare/1.4.4...1.5.0)\n\n---\nupdated-dependencies:\n- dependency-name: python-discovery\n  dependency-version: 1.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b9399c017aa5d145fec269bfa49c8c38e56667e7",
      "tree": "fd82bc29144f25a0cff137b2a1cc4418bc0ef2f8",
      "parents": [
        "6e82aabecb4e14a3b0e17ac25cd742dd84e5cb22"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:05:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:05:27 2026"
      },
      "message": "chore(deps): bump uv from 0.11.30 to 0.11.31 (#15302)\n\nBumps [uv](https://github.com/astral-sh/uv) from 0.11.30 to 0.11.31.\n- [Release notes](https://github.com/astral-sh/uv/releases)\n- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/uv/compare/0.11.30...0.11.31)\n\n---\nupdated-dependencies:\n- dependency-name: uv\n  dependency-version: 0.11.31\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "6e82aabecb4e14a3b0e17ac25cd742dd84e5cb22",
      "tree": "4fd7313c3ac48593a70382bea4c7be912f41b28f",
      "parents": [
        "90de462331bf820dcdd57acc53d67be459f012a9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 22 11:03:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:03:58 2026"
      },
      "message": "chore(deps): bump libc from 0.2.188 to 0.2.189 (#15300)\n\nBumps [libc](https://github.com/rust-lang/libc) from 0.2.188 to 0.2.189.\n- [Release notes](https://github.com/rust-lang/libc/releases)\n- [Changelog](https://github.com/rust-lang/libc/blob/0.2.189/CHANGELOG.md)\n- [Commits](https://github.com/rust-lang/libc/compare/0.2.188...0.2.189)\n\n---\nupdated-dependencies:\n- dependency-name: libc\n  dependency-version: 0.2.189\n  dependency-type: indirect\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "90de462331bf820dcdd57acc53d67be459f012a9",
      "tree": "76ccae997d56cf992aa98f4cad174ffd6bc8948c",
      "parents": [
        "4920f5b847de1f7bd0ef5cc10f92be50770e0bc5"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Tue Jul 21 16:44:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 16:44:10 2026"
      },
      "message": "Add a Cobblestone recipe implementing c2sp.org/chunked-encryption (#15144)\n\n* Add a chunked encryption recipe implementing c2sp.org/chunked-encryption\n\nThis adds cryptography.chunked_encryption, a top-level recipe (like\nFernet) for streaming authenticated encryption of large messages,\nimplementing the C2SP chunked-encryption specification\n(https://c2sp.org/chunked-encryption) instantiated with SHA-256 and\nAES-128-GCM.\n\nThe core is implemented in Rust: for each message a fresh key, base\nnonce, and key commitment are derived with HKDF-Expand-SHA-256 from the\ninput key, a random 24-byte salt, and a caller-provided context; the\nmessage is encrypted in 16 KiB chunks with AES-128-GCM, with the chunk\ncounter XOR\u0027d into the base nonce. Full chunks are encrypted/decrypted\ndirectly from the caller\u0027s input, so only sub-chunk remainders are\nbuffered internally, and update_into variants allow callers to supply\noutput buffers.\n\nThe internals are parameterized over the AEAD so that additional AEADs\ncould be supported later, but the public API is AES-128-GCM only.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Address review feedback on chunked encryption\n\n- Use the existing AesGcm AEAD implementation for chunk\n  encryption/decryption instead of using OpenSSL\u0027s EVP interface\n  directly (AESGCM.decrypt_into is now pub(crate) for this).\n- Use the existing HkdfExpand implementation for key derivation.\n- Fold the error state into the finalized state: a context that hit an\n  error raises AlreadyFinalized on further use.\n- Replace the let-else in Decrypter::update_impl with a match that\n  yields the cipher and buffer fields.\n- Replace the in-test reference implementation with the test vectors\n  from the chunked reference implementation\n  (https://github.com/FiloSottile/chunked), vendored into\n  cryptography_vectors.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Add PiB to the docs spelling wordlist\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Restructure chunked encryption for full test coverage\n\n- Extract the chunk counter/nonce logic into a ChunkNonces struct with\n  Rust unit tests covering the 2**38-chunk limit, which can\u0027t be\n  reached from Python tests.\n- Track the Decrypter state as Option\u003cDecrypterState\u003e and process both\n  active states in a single exhaustive match, removing the\n  unreachable!() arms; finalize() now consumes the state on all paths.\n- Drop the Encrypter\u0027s error poisoning: the only errors it guarded\n  against are the capacity check (which fails before any state is\n  modified) and internal OpenSSL errors.\n- Test that a Decrypter is unusable after update_into() raises\n  InvalidTag.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Address review feedback: drop overhead paragraph, document buffer invariant\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Expose the Cobblestone-128 and Cobblestone-256 instantiations\n\nC2SP/C2SP#296 names the chunked-encryption spec\u0027s two instantiations:\nCobblestone-128 (SHA-512 and AES-128-GCM, recommended) and\nCobblestone-256 (SHA-512 and AES-256-GCM, compliance-oriented). Replace\nthe Encrypter/Decrypter classes with Cobblestone128Encryptor,\nCobblestone128Decryptor, Cobblestone256Encryptor, and\nCobblestone256Decryptor, sharing the core implementation, and switch\nthe HKDF-Expand hash from SHA-256 to SHA-512 per the updated spec.\n\nThe vendored reference test vectors predate this spec change (they\nwere generated with HKDF-SHA-256), so the vector tests are removed\nuntil the reference implementation regenerates them.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Replace the variant macro with explicit class definitions\n\nThe four Cobblestone classes are now plain compositions over internal\nChunkedEncryptor/ChunkedDecryptor types.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Address review feedback: trim docs, drop Decryptor.generate_key, prune Rust tests\n\n- Simplify the docs per review: drop the intro properties paragraph,\n  the os.urandom mention, and the redundant clauses in the update_into\n  and finalize descriptions.\n- Remove generate_key from the Decryptor classes; key generation is an\n  encryption-side operation.\n- Drop the nonce XOR unit test: that path is fully covered by the\n  Python round-trip tests. The remaining Rust test covers only the\n  chunk counter limit, which is unreachable from Python.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Remove hasattr assert from test_generate_key\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Rename the module to cryptography.cobblestone, trim docs\n\nPer review: the module, docs page, stubs, and Rust module are renamed\nfrom chunked_encryption to cobblestone (the classes were already named\nfor the Cobblestone instantiations), and the docs\u0027 Implementation\nsection is dropped since the page already states it implements the\nC2SP chunked-encryption specification.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n* Add Wycheproof tests for Cobblestone\n\nBumps the wycheproof ref to pick up the c2sp.org/chunked-encryption\n(Cobblestone) test vectors added in C2SP/wycheproof#265.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01Uyk58oD6F8BJwKHE4qCMA8\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "4920f5b847de1f7bd0ef5cc10f92be50770e0bc5",
      "tree": "5c70bf5c7e15c84f751057526f65828cd058daa1",
      "parents": [
        "8f75811f8d3d87d918ea4b0f230ec733e04b01ea"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 14:20:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 14:20:58 2026"
      },
      "message": "Bump x509-limbo and/or wycheproof in CI (#15298)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "8f75811f8d3d87d918ea4b0f230ec733e04b01ea",
      "tree": "23ba5f890d733efa7a1028da1f101cd94d90e9d3",
      "parents": [
        "99f58505acb610b68f970ff1f57c8602c0a177f9"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 11:07:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:07:49 2026"
      },
      "message": "Bump downstream dependencies in CI (#15297)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "99f58505acb610b68f970ff1f57c8602c0a177f9",
      "tree": "bed2906746f9df1b3b99e0bc6c10ebfed98bcbe0",
      "parents": [
        "e2ee723a9fe0c23a1ee8f277b1957309c60a87cb"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 11:07:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:07:04 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15296)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "e2ee723a9fe0c23a1ee8f277b1957309c60a87cb",
      "tree": "04efa33a4954a7576c49f8499ad64d34ff038b89",
      "parents": [
        "669b1bffbf54c77762ed8cceb6d02e504a0feda4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 11:05:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:05:49 2026"
      },
      "message": "chore(deps): bump filelock from 3.31.1 to 3.31.2 (#15295)\n\nBumps [filelock](https://github.com/tox-dev/py-filelock) from 3.31.1 to 3.31.2.\n- [Release notes](https://github.com/tox-dev/py-filelock/releases)\n- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/py-filelock/compare/3.31.1...3.31.2)\n\n---\nupdated-dependencies:\n- dependency-name: filelock\n  dependency-version: 3.31.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "669b1bffbf54c77762ed8cceb6d02e504a0feda4",
      "tree": "67e281a552981006087588e6948ca810794a0961",
      "parents": [
        "c527b0437a9547cf2b66221ef9d2953567c122cb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 11:04:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:04:25 2026"
      },
      "message": "chore(deps): bump uv from 0.11.29 to 0.11.30 (#15294)\n\nBumps [uv](https://github.com/astral-sh/uv) from 0.11.29 to 0.11.30.\n- [Release notes](https://github.com/astral-sh/uv/releases)\n- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/uv/compare/0.11.29...0.11.30)\n\n---\nupdated-dependencies:\n- dependency-name: uv\n  dependency-version: 0.11.30\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c527b0437a9547cf2b66221ef9d2953567c122cb",
      "tree": "d285dab09b090bbe8c302836b2c67e5e97bf67fa",
      "parents": [
        "2f67c6d1d2e70a018b495a9cf66b72974b0ec8cc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 11:04:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:04:06 2026"
      },
      "message": "chore(deps): bump libc from 0.2.186 to 0.2.188 (#15293)\n\nBumps [libc](https://github.com/rust-lang/libc) from 0.2.186 to 0.2.188.\n- [Release notes](https://github.com/rust-lang/libc/releases)\n- [Changelog](https://github.com/rust-lang/libc/blob/0.2.188/CHANGELOG.md)\n- [Commits](https://github.com/rust-lang/libc/compare/0.2.186...0.2.188)\n\n---\nupdated-dependencies:\n- dependency-name: libc\n  dependency-version: 0.2.188\n  dependency-type: indirect\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2f67c6d1d2e70a018b495a9cf66b72974b0ec8cc",
      "tree": "df1e543573b87ff36b2efeb8b06306784b091fd4",
      "parents": [
        "af7187823a82711e69c154838cdfeff02c493ddd"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 11:10:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:10:20 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15291)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "af7187823a82711e69c154838cdfeff02c493ddd",
      "tree": "3434ad3fc3424266d67000161f2f10bb01195e1a",
      "parents": [
        "01993539338f677c40db0996b753332b39b2dfda"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 11:09:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:09:52 2026"
      },
      "message": "chore(deps): bump filelock from 3.31.0 to 3.31.1 (#15290)\n\nBumps [filelock](https://github.com/tox-dev/py-filelock) from 3.31.0 to 3.31.1.\n- [Release notes](https://github.com/tox-dev/py-filelock/releases)\n- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/py-filelock/compare/3.31.0...3.31.1)\n\n---\nupdated-dependencies:\n- dependency-name: filelock\n  dependency-version: 3.31.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "01993539338f677c40db0996b753332b39b2dfda",
      "tree": "a00653f56af3f0ae7bab7b117df00131305b52f9",
      "parents": [
        "d261282f4f07bb8cc19632e816c5ea49ca711d15"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 11:08:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:08:58 2026"
      },
      "message": "chore(deps): bump proc-macro2 from 1.0.106 to 1.0.107 (#15289)\n\nBumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.106 to 1.0.107.\n- [Release notes](https://github.com/dtolnay/proc-macro2/releases)\n- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.106...1.0.107)\n\n---\nupdated-dependencies:\n- dependency-name: proc-macro2\n  dependency-version: 1.0.107\n  dependency-type: indirect\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d261282f4f07bb8cc19632e816c5ea49ca711d15",
      "tree": "cb31a2d68a169fda71ea8527346bddf41b512066",
      "parents": [
        "1f3dbe392302ca23ad7fc53d0ab45b189f978ab8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 11:08:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:08:44 2026"
      },
      "message": "chore(deps): bump quote from 1.0.46 to 1.0.47 (#15288)\n\nBumps [quote](https://github.com/dtolnay/quote) from 1.0.46 to 1.0.47.\n- [Release notes](https://github.com/dtolnay/quote/releases)\n- [Commits](https://github.com/dtolnay/quote/compare/1.0.46...1.0.47)\n\n---\nupdated-dependencies:\n- dependency-name: quote\n  dependency-version: 1.0.47\n  dependency-type: indirect\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1f3dbe392302ca23ad7fc53d0ab45b189f978ab8",
      "tree": "43d01bd2d5fb14948866d772607ef6f3466f4b06",
      "parents": [
        "4deeccb5d10b05a68496cb2eec44472607aa829e"
      ],
      "author": {
        "name": "Alex Gaynor",
        "email": "alex.gaynor@gmail.com",
        "time": "Mon Jul 20 03:38:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 03:38:17 2026"
      },
      "message": "Convert tests/test_warnings.py to pytest.warns (#15287)\n\nReplace manual warnings.catch_warnings(record\u003dTrue) bookkeeping with\npytest.warns context managers, matching how the rest of the test suite\nasserts on deprecation warnings.\n\n\nClaude-Session: https://claude.ai/code/session_01RMa6i49De2hUnfnrgheCXZ\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "4deeccb5d10b05a68496cb2eec44472607aa829e",
      "tree": "6dece7a18d5ebdfe72fb861182be0e040d16cc80",
      "parents": [
        "2c1f623e981fd7d1b1b5dfaa18c3d0f2bf3e0dd7"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sun Jul 19 13:05:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 13:05:58 2026"
      },
      "message": "Bump downstream dependencies in CI (#15286)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "2c1f623e981fd7d1b1b5dfaa18c3d0f2bf3e0dd7",
      "tree": "2cad6f4a5eeeb1131dc336d7d2777e8a0f5216cb",
      "parents": [
        "1f89b14b3696f8b5c9b1c4b945bb3ad449d9ec64"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sun Jul 19 13:04:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 13:04:59 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15285)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "1f89b14b3696f8b5c9b1c4b945bb3ad449d9ec64",
      "tree": "57724307bb8ee9c378d1ea048731ed297a0021a5",
      "parents": [
        "4826e77276d960dc14bd174637dba8f6b9e3b48e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 18 21:47:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 21:47:41 2026"
      },
      "message": "chore(deps): bump cc from 1.2.67 to 1.3.0 (#15281)\n\nBumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.67 to 1.3.0.\n- [Release notes](https://github.com/rust-lang/cc-rs/releases)\n- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.67...cc-v1.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: cc\n  dependency-version: 1.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4826e77276d960dc14bd174637dba8f6b9e3b48e",
      "tree": "b74ee883de670eaeb59458fa87869e87141fb7df",
      "parents": [
        "9212b687b13b9fddabe10aded48c412e4b648f57"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 18 21:42:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 21:42:58 2026"
      },
      "message": "chore(deps): bump colorlog from 6.10.1 to 6.11.0 (#15283)\n\nBumps [colorlog](https://github.com/borntyping/python-colorlog) from 6.10.1 to 6.11.0.\n- [Release notes](https://github.com/borntyping/python-colorlog/releases)\n- [Commits](https://github.com/borntyping/python-colorlog/compare/v6.10.1...v6.11.0)\n\n---\nupdated-dependencies:\n- dependency-name: colorlog\n  dependency-version: 6.11.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9212b687b13b9fddabe10aded48c412e4b648f57",
      "tree": "abec9dde63d66e801ac7a1c263bcee57eed2b18a",
      "parents": [
        "912f8a9a37586746e7cd762d271715ffcc1ce0b6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 18 21:41:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 21:41:34 2026"
      },
      "message": "chore(deps): bump platformdirs from 4.10.0 to 4.10.1 (#15284)\n\nBumps [platformdirs](https://github.com/tox-dev/platformdirs) from 4.10.0 to 4.10.1.\n- [Release notes](https://github.com/tox-dev/platformdirs/releases)\n- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/platformdirs/compare/4.10.0...4.10.1)\n\n---\nupdated-dependencies:\n- dependency-name: platformdirs\n  dependency-version: 4.10.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "912f8a9a37586746e7cd762d271715ffcc1ce0b6",
      "tree": "eebf374fbed2ef8985e36295cac7f390092d41a7",
      "parents": [
        "af809f203ee27c393f73a495746b5f678140a3bd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 18 21:40:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 21:40:06 2026"
      },
      "message": "chore(deps): bump filelock from 3.30.2 to 3.31.0 (#15282)\n\nBumps [filelock](https://github.com/tox-dev/py-filelock) from 3.30.2 to 3.31.0.\n- [Release notes](https://github.com/tox-dev/py-filelock/releases)\n- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/py-filelock/compare/3.30.2...3.31.0)\n\n---\nupdated-dependencies:\n- dependency-name: filelock\n  dependency-version: 3.31.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "af809f203ee27c393f73a495746b5f678140a3bd",
      "tree": "263cd3f083302b92b253054a4b15a73c528b8be5",
      "parents": [
        "fd9b4f51d5c64ffddbc0c922caf9563b55dfb9f9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 18 21:33:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 21:33:55 2026"
      },
      "message": "chore(deps): bump portable-atomic from 1.13.1 to 1.14.0 (#15280)\n\nBumps [portable-atomic](https://github.com/taiki-e/portable-atomic) from 1.13.1 to 1.14.0.\n- [Release notes](https://github.com/taiki-e/portable-atomic/releases)\n- [Changelog](https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/taiki-e/portable-atomic/compare/v1.13.1...v1.14.0)\n\n---\nupdated-dependencies:\n- dependency-name: portable-atomic\n  dependency-version: 1.14.0\n  dependency-type: indirect\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd9b4f51d5c64ffddbc0c922caf9563b55dfb9f9",
      "tree": "fd1587ea7e12fdf149dc8d218a19d335aab895d8",
      "parents": [
        "4f1ecb893d3881d37bc210018e83efaeb690f323"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sat Jul 18 12:20:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 12:20:22 2026"
      },
      "message": "Bump downstream dependencies in CI (#15279)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "4f1ecb893d3881d37bc210018e83efaeb690f323",
      "tree": "d66d399cee8d33c8af0def541dc2bc891d8991e5",
      "parents": [
        "ffba0514e4d095e87bd1cdb11237e256924fa02b"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Sat Jul 18 12:20:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 12:20:06 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15278)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "ffba0514e4d095e87bd1cdb11237e256924fa02b",
      "tree": "071804ab9c481273067f4de3a45d941718dc6608",
      "parents": [
        "0b68a0039e7322c64e695f0c3c3d60accbb9eeda"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 10:54:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:54:22 2026"
      },
      "message": "Bump downstream dependencies in CI (#15277)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "0b68a0039e7322c64e695f0c3c3d60accbb9eeda",
      "tree": "d34ecb59d539050c220a652981a12018639c7793",
      "parents": [
        "052aef564e2815d34a9b4f8b3a41e4809ea35e5c"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 10:53:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:53:56 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15276)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "052aef564e2815d34a9b4f8b3a41e4809ea35e5c",
      "tree": "ac9261280ab7a641fc5a173175b0fce269d8241a",
      "parents": [
        "45111f9bb44b7232f4132c6f6c352b4a43bda086"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 10:53:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:53:30 2026"
      },
      "message": "chore(deps): bump ruff from 0.15.21 to 0.15.22 (#15275)\n\nBumps [ruff](https://github.com/astral-sh/ruff) from 0.15.21 to 0.15.22.\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/ruff/compare/0.15.21...0.15.22)\n\n---\nupdated-dependencies:\n- dependency-name: ruff\n  dependency-version: 0.15.22\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "45111f9bb44b7232f4132c6f6c352b4a43bda086",
      "tree": "a4d9b838815946a89e1794ef555ea776acd93790",
      "parents": [
        "b1b616f29f76c38fa353d3d7de78cfcae005dfe8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 10:53:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:53:17 2026"
      },
      "message": "chore(deps): bump filelock from 3.30.0 to 3.30.2 (#15274)\n\nBumps [filelock](https://github.com/tox-dev/py-filelock) from 3.30.0 to 3.30.2.\n- [Release notes](https://github.com/tox-dev/py-filelock/releases)\n- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/py-filelock/compare/3.30.0...3.30.2)\n\n---\nupdated-dependencies:\n- dependency-name: filelock\n  dependency-version: 3.30.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b1b616f29f76c38fa353d3d7de78cfcae005dfe8",
      "tree": "e0f79aa0b3a3fe692f4bf8259c2517ca9789b743",
      "parents": [
        "2f2f8bd875853d86b11c398e4cae1f1db21ea63e"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Fri Jul 17 10:49:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:49:49 2026"
      },
      "message": "Hoist XTS mode check out of CipherContext update loop (#15273)\n\nCipherContext::update_into called back into Python with an\nis_instance(XTS) check on every 2^29-byte chunk of every update call,\neven though whether the mode is XTS is fixed at construction (where an\nidentical check already runs). Store the result as a bool on the\ncontext and branch on that instead, removing a Python type lookup and\nisinstance call from the streaming cipher hot path.\n\nThe py parameter to update_into existed only for that check, so it is\ndropped from the internal method and its callers.\n\n\nClaude-Session: https://claude.ai/code/session_01XcTyprD7CsgzGHV9kEwksy\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "2f2f8bd875853d86b11c398e4cae1f1db21ea63e",
      "tree": "ea147e609f2ed3c9bcbed51829f9ab398c6449ec",
      "parents": [
        "b6c4aa310ad3eb8f32458e517cae1a7b2a0347bd"
      ],
      "author": {
        "name": "Paul Kehrer",
        "email": "paul.l.kehrer@gmail.com",
        "time": "Thu Jul 16 22:41:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 22:41:10 2026"
      },
      "message": "Migrate AES key wrap functions to Rust (#15252)\n\n* Implement AES key wrapping in Rust\n\nThe RFC 3394/5649 wrap and unwrap loops were implemented in Python,\nmaking one call into the extension per 8-byte block (6n calls per\noperation) plus several int/bytes allocations per iteration. Moving the\nloops into Rust reduces each operation to a single extension call,\nmaking key wrapping 17-30x faster depending on payload size.\n\nAs part of this, aes_key_unwrap_with_padding now raises InvalidUnwrap\ninstead of ValueError for wrapped keys whose length is not a multiple\nof 8 bytes; previously such inputs failed with an incidental ValueError\nraised by the underlying cipher\u0027s finalize().\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_014ki2rU5KMuRkxtGEpkQc2w\n\n* Address review feedback: drop changelog entry, Buffer type stubs, remove comments\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_014ki2rU5KMuRkxtGEpkQc2w\n\n* Use the safe cipher_update API in keywrap\n\nThe safe API asserts the output buffer has room for input length plus\none block, so give it a 32-byte scratch buffer rather than reaching for\ncipher_update_unchecked with an exactly-sized one. This removes all\nunsafe code from the module; ECB with padding disabled still always\nwrites exactly 16 bytes, which we assert.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_014ki2rU5KMuRkxtGEpkQc2w\n\n* Remove debug asserts in keywrap\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_014ki2rU5KMuRkxtGEpkQc2w\n\n* Address review feedback in keywrap\n\nwrap_core now takes the data immutably and performs the wrapping in the\nresult allocation directly, instead of mutating a scratch copy and then\ncopying it again; this also drops a to_vec in aes_key_wrap. Also use\nbare `_ \u003d backend` rather than `let _ \u003d backend`.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_014ki2rU5KMuRkxtGEpkQc2w\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "b6c4aa310ad3eb8f32458e517cae1a7b2a0347bd",
      "tree": "1e5ac2c624737231fe056acfbfad0d744bc5c2da",
      "parents": [
        "c1cf259af539e905b538d88c2d3d6dcc20db8597"
      ],
      "author": {
        "name": "Magnus Watn",
        "email": "magnus@watn.no",
        "time": "Thu Jul 16 19:30:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 19:30:22 2026"
      },
      "message": "Add support for creating unsigned certificates (#15242)"
    },
    {
      "commit": "c1cf259af539e905b538d88c2d3d6dcc20db8597",
      "tree": "e80e787210ceda526edfe401aa4f6cb37bc86076",
      "parents": [
        "579a37e3fde36bfff66d2607363a3fc70e2178d7"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Thu Jul 16 11:08:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 11:08:54 2026"
      },
      "message": "Bump downstream dependencies in CI (#15271)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "579a37e3fde36bfff66d2607363a3fc70e2178d7",
      "tree": "d440120179c70d032bed2570165123808d4a6f2c",
      "parents": [
        "e4fca080ae90339726ec2ebf15d54026ac25122d"
      ],
      "author": {
        "name": "pyca-boringbot[bot]",
        "email": "106132319+pyca-boringbot[bot]@users.noreply.github.com",
        "time": "Thu Jul 16 11:08:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 11:08:11 2026"
      },
      "message": "Bump BoringSSL, OpenSSL, AWS-LC in CI (#15270)\n\nCo-authored-by: pyca-boringbot[bot] \u003cpyca-boringbot[bot]+106132319@users.noreply.github.com\u003e"
    },
    {
      "commit": "e4fca080ae90339726ec2ebf15d54026ac25122d",
      "tree": "9a4e8d22796e3f50564d676f91c0c7c80ebbd866",
      "parents": [
        "2538e72a46519fd393c8f22ed5b42dd07798c2d6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jul 16 11:07:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 11:07:22 2026"
      },
      "message": "chore(deps): bump filelock from 3.29.7 to 3.30.0 (#15269)\n\nBumps [filelock](https://github.com/tox-dev/py-filelock) from 3.29.7 to 3.30.0.\n- [Release notes](https://github.com/tox-dev/py-filelock/releases)\n- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/tox-dev/py-filelock/compare/3.29.7...3.30.0)\n\n---\nupdated-dependencies:\n- dependency-name: filelock\n  dependency-version: 3.30.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2538e72a46519fd393c8f22ed5b42dd07798c2d6",
      "tree": "52a8def8876326d4bf9a47c615338badcb55e7ea",
      "parents": [
        "da2d8914672960594de989dc05ffc05d3768dac5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jul 16 11:06:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 11:06:00 2026"
      },
      "message": "chore(deps): bump uv from 0.11.28 to 0.11.29 (#15268)\n\nBumps [uv](https://github.com/astral-sh/uv) from 0.11.28 to 0.11.29.\n- [Release notes](https://github.com/astral-sh/uv/releases)\n- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/uv/compare/0.11.28...0.11.29)\n\n---\nupdated-dependencies:\n- dependency-name: uv\n  dependency-version: 0.11.29\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "da2d8914672960594de989dc05ffc05d3768dac5",
      "tree": "6f78c8b57fd7484893a824893eb58f938d686f25",
      "parents": [
        "47bcdc4d947f1ab675be467a530cfb1fd0982f27"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jul 16 11:05:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 11:05:48 2026"
      },
      "message": "chore(deps): bump coverage from 7.15.1 to 7.15.2 (#15267)\n\nBumps [coverage](https://github.com/coveragepy/coveragepy) from 7.15.1 to 7.15.2.\n- [Release notes](https://github.com/coveragepy/coveragepy/releases)\n- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)\n- [Commits](https://github.com/coveragepy/coveragepy/compare/7.15.1...7.15.2)\n\n---\nupdated-dependencies:\n- dependency-name: coverage\n  dependency-version: 7.15.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    }
  ],
  "next": "47bcdc4d947f1ab675be467a530cfb1fd0982f27"
}
