• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hyperscale-stack / security / 38015400055
94%
master: 96%

Build:
Build:
LAST BUILD BRANCH: feature/83-oauth2-oidc-extension-points
DEFAULT BRANCH: master
Ran 10 Oct 2026 02:02AM UTC
Jobs 1
Files 94
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

10 Oct 2026 01:51AM UTC coverage: 94.444% (+0.1%) from 94.317%
38015400055

Pull #92

github

euskadi31
fix(oauth2): validate PKCE verifier and challenge syntax

PKCE checked the transformation but never the RFC 7636 syntax:
pkce.Verify hashed whatever it was given, and /authorize checked the
presence and method of a code_challenge but not its shape. A client
could pair a one-character code_verifier with its S256 challenge and
have the code exchanged for tokens under every profile, and /authorize
stored challenges that no S256 transformation can produce.

The pkce package now owns the syntax. ValidVerifier encodes RFC 7636
§4.1: 43 to 128 bytes, each one unreserved, so whitespace and every
non-ASCII byte are refused. ValidChallenge encodes §4.2: a plain
challenge is a verifier, and an S256 challenge must survive a round
trip through the unpadded base64url encoding of a SHA-256 digest.
Decoding alone is not enough: encoding/base64 skips CR and LF even in
strict mode, and lax decoding ignores non-zero trailing bits. Verify
and VerifyS256 refuse a malformed verifier before the constant-time
comparison.

/authorize still checks presence first, then the method against the
profile (an absent method means plain, §4.3), and only then the
syntax, so a request breaking several rules keeps its current error; a
malformed challenge is redirected as invalid_request before the
ConsentFunc runs. /token answers invalid_grant "malformed
code_verifier" after the profile checks: §4.6 maps a failed proof to
invalid_grant, and the code, consumed before PKCE runs, stays burned.

The PKCE error descriptions no longer carry the double quote RFC 6749
§4.1.2.1 and §5.2 forbid, nor echo an unsupported method. Tests that
relied on non-compliant PKCE values now use well-formed ones, and the
security considerations and Profile docs no longer misstate which
profiles accept plain. Refs #79.
Pull Request #92: fix(oauth2): validate PKCE verifier and challenge syntax

46 of 46 new or added lines in 3 files covered. (100.0%)

4675 of 4950 relevant lines covered (94.44%)

75.03 hits per line

Jobs
ID Job ID Ran Files Coverage
1 38015400055.1 10 Oct 2026 02:02AM UTC 94
94.44
GitHub Action Run
Source Files on build 38015400055
  • Tree
  • List 94
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #92
  • PR Base - master (#38014756492)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc