pub struct NoiseConfig<P, C: Zeroize, R = ()> { /* private fields */ }
Expand description

The protocol upgrade configuration.

Implementations§

source§

impl<H, C: Zeroize, R> NoiseConfig<H, C, R>

source

pub fn into_authenticated(self) -> NoiseAuthenticated<H, C, R>

Turn the NoiseConfig into an authenticated upgrade for use with a Swarm.

source

pub fn with_prologue(self, prologue: Vec<u8>) -> Self

Set the noise prologue.

source

pub fn set_legacy_config(&mut self, cfg: LegacyConfig) -> &mut Self

Sets the legacy configuration options to use, if any.

source§

impl<C> NoiseConfig<IX, C>where C: Protocol<C> + Zeroize,

source

pub fn ix(dh_keys: AuthenticKeypair<C>) -> Self

Create a new NoiseConfig for the IX handshake pattern.

source§

impl<C> NoiseConfig<XX, C>where C: Protocol<C> + Zeroize,

source

pub fn xx(dh_keys: AuthenticKeypair<C>) -> Self

Create a new NoiseConfig for the XX handshake pattern.

source§

impl<C> NoiseConfig<IK, C>where C: Protocol<C> + Zeroize,

source

pub fn ik_listener(dh_keys: AuthenticKeypair<C>) -> Self

Create a new NoiseConfig for the IK handshake pattern (recipient side).

Since the identity of the local node is known to the remote, this configuration does not transmit a static DH public key or public identity key to the remote.

source§

impl<C> NoiseConfig<IK, C, (PublicKey<C>, PublicKey)>where C: Protocol<C> + Zeroize + AsRef<[u8]>,

source

pub fn ik_dialer( dh_keys: AuthenticKeypair<C>, remote_id: PublicKey, remote_dh: PublicKey<C> ) -> Self

Create a new NoiseConfig for the IK handshake pattern (initiator side).

In this configuration, the remote identity is known to the local node, but the local node still needs to transmit its own public identity.

Trait Implementations§

source§

impl<P: Clone, C: Clone + Zeroize, R: Clone> Clone for NoiseConfig<P, C, R>

source§

fn clone(&self) -> NoiseConfig<P, C, R>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T, C> InboundUpgrade<T> for NoiseConfig<IK, C>where NoiseConfig<IK, C>: UpgradeInfo, T: AsyncRead + AsyncWrite + Unpin + Send + 'static, C: Protocol<C> + AsRef<[u8]> + Zeroize + Clone + Send + 'static,

Implements the responder part of the IK handshake pattern.

IK is a single round-trip (2 messages) handshake.

In the IK handshake, the initiator is expected to know the responder’s identity already, which is why the responder does not send it in the second message.

initiator -{id}-> responder
initiator <-{id}- responder
§

type Output = (RemoteIdentity<C>, NoiseOutput<T>)

Output after the upgrade has been successfully negotiated and the handshake performed.
§

type Error = NoiseError

Possible error during the handshake.
§

type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>

Future that performs the handshake with the remote.
source§

fn upgrade_inbound(self, socket: T, _: Self::Info) -> Self::Future

After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
source§

impl<T, C> InboundUpgrade<T> for NoiseConfig<IX, C>where NoiseConfig<IX, C>: UpgradeInfo, T: AsyncRead + AsyncWrite + Unpin + Send + 'static, C: Protocol<C> + AsRef<[u8]> + Zeroize + Clone + Send + 'static,

Implements the responder part of the IX noise handshake pattern.

IX is a single round-trip (2 messages) handshake in which each party sends their identity over to the other party.

initiator -{id}-> responder
initiator <-{id}- responder
§

type Output = (RemoteIdentity<C>, NoiseOutput<T>)

Output after the upgrade has been successfully negotiated and the handshake performed.
§

type Error = NoiseError

Possible error during the handshake.
§

type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>

Future that performs the handshake with the remote.
source§

fn upgrade_inbound(self, socket: T, _: Self::Info) -> Self::Future

After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
source§

impl<T, C> InboundUpgrade<T> for NoiseConfig<XX, C>where NoiseConfig<XX, C>: UpgradeInfo, T: AsyncRead + AsyncWrite + Unpin + Send + 'static, C: Protocol<C> + AsRef<[u8]> + Zeroize + Clone + Send + 'static,

Implements the responder part of the XX noise handshake pattern.

XX is a 1.5 round-trip (3 messages) handshake. The first message in a noise handshake is unencrypted. In the XX handshake pattern, that message is empty and thus does not leak any information. The identities are then exchanged in the second and third message.

initiator --{}--> responder
initiator <-{id}- responder
initiator -{id}-> responder
§

type Output = (RemoteIdentity<C>, NoiseOutput<T>)

Output after the upgrade has been successfully negotiated and the handshake performed.
§

type Error = NoiseError

Possible error during the handshake.
§

type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>

Future that performs the handshake with the remote.
source§

fn upgrade_inbound(self, socket: T, _: Self::Info) -> Self::Future

After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
source§

impl<T, C> OutboundUpgrade<T> for NoiseConfig<IK, C, (PublicKey<C>, PublicKey)>where NoiseConfig<IK, C, (PublicKey<C>, PublicKey)>: UpgradeInfo, T: AsyncRead + AsyncWrite + Unpin + Send + 'static, C: Protocol<C> + AsRef<[u8]> + Zeroize + Clone + Send + 'static,

Implements the initiator part of the IK handshake pattern.

IK is a single round-trip (2 messages) handshake.

In the IK handshake, the initiator knows and pre-configures the remote’s identity in the HandshakeState.

initiator -{id}-> responder
initiator <-{id}- responder
§

type Output = (RemoteIdentity<C>, NoiseOutput<T>)

Output after the upgrade has been successfully negotiated and the handshake performed.
§

type Error = NoiseError

Possible error during the handshake.
§

type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>

Future that performs the handshake with the remote.
source§

fn upgrade_outbound(self, socket: T, _: Self::Info) -> Self::Future

After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
source§

impl<T, C> OutboundUpgrade<T> for NoiseConfig<IX, C>where NoiseConfig<IX, C>: UpgradeInfo, T: AsyncRead + AsyncWrite + Unpin + Send + 'static, C: Protocol<C> + AsRef<[u8]> + Zeroize + Clone + Send + 'static,

Implements the initiator part of the IX noise handshake pattern.

IX is a single round-trip (2 messages) handshake in which each party sends their identity over to the other party.

initiator -{id}-> responder
initiator <-{id}- responder
§

type Output = (RemoteIdentity<C>, NoiseOutput<T>)

Output after the upgrade has been successfully negotiated and the handshake performed.
§

type Error = NoiseError

Possible error during the handshake.
§

type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>

Future that performs the handshake with the remote.
source§

fn upgrade_outbound(self, socket: T, _: Self::Info) -> Self::Future

After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
source§

impl<T, C> OutboundUpgrade<T> for NoiseConfig<XX, C>where NoiseConfig<XX, C>: UpgradeInfo, T: AsyncRead + AsyncWrite + Unpin + Send + 'static, C: Protocol<C> + AsRef<[u8]> + Zeroize + Clone + Send + 'static,

Implements the initiator part of the XX noise handshake pattern.

XX is a 1.5 round-trip (3 messages) handshake. The first message in a noise handshake is unencrypted. In the XX handshake pattern, that message is empty and thus does not leak any information. The identities are then exchanged in the second and third message.

initiator --{}--> responder
initiator <-{id}- responder
initiator -{id}-> responder
§

type Output = (RemoteIdentity<C>, NoiseOutput<T>)

Output after the upgrade has been successfully negotiated and the handshake performed.
§

type Error = NoiseError

Possible error during the handshake.
§

type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>

Future that performs the handshake with the remote.
source§

fn upgrade_outbound(self, socket: T, _: Self::Info) -> Self::Future

After we have determined that the remote supports one of the protocols we support, this method is called to start the handshake. Read more
source§

impl<R> UpgradeInfo for NoiseConfig<IK, X25519, R>

§

type Info = &'static [u8]

Opaque type representing a negotiable protocol.
§

type InfoIter = Once<<NoiseConfig<IK, X25519, R> as UpgradeInfo>::Info>

Iterator returned by protocol_info.
source§

fn protocol_info(&self) -> Self::InfoIter

Returns the list of protocols that are supported. Used during the negotiation process.
source§

impl<R> UpgradeInfo for NoiseConfig<IK, X25519Spec, R>

