Struct libp2p::noise::NoiseConfig
source · pub struct NoiseConfig<P, C, R = ()>where
C: Zeroize,{ /* private fields */ }
Expand description
The protocol upgrade configuration.
Implementations§
source§impl<H, C, R> NoiseConfig<H, C, R>where
C: Zeroize,
impl<H, C, R> NoiseConfig<H, C, R>where C: Zeroize,
sourcepub fn into_authenticated(self) -> NoiseAuthenticated<H, C, R>
pub fn into_authenticated(self) -> NoiseAuthenticated<H, C, R>
Turn the NoiseConfig
into an authenticated upgrade for use
with a Swarm
.
sourcepub fn with_prologue(self, prologue: Vec<u8, Global>) -> NoiseConfig<H, C, R>
pub fn with_prologue(self, prologue: Vec<u8, Global>) -> NoiseConfig<H, C, R>
Set the noise prologue.
sourcepub fn set_legacy_config(
&mut self,
cfg: LegacyConfig
) -> &mut NoiseConfig<H, C, R>
pub fn set_legacy_config( &mut self, cfg: LegacyConfig ) -> &mut NoiseConfig<H, C, R>
Sets the legacy configuration options to use, if any.
impl<H, C> NoiseConfig<H, C, ()>where C: Zeroize + Protocol<C> + AsRef<[u8]>,
Implement into_responder
and into_initiator
for all configs where R = ()
.
This allows us to ignore the remote
field.
source§impl<C> NoiseConfig<IX, C, ()>where
C: Protocol<C> + Zeroize,
impl<C> NoiseConfig<IX, C, ()>where C: Protocol<C> + Zeroize,
sourcepub fn ix(dh_keys: AuthenticKeypair<C>) -> NoiseConfig<IX, C, ()>
pub fn ix(dh_keys: AuthenticKeypair<C>) -> NoiseConfig<IX, C, ()>
Create a new NoiseConfig
for the IX
handshake pattern.
source§impl<C> NoiseConfig<XX, C, ()>where
C: Protocol<C> + Zeroize,
impl<C> NoiseConfig<XX, C, ()>where C: Protocol<C> + Zeroize,
sourcepub fn xx(dh_keys: AuthenticKeypair<C>) -> NoiseConfig<XX, C, ()>
pub fn xx(dh_keys: AuthenticKeypair<C>) -> NoiseConfig<XX, C, ()>
Create a new NoiseConfig
for the XX
handshake pattern.
source§impl<C> NoiseConfig<IK, C, ()>where
C: Protocol<C> + Zeroize,
impl<C> NoiseConfig<IK, C, ()>where C: Protocol<C> + Zeroize,
sourcepub fn ik_listener(dh_keys: AuthenticKeypair<C>) -> NoiseConfig<IK, C, ()>
pub fn ik_listener(dh_keys: AuthenticKeypair<C>) -> NoiseConfig<IK, C, ()>
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]>,
impl<C> NoiseConfig<IK, C, (PublicKey<C>, PublicKey)>where C: Protocol<C> + Zeroize + AsRef<[u8]>,
sourcepub fn ik_dialer(
dh_keys: AuthenticKeypair<C>,
remote_id: PublicKey,
remote_dh: PublicKey<C>
) -> NoiseConfig<IK, C, (PublicKey<C>, PublicKey)>
pub fn ik_dialer( dh_keys: AuthenticKeypair<C>, remote_id: PublicKey, remote_dh: PublicKey<C> ) -> NoiseConfig<IK, C, (PublicKey<C>, PublicKey)>
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, C, R> Clone for NoiseConfig<P, C, R>where
P: Clone,
C: Clone + Zeroize,
R: Clone,
impl<P, C, R> Clone for NoiseConfig<P, C, R>where P: Clone, C: Clone + Zeroize, R: Clone,
source§fn clone(&self) -> NoiseConfig<P, C, R>
fn clone(&self) -> NoiseConfig<P, C, R>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§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,
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>)
type Output = (RemoteIdentity<C>, NoiseOutput<T>)
§type Error = NoiseError
type Error = NoiseError
§type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
source§fn upgrade_inbound(
self,
socket: T,
_: <NoiseConfig<IK, C, ()> as UpgradeInfo>::Info
) -> <NoiseConfig<IK, C, ()> as InboundUpgrade<T>>::Future
fn upgrade_inbound( self, socket: T, _: <NoiseConfig<IK, C, ()> as UpgradeInfo>::Info ) -> <NoiseConfig<IK, C, ()> as InboundUpgrade<T>>::Future
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,
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>)
type Output = (RemoteIdentity<C>, NoiseOutput<T>)
§type Error = NoiseError
type Error = NoiseError
§type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
source§fn upgrade_inbound(
self,
socket: T,
_: <NoiseConfig<IX, C, ()> as UpgradeInfo>::Info
) -> <NoiseConfig<IX, C, ()> as InboundUpgrade<T>>::Future
fn upgrade_inbound( self, socket: T, _: <NoiseConfig<IX, C, ()> as UpgradeInfo>::Info ) -> <NoiseConfig<IX, C, ()> as InboundUpgrade<T>>::Future
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,
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>)
type Output = (RemoteIdentity<C>, NoiseOutput<T>)
§type Error = NoiseError
type Error = NoiseError
§type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
source§fn upgrade_inbound(
self,
socket: T,
_: <NoiseConfig<XX, C, ()> as UpgradeInfo>::Info
) -> <NoiseConfig<XX, C, ()> as InboundUpgrade<T>>::Future
fn upgrade_inbound( self, socket: T, _: <NoiseConfig<XX, C, ()> as UpgradeInfo>::Info ) -> <NoiseConfig<XX, C, ()> as InboundUpgrade<T>>::Future
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,
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>)
type Output = (RemoteIdentity<C>, NoiseOutput<T>)
§type Error = NoiseError
type Error = NoiseError
§type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
source§fn upgrade_outbound(
self,
socket: T,
_: <NoiseConfig<IK, C, (PublicKey<C>, PublicKey)> as UpgradeInfo>::Info
) -> <NoiseConfig<IK, C, (PublicKey<C>, PublicKey)> as OutboundUpgrade<T>>::Future
fn upgrade_outbound( self, socket: T, _: <NoiseConfig<IK, C, (PublicKey<C>, PublicKey)> as UpgradeInfo>::Info ) -> <NoiseConfig<IK, C, (PublicKey<C>, PublicKey)> as OutboundUpgrade<T>>::Future
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,
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>)
type Output = (RemoteIdentity<C>, NoiseOutput<T>)
§type Error = NoiseError
type Error = NoiseError
§type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
source§fn upgrade_outbound(
self,
socket: T,
_: <NoiseConfig<IX, C, ()> as UpgradeInfo>::Info
) -> <NoiseConfig<IX, C, ()> as OutboundUpgrade<T>>::Future
fn upgrade_outbound( self, socket: T, _: <NoiseConfig<IX, C, ()> as UpgradeInfo>::Info ) -> <NoiseConfig<IX, C, ()> as OutboundUpgrade<T>>::Future
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,
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>)
type Output = (RemoteIdentity<C>, NoiseOutput<T>)
§type Error = NoiseError
type Error = NoiseError
§type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send, Global>>
source§fn upgrade_outbound(
self,
socket: T,
_: <NoiseConfig<XX, C, ()> as UpgradeInfo>::Info
) -> <NoiseConfig<XX, C, ()> as OutboundUpgrade<T>>::Future
fn upgrade_outbound( self, socket: T, _: <NoiseConfig<XX, C, ()> as UpgradeInfo>::Info ) -> <NoiseConfig<XX, C, ()> as OutboundUpgrade<T>>::Future
source§impl<R> UpgradeInfo for NoiseConfig<IK, X25519, R>
impl<R> UpgradeInfo for NoiseConfig<IK, X25519, R>
§type InfoIter = Once<<NoiseConfig<IK, X25519, R> as UpgradeInfo>::Info>
type InfoIter = Once<<NoiseConfig<IK, X25519, R> as UpgradeInfo>::Info>
protocol_info
.source§fn protocol_info(&self) -> <NoiseConfig<IK, X25519, R> as UpgradeInfo>::InfoIter
fn protocol_info(&self) -> <NoiseConfig<IK, X25519, R> as UpgradeInfo>::InfoIter
source§impl<R> UpgradeInfo for NoiseConfig<IK, X25519Spec, R>
impl<R> UpgradeInfo for NoiseConfig<IK, X25519Spec, R>
Note: This is not currently a standardised upgrade.
§type InfoIter = Once<<NoiseConfig<IK, X25519Spec, R> as UpgradeInfo>::Info>
type InfoIter = Once<<NoiseConfig<IK, X25519Spec, R> as UpgradeInfo>::Info>
protocol_info
.source§fn protocol_info(
&self
) -> <NoiseConfig<IK, X25519Spec, R> as UpgradeInfo>::InfoIter
fn protocol_info( &self ) -> <NoiseConfig<IK, X25519Spec, R> as UpgradeInfo>::InfoIter
source§impl UpgradeInfo for NoiseConfig<IX, X25519, ()>
impl UpgradeInfo for NoiseConfig<IX, X25519, ()>
§type InfoIter = Once<<NoiseConfig<IX, X25519, ()> as UpgradeInfo>::Info>
type InfoIter = Once<<NoiseConfig<IX, X25519, ()> as UpgradeInfo>::Info>
protocol_info
.source§fn protocol_info(
&self
) -> <NoiseConfig<IX, X25519, ()> as UpgradeInfo>::InfoIter
fn protocol_info( &self ) -> <NoiseConfig<IX, X25519, ()> as UpgradeInfo>::InfoIter
source§impl UpgradeInfo for NoiseConfig<IX, X25519Spec, ()>
impl UpgradeInfo for NoiseConfig<IX, X25519Spec, ()>
Note: This is not currentlyy a standardised upgrade.
§type InfoIter = Once<<NoiseConfig<IX, X25519Spec, ()> as UpgradeInfo>::Info>
type InfoIter = Once<<NoiseConfig<IX, X25519Spec, ()> as UpgradeInfo>::Info>
protocol_info
.source§fn protocol_info(
&self
) -> <NoiseConfig<IX, X25519Spec, ()> as UpgradeInfo>::InfoIter
fn protocol_info( &self ) -> <NoiseConfig<IX, X25519Spec, ()> as UpgradeInfo>::InfoIter
source§impl UpgradeInfo for NoiseConfig<XX, X25519, ()>
impl UpgradeInfo for NoiseConfig<XX, X25519, ()>
§type InfoIter = Once<<NoiseConfig<XX, X25519, ()> as UpgradeInfo>::Info>
type InfoIter = Once<<NoiseConfig<XX, X25519, ()> as UpgradeInfo>::Info>
protocol_info
.source§fn protocol_info(
&self
) -> <NoiseConfig<XX, X25519, ()> as UpgradeInfo>::InfoIter
fn protocol_info( &self ) -> <NoiseConfig<XX, X25519, ()> as UpgradeInfo>::InfoIter
source§impl UpgradeInfo for NoiseConfig<XX, X25519Spec, ()>
impl UpgradeInfo for NoiseConfig<XX, X25519Spec, ()>
§type InfoIter = Once<<NoiseConfig<XX, X25519Spec, ()> as UpgradeInfo>::Info>
type InfoIter = Once<<NoiseConfig<XX, X25519Spec, ()> as UpgradeInfo>::Info>
protocol_info
.source§fn protocol_info(
&self
) -> <NoiseConfig<XX, X25519Spec, ()> as UpgradeInfo>::InfoIter
fn protocol_info( &self ) -> <NoiseConfig<XX, X25519Spec, ()> as UpgradeInfo>::InfoIter
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<C, U> InboundUpgradeExt<C> for Uwhere
U: InboundUpgrade<C>,
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,
fn map_inbound<F, T>(self, f: F) -> MapInboundUpgrade<Self, F>where Self: Sized, F: FnOnce(Self::Output) -> T,
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,
fn map_inbound_err<F, T>(self, f: F) -> MapInboundUpgradeErr<Self, F>where Self: Sized, F: FnOnce(Self::Error) -> T,
Self
and applies a closure to the Error
.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
source§impl<C, U> OutboundUpgradeExt<C> for Uwhere
U: OutboundUpgrade<C>,
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,
fn map_outbound<F, T>(self, f: F) -> MapOutboundUpgrade<Self, F>where Self: Sized, F: FnOnce(Self::Output) -> T,
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,
fn map_outbound_err<F, T>(self, f: F) -> MapOutboundUpgradeErr<Self, F>where Self: Sized, F: FnOnce(Self::Error) -> T,
Self
and applies a closure to the Error
.