diff --git a/enclaves/quartz/src/main.rs b/enclaves/quartz/src/main.rs index 649fe71..7b27c3d 100644 --- a/enclaves/quartz/src/main.rs +++ b/enclaves/quartz/src/main.rs @@ -15,6 +15,7 @@ mod attestor; mod cli; +mod mtcs_server; mod proto; mod server; @@ -31,6 +32,8 @@ use tonic::transport::Server; use crate::{ attestor::{Attestor, EpidAttestor}, cli::Cli, + mtcs_server::MtcsService, + proto::clearing_server::ClearingServer as MtcsServer, server::CoreService, }; @@ -67,6 +70,7 @@ async fn main() -> Result<(), Box> { sk.clone(), EpidAttestor, ))) + .add_service(MtcsServer::new(MtcsService::new(sk.clone(), EpidAttestor))) .serve(args.rpc_addr) .await?; diff --git a/enclaves/quartz/src/mtcs_server.rs b/enclaves/quartz/src/mtcs_server.rs new file mode 100644 index 0000000..7216b3e --- /dev/null +++ b/enclaves/quartz/src/mtcs_server.rs @@ -0,0 +1,37 @@ +use std::sync::{Arc, Mutex}; + +use k256::ecdsa::SigningKey; +use tonic::{Request, Response, Result as TonicResult, Status}; + +use crate::{ + attestor::Attestor, + proto::{clearing_server::Clearing, RunClearingRequest, RunClearingResponse}, +}; + +#[derive(Clone, Debug)] +pub struct MtcsService { + sk: Arc>>, + attestor: A, +} + +impl MtcsService +where + A: Attestor, +{ + pub fn new(sk: Arc>>, attestor: A) -> Self { + Self { sk, attestor } + } +} + +#[tonic::async_trait] +impl Clearing for MtcsService +where + A: Attestor + Send + Sync + 'static, +{ + async fn run( + &self, + _request: Request, + ) -> TonicResult> { + todo!() + } +}