Note: This is not currently a standardised upgrade.

§

type Info = &'static [u8]

Opaque type representing a negotiable protocol.
§

type InfoIter = Once<<NoiseConfig<IK, X25519Spec, R> as UpgradeInfo>::Info>

Iterator returned by protocol_info.
source§

fn protocol_info(&self) -> Self::InfoIter

Returns the list of protocols that are supported. Used during the negotiation process.
source§

impl UpgradeInfo for NoiseConfig<IX, X25519>

§

type Info = &'static [u8]

Opaque type representing a negotiable protocol.
§

type InfoIter = Once<<NoiseConfig<IX, X25519, ()> as UpgradeInfo>::Info>

Iterator returned by protocol_info.
source§

fn protocol_info(&self) -> Self::InfoIter

Returns the list of protocols that are supported. Used during the negotiation process.
source§

impl UpgradeInfo for NoiseConfig<IX, X25519Spec>

Note: This is not currentlyy a standardised upgrade.

§

type Info = &'static [u8]

Opaque type representing a negotiable protocol.
§

type InfoIter = Once<<NoiseConfig<IX, X25519Spec, ()> as UpgradeInfo>::Info>

Iterator returned by protocol_info.
source§

fn protocol_info(&self) -> Self::InfoIter

Returns the list of protocols that are supported. Used during the negotiation process.
source§

impl UpgradeInfo for NoiseConfig<XX, X25519>

§

type Info = &'static [u8]

Opaque type representing a negotiable protocol.
§

type InfoIter = Once<<NoiseConfig<XX, X25519, ()> as UpgradeInfo>::Info>

Iterator returned by protocol_info.
source§

fn protocol_info(&self) -> Self::InfoIter

Returns the list of protocols that are supported. Used during the negotiation process.
source§

impl UpgradeInfo for NoiseConfig<XX, X25519Spec>

§

type Info = &'static [u8]

Opaque type representing a negotiable protocol.
§

type InfoIter = Once<<NoiseConfig<XX, X25519Spec, ()> as UpgradeInfo>::Info>

Iterator returned by protocol_info.
source§

fn protocol_info(&self) -> Self::InfoIter

Returns the list of protocols that are supported. Used during the negotiation process.

Auto Trait Implementations§

§

impl<P, C, R> RefUnwindSafe for NoiseConfig<P, C, R>where C: RefUnwindSafe, P: RefUnwindSafe, R: RefUnwindSafe,

§

impl<P, C, R> Send for NoiseConfig<P, C, R>where C: Send, P: Send, R: Send,

§

impl<P, C, R> Sync for NoiseConfig<P, C, R>where C: Sync, P: Sync, R: Sync,

§

impl<P, C, R> Unpin for NoiseConfig<P, C, R>where C: Unpin, P: Unpin, R: Unpin,

§

impl<P, C, R> UnwindSafe for NoiseConfig<P, C, R>where C: UnwindSafe, P: UnwindSafe, R: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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<C, U> InboundUpgradeExt<C> for Uwhere U: InboundUpgrade<C>,

source§

fn map_inbound<F, T>(self, f: F) -> MapInboundUpgrade<Self, F>where Self: Sized, F: FnOnce(Self::Output) -> T,

Returns a new object that wraps around Self and applies a closure to the Output.
source§

fn map_inbound_err<F, T>(self, f: F) -> MapInboundUpgradeErr<Self, F>where Self: Sized, F: FnOnce(Self::Error) -> T,

Returns a new object that wraps around Self and applies a closure to the Error.
source§

impl<T, U> Into<U> for Twhere 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<C, U> OutboundUpgradeExt<C> for Uwhere U: OutboundUpgrade<C>,

source§

fn map_outbound<F, T>(self, f: F) -> MapOutboundUpgrade<Self, F>where Self: Sized, F: FnOnce(Self::Output) -> T,

Returns a new object that wraps around Self and applies a closure to the Output.
source§

fn map_outbound_err<F, T>(self, f: F) -> MapOutboundUpgradeErr<Self, F>where Self: Sized, F: FnOnce(Self::Error) -> T,

Returns a new object that wraps around Self and applies a closure to the Error.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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 Twhere U: TryFrom<T>,

§

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.
source§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

source§

fn vzip(self) -> V