Commit Graph
17 Commits
Author SHA1 Message Date
woggioni 1032b10c49 Fix EC JWK: fixed-width x, y, d encoding; restrict to registered curve names
- Encode EC coordinates and private d with curve-width (32/48/66 bytes) to satisfy RFC 7518,
  preserving leading zero octets.
- Restrict JWK  values to registered JOSE names: P-256, P-384, P-521, secp256k1.
  Raise ValueError for unregistered curves (P-192, P-224, Brainpool).
- Add regression tests: deterministic coordinate/private-value widths, leading-zero
  preservation, supported curve names, and rejection of unsupported curves.
- Mypy clean; all core and backend tests pass.
2026-10-26 12:06:16 +08:00
woggioni aee1025015 Fix stale OCSP snapshots indefinitely
- Parse and validate  from snapshot JSON, reject future/missing timestamps
- Enforce snapshot age vs  in cache and stale fallback (no lifetime extension on repeat S3 reads)
- OCSP: , ,
- Remove unused  from signer
- Publisher heartbeats: , republish clean snapshots past interval, preserve dirty-only behavior and concurrency
- Config/env/docker/docs updates for heartbeat

Rolling upgrade: enable publisher heartbeats before deploying the age-enforcing responder so existing snapshots remain within the age window.
2026-10-26 12:06:15 +08:00
woggioni b59b935d1b Fix quadratic ReDoS in PEM import block scanning
Replace the backtracking _PEM_BLOCK regex with a forward-only scanner
that indexes END markers by label, so repeated unterminated headers do
not cause the regex to rescan the remaining input.

Impact: 80 KiB payload went from 8.34 s to 0.001 s.
2026-10-26 12:06:15 +08:00
woggioni 718d11b4c0 Offload certificate key generation to worker threads 2026-10-25 21:26:34 +00:00
woggioni 4c1bfa4e4d Reject duplicate serials and make keep_serial renewal safe
Add shared serial collision checking against existing certificates and
issuer revocations, reuse it for automatic serial allocation, and enforce
it for user-supplied serials so duplicate serials no longer break the
OCSP snapshot.

make keep_serial renewal require replace_old, refuse keep_serial +
revoke_old, and reject serials already revoked by the issuer so revoked
serials cannot be inherited by renewed certificates.
2026-10-25 21:23:34 +00:00
woggioni a8d322776d Enforce CSR proof of possession during certificate issuance 2026-10-25 21:21:16 +00:00
woggioni cc7059c100 Fix OCSP snapshots for orphaned revocations 2026-10-25 13:21:23 +00:00
woggioni 404facf8e2 Fix OCSP publication races for revocation changes 2026-10-25 11:19:17 +00:00
woggioni 44a79f5b0c Key OIDC identity by issuer and subject 2026-10-25 08:35:11 +00:00
woggioni dab4b9e0bb Fix cross-vault OCSP snapshot poisoning 2026-10-24 22:03:02 +00:00
woggioni 69d78939a1 Build static musl OCSP image in Gitea Actions
CI / Build and push docker image (push) Successful in 3m23s
CI / Build and push OCSP image (push) Successful in 7m53s
2026-10-23 10:00:36 +00:00
woggioni 0384995570 Add S3 OCSP status publishing and standalone Rust Axum responder 2026-10-23 09:18:00 +00:00
woggioni 4ed14b42a7 Add optional OpenTelemetry traces, metrics and OTLP logs 2026-10-23 06:09:43 +00:00
woggioni 57c810ea65 Polish PWA assets, accessible tabs and bulk selection, harden bulk revoke tests 2026-10-23 05:44:32 +00:00
woggioni 763268bd40 Add server template apply modes, bulk revocation, explicit DN order and detail tabs 2026-10-23 05:33:43 +00:00
woggioni 5eb7866f5b Close XCA parity gaps: advanced extensions, CA/revocation UI, imports, ZIP export, E2E 2026-10-23 04:26:35 +00:00
woggioni 4f3a632f4b Implement KCA: web reimplementation of XCA PKI workflows
- kaya backend with OIDC sessions, API tokens, Postgres/Tortoise models
- AES-256-GCM private key storage and full certificate/CSR/CRL domain logic
- Sycamore/WASM SPA for vaults, keys, requests, certificates, CRLs and templates
- imports/exports, XCA .xdb migration, Docker Compose stack and tests
2026-10-23 02:06:55 +00:00