Load every PEM-encoded CA certificate from `tls_dir/ca.d/*.crt`, sorted by filename for deterministic output. Missing directory is treated as "no overlap CAs" and returns an empty vec.
(tls_dir: &Path)
| 208 | /// sorted by filename for deterministic output. Missing directory is |
| 209 | /// treated as "no overlap CAs" and returns an empty vec. |
| 210 | fn load_extra_cas(tls_dir: &Path) -> crate::Result<Vec<CertificateDer<'static>>> { |
| 211 | let dir = tls_dir.join(CA_TRUST_DIR); |
| 212 | if !dir.exists() { |
| 213 | return Ok(Vec::new()); |
| 214 | } |
| 215 | let mut entries: Vec<PathBuf> = fs::read_dir(&dir) |
| 216 | .map_err(|e| crate::Error::Config { |
| 217 | detail: format!("read ca.d {}: {e}", dir.display()), |
| 218 | })? |
| 219 | .filter_map(|r| r.ok()) |
| 220 | .map(|e| e.path()) |
| 221 | .filter(|p| p.extension().and_then(|s| s.to_str()) == Some("crt")) |
| 222 | .collect(); |
| 223 | entries.sort(); |
| 224 | let mut out = Vec::with_capacity(entries.len()); |
| 225 | for p in entries { |
| 226 | out.push(read_single_cert(&p)?); |
| 227 | } |
| 228 | Ok(out) |
| 229 | } |
| 230 | |
| 231 | /// Write a PEM-encoded CA cert into `tls_dir/ca.d/<fp_hex>.crt`. |
| 232 | /// Called by the production applier when a `CaTrustChange { add: ... }` |
no test coverage detected