Problem
I am having trouble getting ring
keys to load in rustls
All the files that I write to disk do have data. Windows reports 1KB size for each file in explorer.
Creating & Loading Private Keys
Generating with ring
let rng = rand::SystemRandom::new();
let pkcs8_bytes = signature::Ed25519KeyPair::generate_pkcs8(&rng).unwrap();
let mut key_pairf = File::create("F:\\rust_projects\\andrew-testing\\andrew.keypair").unwrap();
key_pairf.write_all(pkcs8_bytes.as_ref()).unwrap();
When I read them in rustls, it just prints []
let mut key_pairf = File::open("F:\\rust_projects\\andrew-testing\\andrew.keypair").unwrap();
let mut bufkey = io::BufReader::new(key_pairf);
let keypair = rustls::internal::pemfile::pkcs8_private_keys(&mut bufkey).unwrap();
println!("{:?}", keypair)
How do I load my keypair into rustls correctly?
Creating & Loading Custom Clients' Public Keys
I'd like to only trust specific public keys from the clients.
Here is my attempt.
I'm pretty confused on how to do this, but here's my attempt at starting this
Creating public key
let rng = rand::SystemRandom::new();
let pkcs8_bytes = signature::Ed25519KeyPair::generate_pkcs8(&rng).unwrap();
let key_pair = signature::Ed25519KeyPair::from_pkcs8(pkcs8_bytes.as_ref()).unwrap();
let peer_public_key_bytes = key_pair.public_key().as_ref();
let mut x = File::create("F:\\rust_projects\\andrew-testing\\client.pub").unwrap();
x.write_all(peer_public_key_bytes).unwrap();
Loading them
Prints (0, 0)
let mut pubf = File::open("F:\\rust_projects\\andrew-testing\\client.pub").unwrap();
let mut bufkey = io::BufReader::new(pubf);
let x = pemfile::certs(&mut bufkey);
let mut config = rustls::ClientConfig::new();
let q = config.root_store.add_pem_file(&mut bufkey).unwrap();
println!("{:?}", q);