From 46c9a6e4993a48abf513cc411451568cde987850 Mon Sep 17 00:00:00 2001 From: Aaron Kaiser Date: Tue, 27 Aug 2024 16:06:34 +0200 Subject: [PATCH] feat: seperate keyfiles per agent --- src/agent.rs | 6 +++--- src/mlkem.rs | 3 ++- src/x25519.rs | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/agent.rs b/src/agent.rs index 2b0fdc0..1fabf67 100644 --- a/src/agent.rs +++ b/src/agent.rs @@ -13,7 +13,7 @@ pub struct Agent { unsafe impl Send for Agent {} impl Agent { - pub(crate) unsafe fn new(path: &Path) -> Result { + pub(crate) unsafe fn new(agent_path: &Path, keyfile_path: &Path) -> Result { let data_fd = get_shared_mem_fd(); let sync_fd = memfd_create("sync\x00".as_ptr() as *const c_char, 0); @@ -46,10 +46,10 @@ impl Agent { if child == 0 { // child - let path = CString::new(path.as_os_str().as_encoded_bytes()).unwrap(); + let path = CString::new(agent_path.as_os_str().as_encoded_bytes()).unwrap(); let data_fd = CString::new(data_fd.to_string()).unwrap(); let sync_fd = CString::new(sync_fd.to_string()).unwrap(); - let keyfile = CString::new(std::env::var("KEY_FILE").expect("KEY_FILE environment variable missing")).unwrap(); + let keyfile = CString::new(keyfile_path.as_os_str().as_encoded_bytes()).unwrap(); let args = [data_fd.as_ptr(), sync_fd.as_ptr(), keyfile.as_ptr(), ptr::null()]; diff --git a/src/mlkem.rs b/src/mlkem.rs index fb7bcf6..f7d2d35 100644 --- a/src/mlkem.rs +++ b/src/mlkem.rs @@ -7,7 +7,8 @@ use std::{ static MLKEMAGENT: LazyLock> = LazyLock::new(|| { let agent_path = std::env::var("MLKEM_AGENT_PATH").expect("MLKEM_AGENT_PATH environment variable missing"); - let agent = unsafe { Agent::new(Path::new(&agent_path)).expect("Agent failed to start") }; + let keyfile_path = std::env::var("MLKEM_KEYFILE").expect("MLKEM_KEYFILE environment variable missing"); + let agent = unsafe { Agent::new(Path::new(&agent_path), Path::new(&keyfile_path)).expect("Agent failed to start") }; Mutex::new(agent) }); diff --git a/src/x25519.rs b/src/x25519.rs index ccd4444..1bd34dd 100644 --- a/src/x25519.rs +++ b/src/x25519.rs @@ -7,7 +7,8 @@ use std::{ static X25519AGENT: LazyLock> = LazyLock::new(|| { let agent_path = std::env::var("X25519_AGENT_PATH").expect("X25519_AGENT_PATH environment variable missing"); - let agent = unsafe { Agent::new(Path::new(&agent_path)).expect("Agent failed to start") }; + let keyfile_path = std::env::var("X25519_KEYFILE").expect("X25519_KEYFILE environment variable missing"); + let agent = unsafe { Agent::new(Path::new(&agent_path), Path::new(&keyfile_path)).expect("Agent failed to start") }; Mutex::new(agent) });