Files
certforge/Cargo.toml
T
Roman KivalinandClaude Opus 4.6 c717da348a Add custom file permissions for key and certificate files
Support key_mode, key_owner, key_group and cert_mode, cert_owner,
cert_group per certificate. Mode is an octal string (e.g. "0640"),
owner/group are resolved by name via getpwnam/getgrnam.

Permissions are checked before applying — system calls are only made
when the current state differs from the desired state, and changes
are logged. Runs on every renew for existing files, not just when
certificates are renewed. Defaults: key 0600, cert 0644, owner/group
unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 21:03:59 +02:00

72 lines
1.8 KiB
TOML

[package]
name = "certforge"
version = "0.7.0"
edition = "2024"
[profile.release]
lto = true # link-time optimization — enables cross-crate dead code elimination
codegen-units = 1 # single codegen unit — better optimization at cost of compile time
strip = true # strip debug symbols and metadata
panic = "abort" # no unwinding machinery — smaller binary, simpler code
[dependencies]
# ACME
instant-acme = { version = "0.8", default-features = false, features = ["hyper-rustls", "ring"] }
# DNS
hickory-proto = { version = "0.25", features = ["dnssec-ring"] }
hickory-client = { version = "0.25", features = ["dnssec-ring"] }
# Crypto / Certificates
rcgen = "0.13"
ring = "0.17"
x509-parser = "0.16"
pem = "3"
sha2 = "0.10"
base64 = "0.22"
hex = "0.4"
rustls-pki-types = "1"
# Async
tokio = { version = "1", features = ["macros", "rt-multi-thread", "net", "time", "process", "io-util"] }
futures-core = "0.3"
# CLI
clap = { version = "4", features = ["derive"] }
# Config
serde = { version = "1", features = ["derive"] }
toml = "0.8"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Error handling
thiserror = "2"
anyhow = "1"
# Time
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
# State persistence
serde_json = "1"
# HTTP server (for HTTP-01 solver)
hyper = { version = "1", features = ["http1", "server"] }
hyper-util = { version = "0.1", features = ["tokio"] }
http-body-util = "0.1"
# TLS (for TLS-ALPN-01 solver)
tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] }
rustls = { version = "0.23", default-features = false, features = ["ring", "std"] }
# Trait async support
async-trait = "0.1"
# Unix permissions
libc = "0.2"
# systemd D-Bus
zbus = "5"