Skip to content

feat(examples): wire offered/accepted COSE algorithm config through adapters + demos#79

Merged
wolpert merged 1 commit into
mainfrom
feat/crypto-agility-demo-config
Jun 18, 2026
Merged

feat(examples): wire offered/accepted COSE algorithm config through adapters + demos#79
wolpert merged 1 commit into
mainfrom
feat/crypto-agility-demo-config

Conversation

@wolpert

@wolpert wolpert commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

What & why

Follow-up to #78 (crypto-agility / post-quantum readiness, ADR 0019). #78 added the CoseAlgorithm enum and the offeredAlgorithms / acceptedAlgorithms lists on CeremonyConfig, but left "wire them through each adapter's external host config" as an open follow-up. This PR completes that and surfaces the knobs in all three example apps.

No behavior change: every adapter null-coalesces to the core defaults, and the demos set the lists to exactly those defaults (as living documentation).

Changes

Adapter config plumbing → CeremonyConfig.from(...) (7-arg)

  • Springpkauth.ceremony.offered-algorithms / accepted-algorithms bound on PkAuthProperties.Ceremony, forwarded in PkAuthAutoConfiguration.
  • Micronaut — same keys on PkAuthConfiguration.Ceremony (getter/setter pairs), forwarded in PkAuthFactory.
  • DropwizardofferedAlgorithms / acceptedAlgorithms record components on PkAuthConfig.Ceremony (the no-arg and TTL-only constructors are kept for back-compat), forwarded in PkAuthModule.

Demos

  • spring-boot-demo / micronaut-demo application.yml: set both lists under pkauth.ceremony.
  • dropwizard-demo DemoConfiguration.java (Java-configured): set them on PkAuthConfig.Ceremony.
  • All set to the core defaults (offered = [ES256, EdDSA, RS256], accepted = [ES256, EdDSA, RS256, ES384, RS384]) with comments explaining an operator can narrow either.

Docs

  • docs/operator-guide.md: new subsection documenting the two knobs and the re-enrollment caveat when narrowing accepted.
  • ADR 0019: the "wire through external host config" follow-up marked done.

Verification

  • ./gradlew check passes (Spotless + tests + JaCoCo gates).
  • All three demos boot with the new config and pass their Playwright e2e suites (5/5 each) — the enum-list binding (Spring/Micronaut YAML, Dropwizard Java) is exercised by a real registration ceremony in each.

🤖 Generated with Claude Code

…dapters + demos

Plumb the crypto-agility algorithm lists (ADR 0019) through all three adapter
config surfaces and set them explicitly in each example app, completing the
ADR's "wire through external host config" follow-up.

- Spring: pkauth.ceremony.offered-algorithms / accepted-algorithms bound on
  PkAuthProperties.Ceremony and forwarded via the 7-arg CeremonyConfig.from.
- Micronaut: same keys on PkAuthConfiguration.Ceremony (getter/setter pairs),
  forwarded in PkAuthFactory.
- Dropwizard: offeredAlgorithms / acceptedAlgorithms record components on
  PkAuthConfig.Ceremony (TTL-only and no-arg constructors kept for back-compat),
  forwarded in PkAuthModule.
- Demos: spring + micronaut application.yml set both lists; the Java-configured
  dropwizard DemoConfiguration sets them on PkAuthConfig.Ceremony. All set to the
  core defaults as living documentation; nulls still fall back to those defaults.
- Docs: operator-guide section on the two knobs; ADR 0019 follow-up marked done.

Verified: ./gradlew check passes, and all three demos boot with the new config
and pass their Playwright e2e suites (the enum-list binding is exercised by a
real registration ceremony in each).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@wolpert
wolpert merged commit 1200abc into main Jun 18, 2026
8 checks passed
@wolpert
wolpert deleted the feat/crypto-agility-demo-config branch June 18, 2026 01:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant