code for 3 machines demoing how to use the chrome card.
Go to file
Morten V. Christiansen 3fc40fc395 Implement per-request FIDO2 token binding across all components
Each request to a gated endpoint now triggers a fresh FIDO2 assertion.
Challenge = SHA256(url|method|nonce) — bound to the specific resource.
The self-contained assertion bundle lets the server verify independently
without calling back to the phone.

- fido2_ops.dart: GetAssertionResult gains clientDataJson; getAssertion
  accepts optional challenge override
- proxy_service.dart: _handleAuthGetToken accepts {url,method,nonce},
  derives challenge, runs card assertion, returns b64url bundle
- filter_proxy.dart: _getAuthToken(uri, method) generates nonce and
  passes binding fields to Component 2
- component3/phone.go: stateless GetTokenForRequest(url, method) —
  no session caching, no expiry, one card touch per request
- component3/proxy.go: use GetTokenForRequest
- component3/main.go: remove --user flag (Component 2 picks enrolled user)
- k_server_app.py: _verify_assertion_token() — verifies path+method
  match, challenge claim, and ECDSA-P256 signature; accepts both
  legacy X-Proxy-Token and new Bearer assertion tokens

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 12:01:23 +02:00
component3 Implement per-request FIDO2 token binding across all components 2026-05-08 12:01:23 +02:00
k_phone Implement per-request FIDO2 token binding across all components 2026-05-08 12:01:23 +02:00
tests Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
.gitignore Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
CLAUDE.md Refactor k_phone (v2) and add component3 Go binary 2026-05-05 21:04:19 +02:00
PHASE5_RUNBOOK.md Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
Setup.md Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
Workplan.md Implement per-request FIDO2 token binding across all components 2026-05-08 12:01:23 +02:00
ctaphid_init_probe.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
fido2_probe.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
generate_phase2_certs.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
k_client_portal.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
k_proxy_app.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
k_server_app.py Implement per-request FIDO2 token binding across all components 2026-05-08 12:01:23 +02:00
package-lock.json Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
package.json Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
phase5_chain_regression.sh Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
phase65_concurrency_probe.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
playwright.config.js Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
raw_ctap_probe.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00
webauthn_local_demo.py Initial commit: chromecard workspace snapshot 2026-04-29 22:06:14 +02:00