Skip to content

feat: DCV support#13

Open
spbsoluble wants to merge 10 commits into
release-1.1from
feat/net10-dcv-default
Open

feat: DCV support#13
spbsoluble wants to merge 10 commits into
release-1.1from
feat/net10-dcv-default

Conversation

@spbsoluble

@spbsoluble spbsoluble commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

What's changing

Upgrade notes

  • On AnyCA Gateway 26.x: no action needed.
  • On AnyCA Gateway 25.5.x: build with -p:DcvSupport=false.

Closes #14, #15, #16.

spbsoluble and others added 5 commits July 22, 2026 10:10
The plugin now builds against net10.0 exclusively (dropped net8.0
multi-targeting across all four projects), and DcvSupport now defaults
to true — the default/CI-shipped build targets DCV-capable AnyCA
Gateway 26.x hosts (Keyfactor.AnyGateway.IAnyCAPlugin 3.3.0, now a
stable release) instead of GA 25.5.x. The GA/no-DCV build (IAnyCAPlugin
3.2.0) is now the opt-in path via -p:DcvSupport=false.

integration-manifest.json's gateway_framework moves 25.5.0 -> 26.0.0 to
match. README regenerated via doctool to reflect the net10.0-only
install path and updated compatibility line. Removed the
Microsoft.Bcl.AsyncInterfaces/System.IO.Pipelines/System.Text.Encodings.Web
TFM-support overrides that are no longer needed on net10.0, and pinned
WireMock.Net's transitive Scriban.Signed/System.Linq.Dynamic.Core/
OpenTelemetry.* dependencies past several CVEs surfaced once net10.0
became the only restore target.
…E-delegated DCV

- Issue 0005: EnrollmentParams.ValidityYears is now read and takes precedence over
  ValidityDays/SubscriptionValidityYears when building the order request. Previously
  declared as an enrollment param but never consumed.
- Issue 0007: when DCV is enabled but no IDomainValidatorFactory is wired, the
  enrollment result now surfaces the exact TXT record name/value the operator needs
  to publish manually, instead of leaving the order pending with only a log line.
- Issue 0006: PerformDcvIfNeededAsync can now follow CNAME delegation for the DCV
  challenge hostname (bounded depth, loop-detected via DnsClient.NET, resolving
  against OS-configured resolvers) and route both the TXT record target and the
  DNS-provider lookup to the terminal name. Gated behind new DcvFollowCnameDelegation
  config flag, default off/unchanged behavior.
Exercises the production DnsClient.NET-backed CnameResolver directly against
real Cloudflare-hosted DNS records (creating/cleaning up temporary CNAME
records via the same API pattern as CloudflareDomainValidator), independent
of CERTInext order placement — confirms real two-hop CNAME chasing and the
no-CNAME/terminal-on-first-hop case actually work over the network, not just
the fake-delegate unit tests.
@spbsoluble spbsoluble changed the title build!: target net10.0 only, default DcvSupport to true feat: DCV support Jul 22, 2026
Covers the net10.0-only/DcvSupport-default-true build change plus the
ValidityYears fix, manual DCV guidance, and CNAME-delegation support
added on top of it in this PR.
Local working notes, not meant for the repo.
spbsoluble and others added 3 commits July 22, 2026 14:56
Drop the Build section's internal package/version detail and fold the
.NET 8 removal into Chores, framed around the actual customer-facing
reason: DCV requires Command 26.2+, which requires .NET 10+.
Replaces make with just as the command runner for build/test/API smoke-test
targets, and updates every doc/script reference from `make` to `just`
accordingly. README.md regenerated from docsource to match.
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