Module Make.Acme

type solver = Letsencrypt.Client.Solver(Lwt).solver = {
  1. challenge : Letsencrypt.Client.challenge;
  2. solve_challenge : token:string -> key_authorization:string -> [ `host ] Domain_name.t -> (unit, [ `Msg of string ]) Stdlib.result Lwt.t;
}
val http_solver : ([ `host ] Domain_name.t -> prefix:string -> token:string -> content:string -> (unit, [ `Msg of string ]) Stdlib.result Lwt.t) -> solver
val print_http : solver
val alpn_solver : ?key_type:X509.Key_type.t -> ?bits:int -> ([ `host ] Domain_name.t -> alpn:string -> X509.Private_key.t -> X509.Certificate.t -> (unit, [ `Msg of string ]) Stdlib.result Lwt.t) -> solver
val print_alpn : solver
val initialise : ?ctx:Client.ctx -> endpoint:string -> ?email:string -> X509.Private_key.t -> (Letsencrypt.Client.t, [> `HTTP of Client.error | `Msg of string ]) Stdlib.result Lwt.t
val sign_certificate : ?ctx:Client.ctx -> solver -> Letsencrypt.Client.t -> (int -> unit Lwt.t) -> X509.Signing_request.t -> (X509.Certificate.t list, [> `HTTP of Client.error | `Msg of string ]) Stdlib.result Lwt.t