From fa394dcd271a1cfeaa061dc58f2d33f492603e37 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 6 Jul 2021 10:58:32 +0200 Subject: [PATCH] Support pkcs8 private keys (allowing for ed25519 to be used for rpc) --- src/rpc/tls_util.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/rpc/tls_util.rs b/src/rpc/tls_util.rs index 36ea7bf3..8189f93b 100644 --- a/src/rpc/tls_util.rs +++ b/src/rpc/tls_util.rs @@ -38,15 +38,16 @@ pub fn load_certs(filename: &str) -> Result, Error> { } pub fn load_private_key(filename: &str) -> Result { - let keyfile = fs::File::open(&filename)?; - let mut reader = io::BufReader::new(keyfile); + let keydata = fs::read_to_string(filename)?; - let keys = pemfile::rsa_private_keys(&mut reader).map_err(|_| { - Error::Message(format!( - "Could not decode private key from file: {}", - filename - )) - })?; + let mut buf1 = keydata.as_bytes(); + let rsa_keys = pemfile::rsa_private_keys(&mut buf1).unwrap_or_default(); + + let mut buf2 = keydata.as_bytes(); + let pkcs8_keys = pemfile::pkcs8_private_keys(&mut buf2).unwrap_or_default(); + + let mut keys = rsa_keys; + keys.extend(pkcs8_keys.into_iter()); if keys.len() != 1 { return Err(Error::Message(format!(