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
This commit is contained in:
commit
1ed443ff2a
10 changed files with 639 additions and 0 deletions
28
src/tls.rs
Normal file
28
src/tls.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
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"))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue