)]}'
{
  "commit": "3974c56eaa6d4737df1ab3bb9c7e0b968f29bc79",
  "tree": "1d9ff36ce5a7f53419305c229d07a47274e00034",
  "parents": [
    "ee2bf9cfa9fc3faaf3c56506f4c06c4c4babddcb"
  ],
  "author": {
    "name": "Ben Collins",
    "email": "bcollins@libjwt.io",
    "time": "Mon Jun 15 15:15:04 2026 -0400"
  },
  "committer": {
    "name": "Ben Collins",
    "email": "bcollins@libjwt.io",
    "time": "Mon Jun 15 15:15:04 2026 -0400"
  },
  "message": "gnutls: require GnuTLS \u003e\u003d 3.8.4 and drop pre-3.8.4 compatibility\n\nGnuTLS \u003c 3.8.4 lacks the SPKI-OAEP and raw-ECDH APIs, so those builds parsed\nJWKs and did RSA-OAEP/ECDH-ES via an OpenSSL fallback. Now that the native\npath is the only supported one, raise the floor to GnuTLS \u003e\u003d 3.8.4 and remove\nthe fallback machinery:\n\n- CMakeLists.txt: pkg_check_modules floor 3.6.0 -\u003e 3.8.4; drop the now-dead\n  \"GnuTLS \u003c 3.8.4 needs OpenSSL\" FATAL_ERROR guard.\n- Remove the JWT_GNUTLS_NATIVE_JWE macro and all its #if/#else gating; the\n  native gnutls_process_*/JWE ops are now unconditional.\n- Drop the openssl_process_*/openssl_{encrypt,decrypt}_cek_rsa/openssl_ecdh_derive\n  fallback declarations and ops-table entries.\n\nThe RSA-OAEP (SHA-1) -\u003e OpenSSL fallback is unchanged: GnuTLS/nettle still\ncannot do SHA-1 OAEP, so it delegates to OpenSSL when compiled in (and is\nrejected cleanly otherwise). README and doxygen/mainpage.dox updated.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Ben Collins \u003cbcollins@libjwt.io\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "367bb34397e636d46e1ad06484bb49719edb301a",
      "old_mode": 33188,
      "old_path": "CMakeLists.txt",
      "new_id": "1bcff92579e63c14861f7b3b8e9b9eb688313fa7",
      "new_mode": 33188,
      "new_path": "CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "bc7e1cf6e688f9be941b79b062170b22730ff553",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "0bdd8c3dad51d4546fe8227c35ec3a9fc59922a1",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "modify",
      "old_id": "5820d1d8323c598adb732b535db7c2b4ed36860e",
      "old_mode": 33188,
      "old_path": "doxygen/mainpage.dox",
      "new_id": "325f85b8a0bcf93596d6cb63c8b05d3d511f68f5",
      "new_mode": 33188,
      "new_path": "doxygen/mainpage.dox"
    },
    {
      "type": "modify",
      "old_id": "5d1509b9559b8f6460634e57c7117b205811ee5a",
      "old_mode": 33188,
      "old_path": "libjwt/gnutls/jwe.c",
      "new_id": "37e681eb8447dadf043b3b3e6700d66b8db4c492",
      "new_mode": 33188,
      "new_path": "libjwt/gnutls/jwe.c"
    },
    {
      "type": "modify",
      "old_id": "6405ce57c70cfda468d387959acb97bdd0c1c2e3",
      "old_mode": 33188,
      "old_path": "libjwt/gnutls/jwk-parse.c",
      "new_id": "9a108b0e6d6cb7d85f52e7672bc729a678510bdf",
      "new_mode": 33188,
      "new_path": "libjwt/gnutls/jwk-parse.c"
    },
    {
      "type": "modify",
      "old_id": "668d0ba0e62273e124d4396d049af560e3d5ce6b",
      "old_mode": 33188,
      "old_path": "libjwt/gnutls/jwt-gnutls.h",
      "new_id": "2ea69ad22fd20c371ea17fb5f292e874f2e7f6e1",
      "new_mode": 33188,
      "new_path": "libjwt/gnutls/jwt-gnutls.h"
    },
    {
      "type": "modify",
      "old_id": "6c32254065f704a731940465c09bd7c168c14595",
      "old_mode": 33188,
      "old_path": "libjwt/gnutls/sign-verify.c",
      "new_id": "084e0dedb27147380212336bb4cd6e21b415a034",
      "new_mode": 33188,
      "new_path": "libjwt/gnutls/sign-verify.c"
    }
  ]
}
