Versions in this module Expand all Collapse all v0 v0.2.0 Sep 26, 2026 v0.1.0 Sep 6, 2026 Changes in this version + const DefaultAuthorizationLifetime + const DefaultDetachedWriteTimeout + const DefaultMaxIdentifiers + const DefaultMaxRequestBody + const DefaultOrderLifetime + const DefaultRenewalRetryAfter + const ProblemNamespace + const TKAuthTypeATC + var ErrAlreadyReplaced = errors.New("acmeserver: certificate already replaced") + var ErrConflict = errors.New("acmeserver: resource already exists") + var ErrNotFound = errors.New("acmeserver: resource not found") + var ErrRevisionMismatch = errors.New("acmeserver: resource revision mismatch") + type Account struct + Contact []string + CreatedAt time.Time + ExternalAccountClaim string + ExternalAccountID string + ID string + Key crypto.PublicKey + KeyThumbprint string + Revision uint64 + Status AccountStatus + TermsOfServiceAgreed bool + type AccountStatus string + const AccountDeactivated + const AccountRevoked + const AccountValid + func (s AccountStatus) CanTransition(next AccountStatus) bool + func (s AccountStatus) Known() bool + type AccountStore interface + Account func(ctx context.Context, id string) (*Account, error) + AccountByKey func(ctx context.Context, thumbprint string) (*Account, error) + CreateAccount func(ctx context.Context, account *Account) error + UpdateAccount func(ctx context.Context, account *Account) error + type AllowAll struct + func (AllowAll) NewAccount(context.Context, *Account) error + func (AllowAll) NewOrder(context.Context, *Account, *Order) error + type Authorization struct + AccountID string + CACertificate bool + ChallengeIDs []string + CreatedAt time.Time + Expires time.Time + GrantExpires time.Time + ID string + Identifier Identifier + OrderID string + Revision uint64 + Status AuthorizationStatus + Wildcard bool + type AuthorizationStatus string + const AuthorizationDeactivated + const AuthorizationExpired + const AuthorizationInvalid + const AuthorizationPending + const AuthorizationRevoked + const AuthorizationValid + func (s AuthorizationStatus) CanTransition(next AuthorizationStatus) bool + func (s AuthorizationStatus) Known() bool + func (s AuthorizationStatus) Terminal() bool + type Certificate struct + AccountID string + CAReference string + Chain [][]byte + CreatedAt time.Time + ID string + NotAfter time.Time + NotBefore time.Time + OrderID string + RenewalID string + ReplacedByOrderID string + Revision uint64 + RevocationOperationID string + RevocationReason int + RevocationRequestedAt time.Time + Revoked bool + RevokedAt time.Time + Validations []Validation + type CertificateStore interface + Certificate func(ctx context.Context, id string) (*Certificate, error) + CertificateByRenewalID func(ctx context.Context, renewalID string) (*Certificate, error) + UpdateCertificate func(ctx context.Context, cert *Certificate) error + type Challenge struct + AccountID string + AuthorityToken string + AuthorizationID string + Error *Problem + ID string + KeyThumbprint string + Revision uint64 + Status ChallengeStatus + Token string + Type ChallengeType + Validated time.Time + type ChallengeStatus string + const ChallengeInvalid + const ChallengePending + const ChallengeProcessing + const ChallengeValid + func (s ChallengeStatus) CanTransition(next ChallengeStatus) bool + func (s ChallengeStatus) Known() bool + func (s ChallengeStatus) Terminal() bool + type ChallengeType string + const ChallengeDNS01 + const ChallengeHTTP01 + const ChallengeTKAuth01 + const ChallengeTLSALPN01 + type Clock interface + Now func() time.Time + func SystemClock() Clock + type ClockFunc func() time.Time + func (f ClockFunc) Now() time.Time + type Config struct + AllowInsecureBaseURL bool + AuthorizationLifetime time.Duration + BaseURL string + Clock Clock + DetachedWriteTimeout time.Duration + ExternalAccounts ExternalAccountKeys + IPIdentifiers bool + IssuancePolicy IssuancePolicy + Issuer Issuer + Logger *slog.Logger + MaxIdentifiers int + MaxRequestBody int64 + Meta DirectoryMeta + Nonces NonceManager + OrderLifetime time.Duration + Policy Policy + RenewalInfo RenewalAdvisor + RequireTermsOfServiceAgreed bool + Revoker Revoker + SingleUseExternalAccounts bool + Store Store + TNAuthListIdentifiers bool + TokenAuthority string + Validators map[ChallengeType]Validator + Workers WorkerConfig + type DirectoryMeta struct + CAAIdentities []string + ExternalAccountRequired bool + TermsOfService string + Website string + type ErrorType string + const ErrorAccountDoesNotExist + const ErrorAlreadyReplaced + const ErrorAlreadyRevoked + const ErrorBadCSR + const ErrorBadNonce + const ErrorBadPublicKey + const ErrorBadRevocationReason + const ErrorBadSignatureAlgorithm + const ErrorCAA + const ErrorCompound + const ErrorConnection + const ErrorDNS + const ErrorDNSSEC + const ErrorExternalAccountRequired + const ErrorIncorrectResponse + const ErrorInvalidContact + const ErrorMalformed + const ErrorOrderNotReady + const ErrorRateLimited + const ErrorRejectedIdentifier + const ErrorServerInternal + const ErrorTLS + const ErrorUnauthorized + const ErrorUnsupportedContact + const ErrorUnsupportedIdentifier + const ErrorUserActionRequired + func (t ErrorType) URN() string + type ExternalAccountKeys interface + MACKey func(ctx context.Context, keyID string) ([]byte, error) + type GrantingValidator interface + ValidateGrant func(ctx context.Context, req ValidationRequest) (ValidationGrant, error) + type Identifier struct + Type IdentifierType + Value string + func NormalizeIdentifiers(ids []Identifier) ([]Identifier, error) + func (id Identifier) IsWildcard() bool + func (id Identifier) Normalize() (Identifier, error) + func (id Identifier) String() string + type IdentifierType string + const IdentifierDNS + const IdentifierIP + const IdentifierTNAuthList + type IssuancePolicy interface + AuthorizeIssuance func(ctx context.Context, req IssueRequest) error + type IssuanceState struct + AuthorizedAt time.Time + Deadline time.Time + OperationID string + Validations []Validation + type IssueRequest struct + AccountID string + AccountURL string + CSR *x509.CertificateRequest + CSRDER []byte + Deadline time.Time + Identifiers []Identifier + NotAfter time.Time + NotBefore time.Time + OperationID string + OrderID string + RecoveryOnly bool + Validations []Validation + type IssueResult struct + CAReference string + Chain [][]byte + Pending bool + Rejected *Problem + RetryAfter time.Duration + type Issuer interface + Issue func(ctx context.Context, req IssueRequest) (IssueResult, error) + type LifetimeRenewal struct + End float64 + ExplanationURL string + RetryAfter time.Duration + Start float64 + func (l LifetimeRenewal) RenewalInfo(_ context.Context, cert *Certificate) (RenewalInfo, error) + type NonceManager interface + Consume func(ctx context.Context, nonce string) (bool, error) + Issue func(ctx context.Context) (string, error) + type Order struct + AccountID string + AuthorizationIDs []string + CSR []byte + CertificateID string + CreatedAt time.Time + Error *Problem + Expires time.Time + ID string + Identifiers []Identifier + Issuance *IssuanceState + NotAfter time.Time + NotBefore time.Time + Replaces string + Revision uint64 + Status OrderStatus + UnpublishedResult *IssueResult + func (o *Order) StatusAt(now time.Time) OrderStatus + type OrderStatus string + const OrderInvalid + const OrderPending + const OrderProcessing + const OrderReady + const OrderValid + func (s OrderStatus) CanTransition(next OrderStatus) bool + func (s OrderStatus) Known() bool + func (s OrderStatus) Terminal() bool + type OrderStore interface + Authorization func(ctx context.Context, id string) (*Authorization, error) + AuthorizedFor func(ctx context.Context, accountID string, identifiers []Identifier, now time.Time) (bool, error) + Challenge func(ctx context.Context, id string) (*Challenge, error) + CreateOrder func(ctx context.Context, order *Order, authzs []*Authorization, ...) error + Order func(ctx context.Context, id string) (*Order, error) + OrderIDs func(ctx context.Context, accountID, after string, limit int) ([]string, error) + UpdateAuthorization func(ctx context.Context, authz *Authorization) error + type Policy interface + NewAccount func(ctx context.Context, account *Account) error + NewOrder func(ctx context.Context, account *Account, order *Order) error + type Problem struct + Algorithms []string + Detail string + Identifier *Identifier + RetryAfter time.Duration + Status int + Subproblems []*Problem + Type ErrorType + func AsProblem(err error) (*Problem, bool) + func Compound(detail string, subproblems ...*Problem) *Problem + func NewProblem(t ErrorType, detail string) *Problem + func Problemf(t ErrorType, format string, args ...any) *Problem + func (p *Problem) Error() string + func (p *Problem) HTTPStatus() int + func (p *Problem) MarshalJSON() ([]byte, error) + func (p *Problem) UnmarshalJSON(data []byte) error + func (p *Problem) WithIdentifier(id Identifier) *Problem + func (p *Problem) WithRetryAfter(d time.Duration) *Problem + func (p *Problem) WithStatus(status int) *Problem + type RenewalAdvisor interface + RenewalInfo func(ctx context.Context, cert *Certificate) (RenewalInfo, error) + type RenewalInfo struct + End time.Time + ExplanationURL string + RetryAfter time.Duration + Start time.Time + type RevokeRequest struct + AccountID string + Certificate *x509.Certificate + DER []byte + OperationID string + Reason int + type Revoker interface + Revoke func(ctx context.Context, req RevokeRequest) error + type Server struct + func New(cfg Config) (*Server, error) + func (s *Server) Ready(ctx context.Context) error + func (s *Server) Run(ctx context.Context) error + func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) + type Store interface + type Task struct + AccountID string + Attempts int + CreatedAt time.Time + Fence uint64 + ID string + Kind TaskKind + LeaseUntil time.Time + RunAt time.Time + TargetID string + type TaskKind string + const TaskIssue + const TaskValidate + type Validation struct + CACertificate bool + GrantExpires time.Time + Identifier Identifier + Type ChallengeType + Validated time.Time + type ValidationGrant struct + CACertificate bool + Expires time.Time + type ValidationRequest struct + AccountKeyThumbprint string + AuthorityToken string + Challenge Challenge + Identifier Identifier + KeyAuthorization string + Wildcard bool + type Validator interface + Validate func(ctx context.Context, req ValidationRequest) error + type WorkStore interface + AcceptChallenge func(ctx context.Context, challenge *Challenge, task *Task) error + BeginIssuance func(ctx context.Context, task *Task, order *Order, account *Account, ...) error + ClaimTask func(ctx context.Context, now, leaseUntil time.Time) (*Task, error) + CompleteIssuance func(ctx context.Context, task *Task, order *Order, cert *Certificate) error + CompleteValidation func(ctx context.Context, task *Task, challenge *Challenge, authz *Authorization, ...) error + FinalizeOrder func(ctx context.Context, order *Order, task *Task) error + FinishTask func(ctx context.Context, task *Task) error + PendingTasks func(ctx context.Context, before time.Time) (int, error) + RescheduleTask func(ctx context.Context, task *Task) error + type WorkerConfig struct + Concurrency int + External bool + Lease time.Duration + MaxAttempts int + PollInterval time.Duration + RetryDelay time.Duration + StaleAfter time.Duration + TaskTimeout time.Duration