mirror of
https://github.com/rkivalin/certforge.git
synced 2026-10-18 00:00:51 +00:00
HTTP-01 solver with two modes: - Standalone: embedded hyper HTTP server on configurable address - Webroot: writes token files for an existing web server TLS-ALPN-01 solver: - Embedded rustls TLS server with ALPN "acme-tls/1" - Dynamic certificate resolution per-identifier - Self-signed cert with critical acmeIdentifier extension (RFC 8737) Both solvers use rustls/ring crypto backend (no aws-lc-rs dependency). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
22 lines
667 B
Rust
22 lines
667 B
Rust
pub mod dns01;
|
|
pub mod http01;
|
|
pub mod tls_alpn01;
|
|
|
|
use crate::acme::ChallengeInfo;
|
|
use crate::error::Result;
|
|
|
|
/// A challenge solver that can present and clean up ACME challenges.
|
|
#[async_trait::async_trait]
|
|
pub trait Solver: Send + Sync {
|
|
/// Present a challenge to make it available for ACME validation.
|
|
async fn present(&self, challenge: &ChallengeInfo) -> Result<()>;
|
|
|
|
/// Clean up a challenge after validation (success or failure).
|
|
async fn cleanup(&self, challenge: &ChallengeInfo) -> Result<()>;
|
|
|
|
/// Whether this solver needs a DNS propagation delay after presenting.
|
|
fn needs_propagation_delay(&self) -> bool {
|
|
false
|
|
}
|
|
}
|