pub struct NoiseUpgrader {
    pub network_context: Arc<NetworkContext>,
    /* private fields */
}
Expand description

The Noise configuration to be used to perform a protocol upgrade on an underlying socket.

Fields§

§network_context: Arc<NetworkContext>

The validator’s network context

Implementations§

source§

impl NoiseUpgrader

source

pub fn new( network_context: Arc<NetworkContext>, key: PrivateKey, auth_mode: HandshakeAuthMode ) -> Self

Create a new NoiseConfig with the provided keypair and authentication mode.

source

pub async fn upgrade_with_noise<TSocket>( &self, socket: TSocket, origin: ConnectionOrigin, remote_public_key: Option<PublicKey> ) -> Result<(PublicKey, NoiseStream<TSocket>), NoiseHandshakeError>where TSocket: AsyncRead + AsyncWrite + Debug + Unpin,

Perform a protocol upgrade on an underlying connection. In addition perform the noise IK handshake to establish a noise stream and exchange static public keys. Upon success, returns the static public key of the remote as well as a NoiseStream.

source

pub async fn upgrade_outbound<TSocket, F>( &self, socket: TSocket, remote_public_key: PublicKey, time_provider: F ) -> Result<NoiseStream<TSocket>, NoiseHandshakeError>where TSocket: AsyncRead + AsyncWrite + Debug + Unpin, F: Fn() -> [u8; 8],

Perform an outbound protocol upgrade on this connection.

This runs the “client” side of the Noise IK handshake to establish a secure Noise stream and send its static public key to the server. In mutual auth scenarios, we will also include an anti replay attack counter in the Noise handshake payload. Currently this counter is always a millisecond- granularity unix epoch timestamp.

source

pub async fn upgrade_inbound<TSocket>( &self, socket: TSocket ) -> Result<(NoiseStream<TSocket>, PeerId, PeerRole), NoiseHandshakeError>where TSocket: AsyncRead + AsyncWrite + Debug + Unpin,

Perform an inbound protocol upgrade on this connection.

This runs the “server” side of the Noise IK handshake to establish a secure Noise stream and exchange static public keys. If the configuration requires mutual authentication, we will only allow connections from peers that successfully authenticate to a public key in our trusted_peers set. In addition, we will expect the client to include an anti replay attack counter in the Noise handshake payload in mutual auth scenarios.

Auto Trait Implementations§

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,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

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

const: unstable · 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · 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.
const: unstable · source§

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

Performs the conversion.
§

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

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more