Memory Management:
impl SecureMemoryManager {
pub fn secure_allocate_with_capability(
&mut self,
size: NonZeroUsize,
alignment: NonZeroUsize,
capability: &MemoryCapability,
security_context: &SecurityContext,
) -> Result<SecureMemoryRegion, MemoryAllocationError> {
// Verify capability permits allocation
self.capability_verifier.verify_allocation_capability(
capability, size, alignment, security_context
)?;
// Physical memory allocation
let physical_region = self.physical_allocator
.allocate_with_strategy(size, alignment)?;
// Virtual memory mapping with security
let virtual_mapping = self.virtual_allocator
.create_secure_mapping(physical_region, security_context)?;
// Hardware memory encryption
let encryption_handle = if security_context.requires_encryption() {
Some(self.memory_encryption.enable_region_encryption(
virtual_mapping.virtual_address(), size, security_context.key()
)?)
} else { None };
Ok(SecureMemoryRegion {
virtual_mapping,
physical_region,
encryption_handle,
capability: capability.clone(),
allocation_timestamp: precise_timestamp(),
})
}
}
Last updated