From 61a8ff9537e72740435bb5cf72354587d2c1f8dd Mon Sep 17 00:00:00 2001 From: ryan Date: Fri, 11 Jul 2025 17:30:35 -0400 Subject: [PATCH] add enclaveos shim to test something --- src/platform/aws.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/platform/aws.rs b/src/platform/aws.rs index 30ca698..8f4cc04 100644 --- a/src/platform/aws.rs +++ b/src/platform/aws.rs @@ -63,7 +63,51 @@ impl super::Platform for Aws { } fn init(&self) -> Result<()> { - Self::init_heartbeat()?; + // Self::init_heartbeat()?; + enclaveos_shim::nitro_heartbeat(); Ok(()) } } + +mod enclaveos_shim { + + mod system { + pub fn socket_connect( + family: libc::c_int, + port: u32, + cid: u32, + ) -> libc::c_int { + use libc::{connect, socket, sockaddr, sockaddr_vm, SOCK_STREAM}; + let fd = unsafe { socket(family, SOCK_STREAM, 0) }; + if unsafe { + let mut sa: sockaddr_vm = std::mem::zeroed(); + sa.svm_family = family as _; + sa.svm_port = port; + sa.svm_cid = cid; + connect( + fd, + &sa as *const _ as *mut sockaddr, + size_of::() as _, + ) + } < 0 { + panic!("yikes") + } else { + fd + } + } + } + + pub fn nitro_heartbeat() { + use system::socket_connect; + use libc::{write, read, close, AF_VSOCK}; + let mut buf: [u8; 1] = [0; 1]; + buf[0] = 0xB7; // AWS Nitro heartbeat value + let fd = socket_connect(AF_VSOCK, 9000, 3); + unsafe { + write(fd, buf.as_ptr() as _, 1); + read(fd, buf.as_ptr() as _, 1); + close(fd); + } + eprintln!("Sent NSM heartbeat"); + } +}