Compare commits
3 Commits
main
...
x25519-age
| Author | SHA1 | Date | |
|---|---|---|---|
| 00afc7130b | |||
| 830dc9671c | |||
| af0d286549 |
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -26,7 +26,6 @@ checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "shared_memory_heap"
|
name = "shared_memory_heap"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://gitea.rixxc.de/rixxc/shared_memory_heap.git#ef9bcc94fb04d7191514a249c78d608d2f7cb9a6"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.82"
|
anyhow = "1.0.82"
|
||||||
libc = "0.2.153"
|
libc = "0.2.153"
|
||||||
shared_memory_heap = { git = "https://gitea.rixxc.de/rixxc/shared_memory_heap.git" }
|
shared_memory_heap = { path = "../shared_memory_heap/" }
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ impl Agent {
|
|||||||
if child == 0 {
|
if child == 0 {
|
||||||
// child
|
// child
|
||||||
|
|
||||||
close(0);
|
// close(0);
|
||||||
close(1);
|
// close(1);
|
||||||
close(2);
|
// close(2);
|
||||||
|
|
||||||
let path = CString::new(agent_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 data_fd = CString::new(data_fd.to_string()).unwrap();
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ static ED25519AGENT: LazyLock<Vec<Mutex<Agent>>> = LazyLock::new(|| {
|
|||||||
let keyfile_path =
|
let keyfile_path =
|
||||||
std::env::var("ED25519_KEYFILE").expect("Ed25519_KEYFILE environment variable missing");
|
std::env::var("ED25519_KEYFILE").expect("Ed25519_KEYFILE environment variable missing");
|
||||||
let num_agents: usize = std::env::var("NUM_AGENTS")
|
let num_agents: usize = std::env::var("NUM_AGENTS")
|
||||||
.expect("NUM_AGENTS environment variable missing")
|
.unwrap_or("1".to_string())
|
||||||
.parse()
|
.parse()
|
||||||
.expect("NUM_AGENTS should be an integer");
|
.expect("NUM_AGENTS should be an integer");
|
||||||
let mut agents = Vec::with_capacity(num_agents);
|
let mut agents = Vec::with_capacity(num_agents);
|
||||||
|
|||||||
@@ -2,13 +2,17 @@ pub use shared_memory_heap::sharedptr::SharedPtr;
|
|||||||
|
|
||||||
use crate::agent::Agent;
|
use crate::agent::Agent;
|
||||||
use std::{
|
use std::{
|
||||||
ops::Deref, path::Path, sync::{LazyLock, Mutex}
|
ops::Deref,
|
||||||
|
path::Path,
|
||||||
|
sync::{LazyLock, Mutex},
|
||||||
};
|
};
|
||||||
|
|
||||||
static X25519AGENT: LazyLock<Mutex<Agent>> = LazyLock::new(|| {
|
static X25519AGENT: LazyLock<Mutex<Agent>> = LazyLock::new(|| {
|
||||||
let agent_path = std::env::var("X25519_AGENT_PATH").expect("X25519_AGENT_PATH environment variable missing");
|
let agent_path = "agent_harness";
|
||||||
let keyfile_path = std::env::var("X25519_KEYFILE").expect("X25519_KEYFILE environment variable missing");
|
let keyfile_path = "/etc/x25519-agent/keyfile";
|
||||||
let agent = unsafe { Agent::new(Path::new(&agent_path), Path::new(&keyfile_path)).expect("Agent failed to start") };
|
let agent = unsafe {
|
||||||
|
Agent::new(Path::new(&agent_path), Path::new(&keyfile_path)).expect("Agent failed to start")
|
||||||
|
};
|
||||||
Mutex::new(agent)
|
Mutex::new(agent)
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -61,7 +65,7 @@ impl Deref for X25519SharedKey {
|
|||||||
|
|
||||||
pub fn x25519_keygen() -> (X25519PrivKey, X25519PubKey) {
|
pub fn x25519_keygen() -> (X25519PrivKey, X25519PubKey) {
|
||||||
let sk = X25519PrivKey(SharedPtr::new(8).unwrap());
|
let sk = X25519PrivKey(SharedPtr::new(8).unwrap());
|
||||||
let pk = X25519PubKey(SharedPtr::new(32).unwrap());
|
let pk = X25519PubKey(SharedPtr::new(32).unwrap());
|
||||||
|
|
||||||
let mut agent = X25519AGENT.lock().unwrap();
|
let mut agent = X25519AGENT.lock().unwrap();
|
||||||
|
|
||||||
@@ -94,7 +98,10 @@ pub fn x25519(sk: &X25519PrivKey, pk: &X25519PubKey) -> X25519SharedKey {
|
|||||||
let mut agent = X25519AGENT.lock().unwrap();
|
let mut agent = X25519AGENT.lock().unwrap();
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
agent.perform_ipc_call(2, &[out.0.get_offset(), sk.0.get_offset(), pk.0.get_offset()]);
|
agent.perform_ipc_call(
|
||||||
|
2,
|
||||||
|
&[out.0.get_offset(), sk.0.get_offset(), pk.0.get_offset()],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
drop(agent);
|
drop(agent);
|
||||||
|
|||||||
Reference in New Issue
Block a user