pollux/src/tls.rs
Jeena 1ed443ff2a Initial codebase structure
- Complete Gemini server implementation with logging
- Add comprehensive documentation (README.md, AGENTS.md)
- Implement certificate management guidelines
- Add .gitignore for security and build artifacts
- All unit tests passing (14/14)
- Ready for production deployment
2026-01-15 08:22:06 +09:00

28 lines
No EOL
1,002 B
Rust

use std::fs;
use std::io::{self, BufReader};
pub fn load_certs(filename: &str) -> io::Result<Vec<rustls::Certificate>> {
let certfile = fs::File::open(filename)?;
let mut reader = BufReader::new(certfile);
rustls_pemfile::certs(&mut reader)?
.into_iter()
.map(|v| Ok(rustls::Certificate(v)))
.collect()
}
pub fn load_private_key(filename: &str) -> io::Result<rustls::PrivateKey> {
let keyfile = fs::File::open(filename)?;
let mut reader = BufReader::new(keyfile);
loop {
match rustls_pemfile::read_one(&mut reader)? {
Some(rustls_pemfile::Item::RSAKey(key)) => return Ok(rustls::PrivateKey(key)),
Some(rustls_pemfile::Item::PKCS8Key(key)) => return Ok(rustls::PrivateKey(key)),
Some(rustls_pemfile::Item::ECKey(key)) => return Ok(rustls::PrivateKey(key)),
None => break,
_ => {}
}
}
Err(io::Error::new(io::ErrorKind::InvalidData, "No supported private key found"))
}