Struct libp2p_noise::NoiseConfig
source · Expand description
The protocol upgrade configuration.
Implementations§
source§impl<H, C: Zeroize, R> NoiseConfig<H, C, R>
impl<H, C: Zeroize, R> NoiseConfig<H, C, R>
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>) -> Self
pub fn with_prologue(self, prologue: Vec<u8>) -> Self
Set the noise prologue.
sourcepub fn set_legacy_config(&mut self, cfg: LegacyConfig) -> &mut Self
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,
impl<C> NoiseConfig<IX, C>where
C: Protocol<C> + Zeroize,
sourcepub fn ix(dh_keys: AuthenticKeypair<C>) -> Self
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,
impl<C> NoiseConfig<XX, C>where
C: Protocol<C> + Zeroize,
sourcepub fn xx(dh_keys: AuthenticKeypair<C>) -> Self
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,
impl<C> NoiseConfig<IK, C>where
C: Protocol<C> + Zeroize,
sourcepub fn ik_listener(dh_keys: AuthenticKeypair<C>) -> Self
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]>,
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>
) -> Self
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>
impl<P: Clone, C: Clone + Zeroize, R: Clone> Clone for NoiseConfig<P, C, R>
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 + 'static, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send + 'static, Global>>
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 + 'static, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send + 'static, Global>>
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 + 'static, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send + 'static, Global>>
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 + 'static, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send + 'static, Global>>
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 + 'static, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send + 'static, Global>>
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 + 'static, Global>>
type Future = Pin<Box<dyn Future<Output = Result<(RemoteIdentity<C>, NoiseOutput<T>), NoiseError>> + Send + 'static, Global>>
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) -> Self::InfoIter
fn protocol_info(&self) -> Self::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) -> Self::InfoIter
fn protocol_info(&self) -> Self::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) -> Self::InfoIter
fn protocol_info(&self) -> Self::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) -> Self::InfoIter
fn protocol_info(&self) -> Self::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) -> Self::InfoIter
fn protocol_info(&self) -> Self::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) -> Self::InfoIter
fn protocol_info(&self) -> Self::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<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<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
.