)]}'
{
  "commit": "38eaa22d3d238942ff176a06e740ffd7f349f643",
  "tree": "99b964dae231a4b2f079833acd92596cdbc750e6",
  "parents": [
    "1ee68cbd415aa4082d0808b6883189f65d1632ed"
  ],
  "author": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Sat Mar 21 13:53:39 2026 +0800"
  },
  "committer": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Thu Apr 16 04:42:23 2026 +0200"
  },
  "message": "Discovery OAuth: Add optional PKCE support\n\nAdd support for Proof Key for Code Exchange (PKCE) in the Discovery\nOAuth provider to improve security of the authorization code flow.\n\nWhen `enable-pkce \u003d true`:\n- Generate a PKCE code verifier/challenge during authorization\n- Return verifier alongside the authorization URL\n- Include verifier when exchanging the authorization code for a token\n\nThis is disabled by default to preserve backward compatibility with\nproviders that do not support PKCE.\n\nNOTE: This change depends on a Gerrit core update that extends the\nOAuthServiceProvider API (OAuthAuthorizationInfo and PKCE-aware\ngetAccessToken). The plugin will not work with older Gerrit versions.\n\nAlso:\n- Update configuration and documentation\n- Add unit tests covering PKCE authorization and token exchange flows\n\nContributed-By: Kai Liu \u003ckraml.liu@gmail.com\u003e\nChange-Id: I56fa0f4d50333a2c568d95c31c78f2de3afed661\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b28b754a2827e99b6c66a5d1fc0408439a33a312",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/oauth/InitOAuth.java",
      "new_id": "a1a1dd78508543eb11174e554e74ba47c5873932",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/oauth/InitOAuth.java"
    },
    {
      "type": "modify",
      "old_id": "8923dcf94fc30ab442435f5046bcc436f0308631",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/oauth/discovery/DiscoveryOAuthService.java",
      "new_id": "e6465648592d6d8dc29c7b208df74f3a635c3a4c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/oauth/discovery/DiscoveryOAuthService.java"
    },
    {
      "type": "modify",
      "old_id": "f13f1114a719d067cdcd510e92213d43b5001497",
      "old_mode": 33188,
      "old_path": "src/main/resources/Documentation/config.md",
      "new_id": "447b0172b7b565bcce21e885b56e7493c3968cc3",
      "new_mode": 33188,
      "new_path": "src/main/resources/Documentation/config.md"
    },
    {
      "type": "modify",
      "old_id": "214664d6b947e6cd749e547f4e70ff8fa54a2656",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/oauth/discovery/DiscoveryOAuthServiceTest.java",
      "new_id": "8030cf1bca7e7d67eac51225a700d5a0072ed8c1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/oauth/discovery/DiscoveryOAuthServiceTest.java"
    }
  ]
}
