- README: "Remaining scope" is removed, because everything it listed as a later layer is implemented. The README now says the library leaves transport to its host, that
test/liveissues a certificate end to end against a real authority, and that hedge provides a production transport. The dependency list names the resolved releases, std v7.0.2, http v0.18.0 and crypto v0.20.0 (#100).
- Dependencies: mach-http
^0.18(v0.18.0), so mach-acme resolves alongside a project that needs http 0.18. http 0.18 addsh2.connection.pending_workand fixes a frame dropped at end of stream, and mach-acme reaches http only throughcore.field,core.methodandcore.status. The live conformance subproject pins http v0.18.0 by tag (#96).
- Breaking. Dependencies: mach-std
^7.0(v7.0.2), mach-crypto^0.20(v0.20.0), mach-http^0.17(v0.17.0), selected by version range with the resolved release committed as a gitlink. A consumer must be on std 7.x. None of the std 7 migration items reach mach-acme: it calls noio.runtime.make, stores nodata.toml.Value, and builds noallocator.page,testingorarena(its only allocator construction isallocator.fixedin the protocol tests). crypto 0.19 and 0.20 rewrite the P-256, RSA and Poly1305 arithmetic on 64-bit limbs with unchanged signatures and key acceptance, and the JOSE signing paths here exercise them unchanged. http 0.16 and 0.17 change only the exchange engines, retry policy and HTTP/3 surfaces, and mach-acme reaches http only throughcore.field,core.methodandcore.status.mach = "^5.9"is unchanged (#92). - The live conformance subproject pins std v7.0.2, crypto v0.20.0 and http v0.17.0 by tag (#92).
- Breaking. Dependencies: mach-std
^6.0(v6.0.0), mach-crypto^0.18(v0.18.0), mach-http^0.15(v0.15.0), selected by version range with the resolved release committed as a gitlink, andmach.tomlnow requires mach^5.9. A consumer must be on std 6.x. None of the std 6 migration tables reach mach-acme: it uses nosort,heap,map,setorbuffersaccount, and its onlystd.crypto.ctcall iszeroize. crypto's SHA-2 now runs on std's hardware-dispatched states, andhash.Sha256stays opaque to the callers here. http 0.15's public surface is unchanged and mach-acme uses onlyhttp.core(#88). - CI asks the family workflow for
dit: required, because mach-crypto 0.17 and later link a secret multiply that needs FEAT_DIT on aarch64 (#88). - The live conformance subproject pins std, crypto and http by tag itself, because a path dependency carries no pin for a dependency it selects by version (#88).
- Breaking. Dependencies: mach-std v5.3.0, mach-crypto v0.13.2, mach-http v0.12.0, and
mach.tomlnow requires mach^5.3. A consumer must be on std 5.x as well. mach-acme itself consumes no std completions and uses onlyhttp.core, so the std 5.3 completion contract and the http 0.12 engine changes do not reach it (#80). - Breaking. Poll deadlines and readings are monotonic
std.chrono.time.Instantvalues instead of barei64nanoseconds:poll.begintakesdeadline: time.Instant,poll.nextandorder.poll_nexttakenow: time.Instant, and so dochallenge.propagation_beginandchallenge.propagation_next. A wall-clocktime.Timeno longer type-checks as a deadline. The renewal schedule keeps its wall-clock unix seconds, because certificate validity is compared against the outside world (#80). - Breaking.
poll.nextaccounts for the caller's observation before cancellation. An observation that reached the target isREADY, and a failed one isTERMINAL, even afterpoll.cancel.CANCELLEDis returned only for an observation that made no progress. The old order, which checked cancellation first, could tell a caller to abandon a finalized order that was alreadyvalid. The next run would then issue again and spend a duplicate-certificate slot.poll.Decisiongainscancelled, which reports that the poll had been cancelled even when aREADYorTERMINALdecision outranked it (#80).
- The copyright is now held by Briar Systems LLC (#78).
- Dependencies: mach-http v0.11.0 (#74).
- Dependencies: mach-crypto v0.12.0, which has faster X25519 and Ed25519 (#70).
- Releases are published by the shared release workflow when a
v*tag is pushed. It checks the tag, version and changelog, runs the full CI tier, then publishes the GitHub release (#68).
- Dependencies: mach-std v4.0.1, mach-crypto v0.11.0, mach-http v0.10.0. Building now needs mach 5.2.0 or later, and a consumer that declares its own std must be on v4.0.1 (#64).
- The README's dependency list matches the pins again.
- Durable state files and directories are now owner-only on Windows too. Before this they took the inherited default permissions, because mach-std did not enforce file modes there (#57, briar-systems/mach-std#703).
- Dependencies: mach-std v3.2.0, mach-crypto v0.10.1, mach-http v0.9.0. A consumer that declares its own std must be on v3.2.0.
- CI runs the shared family pipeline from briar-systems/.github, with the live ACME suite as a subproject and a single
gatecheck (#53).
- Concurrent requests on one client no longer fail about 3% of the time as a mutated protocol state. The nonce provider ownership check hashed the client's own callback lock word, which other threads change (#51).
- Dependencies: mach-crypto v0.9.1, mach-http v0.8.2.
- The protocol tests are part of the root test set (#48).
- Migrated to mach 5.0 and mach-std 2.0.0.
- Dependencies: mach-crypto v0.9.0, mach-http v0.8.0.
- Dependencies: mach-http v0.7.6, mach-crypto v0.8.2.
- The record-literal section no longer points at
mach-tls's partial literal sweep. That script is removed: enumerating the violations was a workaround for briar-systems/mach#3108, which is being fixed in the compiler. The rule itself is unchanged and still stated here.
- GitHub Actions CI: every pull request builds the library, runs the suite and the protocol vector project in both profiles, brings up the live ACME stack and runs the live suite against it, and verifies IR across all six targets.
mach-httpadvances tov0.7.5, adopting the HTTP/3 DATA frame fix so every consumer in hedge's graph shares one release.
mach-httpadvances tov0.7.4, adopting the HTTP/3 teardown fix so every consumer in hedge's graph shares one release.
mach-stdadvances tov0.34.0,mach-httptov0.7.3, andmach-cryptotov0.8.1, aligning on the released typed secret-storage stack.
- Pinned
mach-httptov0.7.2across the root, protocol, and live conformance dependency graphs, with all exact locks agreeing on the released HTTP teardown contracts.
- Pinned
mach-cryptotov0.7.0. - Refreshed exact dependency locks for the root, protocol, and live projects.
- Updated the
mach-httpdependency tov0.7.0. - Tracked exact dependency locks for the root, protocol, and live integration projects.
- Replaced the remaining empty and partial record literals.
client.releaseclearedclient.nonceswithnonce.Pool{}, an eleven-field record with nine pointers and eight callbacks. That andLimitsnow come from constructors that clear by declaration, and the remaining sites that carry digests and thumbprints in arrays now clear through avar-and-assign branch.
- Refreshed
test/protocol's dependency lock, which pinnedmach-httpv0.4.1 while the library resolves v0.5.0 transitively.
- Aligned the
mach-httpdependency tov0.5.0so a consumer can depend on this library alongside the rest of the stack. No functional change, since mach-acme does not construct HTTP/3 connections.
- A complete ACME client: directory discovery and signed requests, account lifecycle with external account binding and key rollover, orders with authorizations and bounded polling, HTTP-01, DNS-01, and TLS-ALPN-01 challenge presentation, CSR generation with issuance, alternate chain selection and revocation, durable transactional state, and ARI-aware renewal scheduling.
- Key authorization following RFC 8555 section 8.1, DNS-01 using the
_acme-challenge.label with the SHA-256 digest, and TLS-ALPN-01 carrying theacmeIdentifierextension under OID 1.3.6.1.5.5.7.1.31 per RFC 8737 section 3.
- Pinned
mach-stdtov0.33.0,mach-httptov0.4.1, andmach-cryptotov0.6.0.