Skip to main content

AuthenticatedChannel

Struct AuthenticatedChannel 

Source
pub struct AuthenticatedChannel { /* private fields */ }
Expand description

Authenticated private control channel with a pollable peer-lifecycle handle.

Implementations§

Source§

impl AuthenticatedChannel

Source

pub fn new( stream: UnixStream, expected: PeerCredentials, nonce: [u8; 32], ) -> Result<Self, LinuxError>

Authenticates an already-private post-exec Unix connection.

Source

pub const fn peer(&self) -> PeerCredentials

Returns the kernel-authenticated peer credentials.

Source

pub fn peer_exited(&self) -> Result<bool, LinuxError>

Returns whether the peer pidfd currently reports exit without blocking.

Source

pub fn transfer_writer( &mut self, prepared: PreparedWriter, ) -> Result<WriterRegion<LinuxWriterMapping>, LinuxError>

Transfers a prepared reader capability and withholds the local writer until authenticated peer validation completes the READY/COMMIT barrier.

prepared must come from QuiescentRegion::prepare_writer. This call owns the complete serialized transaction and returns only after the peer validates the exact manifest and accepts COMMIT.

§Errors

Returns an error for peer exit, timeout, malformed or stale control frames, descriptor-transfer failure, or a mismatched READY transcript. Any ambiguous failure poisons the channel and terminates an owned helper.

Examples found in repository?
examples/ready_commit.rs (line 19)
12fn creator(
13    channel: &mut native_ipc_platform::linux::AuthenticatedChannel,
14    prepared: native_ipc_platform::linux::PreparedWriter,
15) -> Result<
16    native_ipc_core::mapping::WriterRegion<native_ipc_platform::linux::LinuxWriterMapping>,
17    native_ipc_platform::linux::LinuxError,
18> {
19    channel.transfer_writer(prepared)
20}
Source

pub fn receive_reader( &mut self, expected_len: usize, expected: ValidationExpectations, topology: RegionSetLayout, ) -> Result<ReaderRegion<LinuxReaderMapping>, LinuxError>

Receives, validates, maps, and binds one read-only capability.

expected_len is the exact page-rounded native capability length; expected and topology identify the canonical region. The returned reader remains unavailable internally until COMMIT is received.

§Errors

Returns an error for peer exit, timeout, malformed ancillary data, invalid seals or length, layout rejection, or a mismatched COMMIT.

Examples found in repository?
examples/ready_commit.rs (line 32)
23fn peer(
24    channel: &mut native_ipc_platform::linux::AuthenticatedChannel,
25    len: usize,
26    expected: ValidationExpectations,
27    topology: RegionSetLayout,
28) -> Result<
29    native_ipc_core::mapping::ReaderRegion<native_ipc_platform::linux::LinuxReaderMapping>,
30    native_ipc_platform::linux::LinuxError,
31> {
32    channel.receive_reader(len, expected, topology)
33}

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.