detee-cli/src/sgx/packaging.rs
2025-06-19 20:43:05 +03:00

39 lines
1.2 KiB
Rust

// SPDX-License-Identifier: Apache-2.0
use crate::config::Config;
use std::process::Command;
pub fn package_enclave(
items: Vec<String>,
package_type: &str,
) -> Result<i32, Box<dyn std::error::Error>> {
let package_items = items
.into_iter()
.map(|item| item.strip_prefix("./").unwrap_or(&item).to_owned())
.collect::<Vec<_>>()
.join(" ");
let signing_key_path = Config::mrsigner_key_path()?;
let hratls_key_path = Config::hratls_key_path()?;
let docker_package_str = if package_type == "public" {
format!(
r#"docker run --rm -it -v ./:/app/ \
-v {signing_key_path}:/keys/app_signing_key.pem:ro \
noormohammedb/enclave_packager_01:pub_v5 {package_items}"#
)
} else {
format!(
r#"docker run --rm -it -v ./:/app/ \
-v {signing_key_path}:/keys/app_signing_key.pem:ro \
-v {hratls_key_path}:/keys/hratls_private_key.pem:ro \
noormohammedb/enclave_packager_01:v1 {package_items}"#
)
};
let mut child = Command::new("sh").arg("-c").arg(docker_package_str).spawn()?;
let exit = child.wait()?;
Ok(exit.code().ok_or("Could not get exit code")?)
}