package acme import "errors" var ( ErrNotImplemented = errors.New("not implemented") ErrSkipped = errors.New("solver skipped") ) // WellKnown URL path const WellKnown = `/.well-known/acme-challenge/` // Solver decribes a solving interface type Solver interface { Solve(Challenge) error Solved() error Type() ChalType } type Solvers map[ChalType]Solver func NewSolvers(sols ...Solver) Solvers { sol := make(Solvers) for _, s := range sols { sol[s.Type()] = s } return sol } func (s Solvers) Add(sol Solver) { if sol != nil { s[sol.Type()] = sol } }