From f220e200ec0f0f8d9bfcaf8d780ca6539b5426e2 Mon Sep 17 00:00:00 2001 From: Noor Date: Thu, 20 Mar 2025 16:21:11 +0530 Subject: [PATCH] feat: add hratls_pubkey and mrsigner_pubkey to config AccountData and update related methods --- src/config.rs | 32 +++++++++++++++++++------------- src/sgx/grpc_dtpm.rs | 4 ++-- src/sgx/packaging.rs | 4 ++-- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/config.rs b/src/config.rs index 5bbca43..1b8f151 100644 --- a/src/config.rs +++ b/src/config.rs @@ -16,6 +16,10 @@ pub struct AccountData { locked_funds: f64, wallet_address: String, wallet_path: String, + pub hratls_pubkey: String, + pub hratls_path: String, + pub mrsigner: [u8; 32], + pub signing_key_path: String, } impl super::HumanOutput for AccountData { @@ -331,18 +335,20 @@ impl Config { Ok(path) => account_data.wallet_path = path, Err(_) => log::error!("This error should never happen. Please report this bug."), } + + account_data.hratls_pubkey = Self::get_hratls_pubkey_hex(); + account_data.hratls_path = Self::hratls_private_key_path(); + account_data.mrsigner = Self::get_mr_signer(); + account_data.signing_key_path = Self::signing_key_path(); + account_data } } impl Config { - pub fn get_hratls_private_key() -> (String, String) { - ( - std::fs::read_to_string(Self::hratls_private_key_path()).unwrap_or_else(|_| { - Self::create_hratls_key().expect("Failed to create HRATLS key") - }), - Self::hratls_private_key_path(), - ) + pub fn get_hratls_private_key() -> String { + std::fs::read_to_string(Self::hratls_private_key_path()) + .unwrap_or_else(|_| Self::create_hratls_key().expect("Failed to create HRATLS key")) } fn create_hratls_key() -> Result> { @@ -359,7 +365,7 @@ impl Config { } pub fn get_hratls_pubkey_hex() -> String { - let private_key_pem_str = Self::get_hratls_private_key().0; + let private_key_pem_str = Self::get_hratls_private_key(); let private_key = PKey::private_key_from_pem(private_key_pem_str.as_ref()).unwrap(); let pubkey = private_key.raw_public_key().unwrap(); pubkey.iter().fold(String::new(), |acc, x| acc + &format!("{:02X?}", x)) @@ -371,8 +377,8 @@ impl Config { } impl Config { - pub fn get_mr_signer() -> [u8; 32] { - let mut signing_key_mod = Self::get_signing_key().0.n().to_vec(); + fn get_mr_signer() -> [u8; 32] { + let mut signing_key_mod = Self::get_signing_key().n().to_vec(); signing_key_mod.reverse(); // make it little endian let mut hasher = Hasher::new(MessageDigest::sha256()).unwrap(); @@ -386,13 +392,13 @@ impl Config { mr_signer } - pub fn get_signing_key() -> (Rsa, String) { + fn get_signing_key() -> Rsa { let signing_key_pem_str = std::fs::read_to_string(Self::signing_key_path()).unwrap_or_else(|_| { Self::create_signing_key().expect("Failed to create enclave signing key") }); - (Rsa::private_key_from_pem(signing_key_pem_str.as_ref()).unwrap(), Self::signing_key_path()) + Rsa::private_key_from_pem(signing_key_pem_str.as_ref()).unwrap() } fn create_signing_key() -> Result> { @@ -429,7 +435,7 @@ mod tests { #[test] fn test_hratls_private_key() { - let hratls_private_key = Config::get_hratls_private_key().0; + let hratls_private_key = Config::get_hratls_private_key(); println!("hratls_private_key:\n{hratls_private_key}"); } diff --git a/src/sgx/grpc_dtpm.rs b/src/sgx/grpc_dtpm.rs index 0e5120a..10e70a0 100644 --- a/src/sgx/grpc_dtpm.rs +++ b/src/sgx/grpc_dtpm.rs @@ -36,8 +36,8 @@ pub async fn connect_dtpm_grpc_client( hratls_uri: String, package_mr_enclave: Option<[u8; 32]>, ) -> Result> { - let private_key_pem = Config::get_hratls_private_key().0; - let mr_signer = vec![Config::get_mr_signer()]; + let private_key_pem = Config::get_hratls_private_key(); + let mr_signer = vec![Config::get_account_data().mrsigner]; let _ = rustls::crypto::aws_lc_rs::default_provider().install_default(); diff --git a/src/sgx/packaging.rs b/src/sgx/packaging.rs index d35a826..611e85f 100644 --- a/src/sgx/packaging.rs +++ b/src/sgx/packaging.rs @@ -11,8 +11,8 @@ pub fn package_enclave( .collect::>() .join(" "); - let signing_key_path = Config::get_signing_key().1; - let hratls_key_path = Config::get_hratls_private_key().1; + let signing_key_path = Config::get_account_data().signing_key_path; + let hratls_key_path = Config::get_account_data().hratls_path; let docker_package_str = if package_type == "public" { format!(