Private
Public Access
1
0
Files
linux_patch_manager/Cargo.toml
Draco-Lunaris-Echo 27716af5d7
Some checks failed
CI Pipeline / Rust Format Check (push) Successful in 3s
CI Pipeline / Clippy Lints (push) Successful in 52s
CI Pipeline / Rust Unit Tests (push) Failing after 1m21s
CI Pipeline / Security Audit (push) Successful in 5s
CI Pipeline / Frontend Lint & Type Check (push) Successful in 16s
CI Pipeline / Build .deb & Release (push) Has been skipped
fix(packaging): convert CA key from SEC1 to PKCS#8 for Rust pm-ca parser (#71)
The Rust pm-ca crate (crates/pm-ca/src/ca.rs) only parses PKCS#8
format private keys. openssl ecparam -genkey produces SEC1 format
(BEGIN EC PRIVATE KEY), which the Rust ring/RSA parser rejects
with "parse CA private-key PEM", causing the service to crash-loop
on startup.

Proven on LPM: converting ca.key with openssl pkcs8 -topk8 -nocrypt
and restarting patch-manager-web results in:
  Root CA loaded successfully
  Listening (HTTPS) on 0.0.0.0:443
2026-06-10 10:20:46 -05:00

94 lines
2.4 KiB
TOML

[workspace]
resolver = "2"
members = [
"crates/pm-web",
"crates/pm-worker",
"crates/pm-core",
"crates/pm-agent-client",
"crates/pm-auth",
"crates/pm-ca",
"crates/pm-reports",
"crates/migrate-secrets",
]
[workspace.package]
version = "1.1.14"
edition = "2021"
authors = ["Echo <echo@moon-dragon.us>"]
license = "MIT"
[workspace.dependencies]
# Async runtime
tokio = { version = "1", features = ["full"] }
# Web framework
axum = { version = "0.8", features = ["ws", "macros"] }
axum-server = { version = "0.7", features = ["tls-rustls"] }
axum-extra = { version = "0.10", features = ["typed-header"] }
tower = { version = "0.5" }
tower-http = { version = "0.6", features = ["fs", "trace", "cors", "request-id"] }
# Database
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "macros", "migrate", "uuid", "chrono", "json"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1" }
toml = { version = "0.8" }
# Error handling
thiserror = { version = "2" }
anyhow = { version = "1" }
# Logging / Tracing
tracing = { version = "0.1" }
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
# UUID / ULID
uuid = { version = "1", features = ["v4", "serde"] }
ulid = { version = "1", features = ["serde"] }
# Time
chrono = { version = "0.4", features = ["serde"] }
# HTTP client
reqwest = { version = "0.12", features = ["rustls-tls", "json"] }
rustls = { version = "0.23", features = ["ring"] }
tokio-rustls = { version = "0.26" }
rustls-pemfile = { version = "2" }
# Certificate Authority
rcgen = { version = "0.13", features = ["pem", "x509-parser"] }
pem = { version = "3" }
time = { version = "0.3", features = ["std"] }
# Config
config = { version = "0.15" }
# Misc
bytes = { version = "1" }
futures = { version = "0.3" }
# Authentication & Security
argon2 = { version = "0.5", features = ["std"] }
jsonwebtoken = { version = "9" }
rand = { version = "0.8", features = ["std"] }
totp-rs = { version = "5", features = ["gen_secret", "otpauth"] }
base64 = { version = "0.22" }
hex = { version = "0.4" }
sha2 = { version = "0.10" }
aes-gcm = { version = "0.10" }
# Testing
proptest = { version = "1" }
ipnet = { version = "2" }
url = { version = "2" }
# Rate limiting
tower_governor = { version = "0.8", features = ["tracing"] }
governor = "0.6"
# Email
lettre = { version = "0.11.22", features = ["tokio1-rustls-transport"] }