in src/enclave_proc/connection.rs [78:112]
fn new_with_defaults() -> Self {
let cmds_read_write = vec![
EnclaveProcessCommandType::Run,
EnclaveProcessCommandType::Terminate,
EnclaveProcessCommandType::TerminateComplete,
EnclaveProcessCommandType::Describe,
EnclaveProcessCommandType::GetEnclaveCID,
EnclaveProcessCommandType::GetEnclaveFlags,
EnclaveProcessCommandType::GetEnclaveName,
EnclaveProcessCommandType::GetIDbyName,
EnclaveProcessCommandType::ConnectionListenerStop,
];
let cmds_read_only = vec![
EnclaveProcessCommandType::Describe,
EnclaveProcessCommandType::GetEnclaveCID,
EnclaveProcessCommandType::GetEnclaveFlags,
EnclaveProcessCommandType::GetEnclaveName,
EnclaveProcessCommandType::GetIDbyName,
];
let mut policy = HashMap::new();
// The user which owns this enclave process may issue any command.
policy.insert(
CommandRequesterType::User(unsafe { libc::getuid() }),
cmds_read_write.clone(),
);
// The root user may issue any command.
policy.insert(CommandRequesterType::User(0_u32), cmds_read_write);
// All other users may only issue read-only commands.
policy.insert(CommandRequesterType::Others, cmds_read_only);
CommandRequesterPolicy { policy }
}