Expand description
The three ACME state machines, as types rather than strings.
orders.status, authorizations.status and challenges.status are
TEXT columns with a CHECK naming the values each may hold, and the code
around them used to compare against string literals — order.status == "valid", authz.status != "pending" — at thirty-odd sites spread over
handlers/, sqlite/ and the relay flow. A typo in one of those compiles
and silently changes policy: != "readyy" is always true, and the order it
guards becomes finalizable for names nobody proved control of.
These enums are a Rust-side change only. Each variant’s as_str is the
byte-identical string the column already holds, so the frozen migrations and
their CHECK constraints are untouched, and RFC 8555 still sees exactly the
spellings it defines.
Structs§
- Unknown
Status - A status column held a value outside its
CHECK— or, far more likely, an operator typed one.
Enums§
- Authz
Status - An authorization’s state (RFC 8555 §7.1.6).
- Challenge
Status - A challenge’s state (RFC 8555 §8).
- Order
Status - An order’s state (RFC 8555 §7.1.6).