certon 0.1.2

Automatic HTTPS/TLS certificate management via the ACME protocol
Documentation
[package]
name = "certon"
version = "0.1.2"
edition = "2024"
rust-version = "1.89"
description = "Automatic HTTPS/TLS certificate management via the ACME protocol"
license = "Apache-2.0"
repository = "https://github.com/salvo-rs/certon"
keywords = ["acme", "tls", "https", "certificate", "letsencrypt"]
categories = ["network-programming", "cryptography", "web-programming"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = ["aws-lc-rs"]
aws-lc-rs = ["dep:aws-lc-rs", "rustls/aws_lc_rs", "tokio-rustls/aws_lc_rs", "rcgen/aws_lc_rs", "reqwest/rustls"]
ring = ["dep:ring", "rustls/ring", "tokio-rustls/ring", "rcgen/ring", "reqwest/rustls-no-provider"]

[dependencies]
# Async runtime
tokio = { version = "1", features = ["full"] }

# HTTP client
reqwest = { version = "0.13", default-features = false, features = ["json", "charset", "form"] }

# TLS
rustls = { version = "0.23", default-features = false, features = ["logging", "std", "tls12"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["logging"] }

# Certificate generation and parsing
rcgen = { version = "0.14", default-features = false, features = ["pem"] }
x509-parser = "0.18"
pem = "3"

# Crypto primitives
aws-lc-rs = { version = "1", optional = true }
ring = { version = "0.17", optional = true }
sha1 = "0.10"
sha2 = "0.10"

# ECDSA / RSA / Ed25519 keys
p256 = { version = "0.13", features = ["ecdsa"] }
p521 = { version = "0.13", features = ["ecdsa"] }
ecdsa = { version = "0.16", features = ["signing", "verifying"] }
elliptic-curve = { version = "0.13", features = ["sec1"] }
signature = "2"
rsa = { version = "0.9", features = ["sha2"] }
ed25519-dalek = { version = "2", features = ["rand_core"] }

# Encoding
base64 = "0.22"

# Async trait
async-trait = "0.1"

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["raw_value"] }

# Error handling
thiserror = "2"

# Logging / tracing
tracing = "0.1"

# Random
rand = "0.10.0"

# Time
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }

# URL parsing
url = "2"

# Internationalized Domain Names
idna = "1"

# Futures utilities
futures = "0.3"
hickory-resolver = "0.25"

[dev-dependencies]
tempfile = "3"
tracing-subscriber = "0.3"
tokio-test = "0.4"