UsercallExtension

Trait UsercallExtension 

Source
pub trait UsercallExtension:
    'static
    + Send
    + Sync
    + Debug {
    // Provided methods
    fn connect_stream<'future>(
        &'future self,
        addr: &'future str,
        local_addr: Option<&'future mut String>,
        peer_addr: Option<&'future mut String>,
    ) -> Pin<Box<dyn Future<Output = IoResult<Option<Box<dyn AsyncStream>>>> + 'future>> { ... }
    fn bind_stream<'future>(
        &'future self,
        addr: &'future str,
        local_addr: Option<&'future mut String>,
    ) -> Pin<Box<dyn Future<Output = IoResult<Option<Box<dyn AsyncListener>>>> + 'future>> { ... }
}
Expand description

Provides a mechanism for the enclave code to interface with an external service via a modified runner.

An implementation of UsercallExtension can be registered while building the enclave.

Provided Methods§

Source

fn connect_stream<'future>( &'future self, addr: &'future str, local_addr: Option<&'future mut String>, peer_addr: Option<&'future mut String>, ) -> Pin<Box<dyn Future<Output = IoResult<Option<Box<dyn AsyncStream>>>> + 'future>>

Override the connection target for connect calls by the enclave. The runner should determine the service that the enclave is trying to connect to by looking at addr. If connect_stream returns None, the default implementation of connect_stream is used. The enclave may optionally request the local or peer addresses be returned in local_addr or peer_addr, respectively. If local_addr and/or peer_addr are not None, they will point to an empty String. On success, user-space can fill in the strings as appropriate.

The enclave must not make any security decisions based on the local or peer address received.

Source

fn bind_stream<'future>( &'future self, addr: &'future str, local_addr: Option<&'future mut String>, ) -> Pin<Box<dyn Future<Output = IoResult<Option<Box<dyn AsyncListener>>>> + 'future>>

Override the target for bind calls by the enclave. The runner should determine the service that the enclave is trying to bind to by looking at addr. If bind_stream returns None, the default implementation of bind_stream is used. The enclave may optionally request the local address be returned in local_addr. If local_addr is not None, it will point to an empty String. On success, user-space can fill in the string as appropriate.

The enclave must not make any security decisions based on the local address received.

Trait Implementations§

Source§

impl<T: UsercallExtension> From<T> for Box<dyn UsercallExtension>

Source§

fn from(value: T) -> Box<dyn UsercallExtension>

Converts to this type from the input type.

Implementors§