libp2p.security.noise package

Submodules

libp2p.security.noise.exceptions module

exception libp2p.security.noise.exceptions.HandshakeHasNotFinished

Bases: libp2p.security.noise.exceptions.NoiseFailure

exception libp2p.security.noise.exceptions.InvalidSignature

Bases: libp2p.security.noise.exceptions.NoiseFailure

exception libp2p.security.noise.exceptions.NoiseFailure

Bases: libp2p.security.exceptions.HandshakeFailure

exception libp2p.security.noise.exceptions.NoiseStateError

Bases: libp2p.security.noise.exceptions.NoiseFailure

Raised when anything goes wrong in the noise state in noiseprotocol package.

exception libp2p.security.noise.exceptions.PeerIDMismatchesPubkey

Bases: libp2p.security.noise.exceptions.NoiseFailure

libp2p.security.noise.io module

class libp2p.security.noise.io.BaseNoiseMsgReadWriter(conn: libp2p.network.connection.raw_connection_interface.IRawConnection, noise_state: noise.connection.NoiseConnection)

Bases: libp2p.io.abc.EncryptedMsgReadWriter

The base implementation of noise message reader/writer.

encrypt and decrypt are not implemented here, which should be implemented by the subclasses.

async close() → None
noise_state: NoiseState = None
prefix: bytes = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
async read_msg(prefix_encoded: bool = False) → bytes
read_writer: MsgReadWriteCloser = None
async write_msg(data: bytes, prefix_encoded: bool = False) → None
class libp2p.security.noise.io.NoiseHandshakeReadWriter(conn: libp2p.network.connection.raw_connection_interface.IRawConnection, noise_state: noise.connection.NoiseConnection)

Bases: libp2p.security.noise.io.BaseNoiseMsgReadWriter

decrypt(data: bytes) → bytes
encrypt(data: bytes) → bytes
noise_state = None
read_writer = None
class libp2p.security.noise.io.NoisePacketReadWriter(read_write_closer: libp2p.io.abc.ReadWriteCloser)

Bases: libp2p.io.msgio.FixedSizeLenMsgReadWriter

size_len_bytes: int = 2
class libp2p.security.noise.io.NoiseTransportReadWriter(conn: libp2p.network.connection.raw_connection_interface.IRawConnection, noise_state: noise.connection.NoiseConnection)

Bases: libp2p.security.noise.io.BaseNoiseMsgReadWriter

decrypt(data: bytes) → bytes
encrypt(data: bytes) → bytes
noise_state = None
read_writer = None

libp2p.security.noise.messages module

class libp2p.security.noise.messages.NoiseHandshakePayload(id_pubkey: libp2p.crypto.keys.PublicKey, id_sig: bytes, early_data: bytes = None)

Bases: object

classmethod deserialize(protobuf_bytes: bytes) → libp2p.security.noise.messages.NoiseHandshakePayload
early_data: bytes = None
id_pubkey: PublicKey = None
id_sig: bytes = None
serialize() → bytes
libp2p.security.noise.messages.make_data_to_be_signed(noise_static_pubkey: libp2p.crypto.keys.PublicKey) → bytes
libp2p.security.noise.messages.make_handshake_payload_sig(id_privkey: libp2p.crypto.keys.PrivateKey, noise_static_pubkey: libp2p.crypto.keys.PublicKey) → bytes
libp2p.security.noise.messages.verify_handshake_payload_sig(payload: libp2p.security.noise.messages.NoiseHandshakePayload, noise_static_pubkey: libp2p.crypto.keys.PublicKey) → bool
Verify if the signature
  1. is composed of the data SIGNED_DATA_PREFIX`++`noise_static_pubkey and

  2. signed by the private key corresponding to id_pubkey

libp2p.security.noise.patterns module

class libp2p.security.noise.patterns.BasePattern

Bases: libp2p.security.noise.patterns.IPattern

create_noise_state() → noise.connection.NoiseConnection
early_data: bytes = None
libp2p_privkey: PrivateKey = None
local_peer: ID = None
make_handshake_payload() → libp2p.security.noise.messages.NoiseHandshakePayload
noise_static_key: PrivateKey = None
protocol_name: bytes = None
class libp2p.security.noise.patterns.IPattern

Bases: abc.ABC

abstract async handshake_inbound(conn: libp2p.network.connection.raw_connection_interface.IRawConnection) → libp2p.security.secure_conn_interface.ISecureConn
abstract async handshake_outbound(conn: libp2p.network.connection.raw_connection_interface.IRawConnection, remote_peer: libp2p.peer.id.ID) → libp2p.security.secure_conn_interface.ISecureConn
class libp2p.security.noise.patterns.PatternXX(local_peer: libp2p.peer.id.ID, libp2p_privkey: libp2p.crypto.keys.PrivateKey, noise_static_key: libp2p.crypto.keys.PrivateKey, early_data: bytes = None)

Bases: libp2p.security.noise.patterns.BasePattern

early_data = None
async handshake_inbound(conn: libp2p.network.connection.raw_connection_interface.IRawConnection) → libp2p.security.secure_conn_interface.ISecureConn
async handshake_outbound(conn: libp2p.network.connection.raw_connection_interface.IRawConnection, remote_peer: libp2p.peer.id.ID) → libp2p.security.secure_conn_interface.ISecureConn
libp2p_privkey = None
local_peer = None
noise_static_key = None
protocol_name = None

libp2p.security.noise.transport module

class libp2p.security.noise.transport.Transport(libp2p_keypair: libp2p.crypto.keys.KeyPair, noise_privkey: libp2p.crypto.keys.PrivateKey = None, early_data: bytes = None, with_noise_pipes: bool = False)

Bases: libp2p.security.secure_transport_interface.ISecureTransport

early_data: bytes = None
get_pattern() → libp2p.security.noise.patterns.IPattern
libp2p_privkey: PrivateKey = None
local_peer: ID = None
noise_privkey: PrivateKey = None
async secure_inbound(conn: libp2p.network.connection.raw_connection_interface.IRawConnection) → libp2p.security.secure_conn_interface.ISecureConn

Secure the connection, either locally or by communicating with opposing node via conn, for an inbound connection (i.e. we are not the initiator)

Returns

secure connection object (that implements secure_conn_interface)

async secure_outbound(conn: libp2p.network.connection.raw_connection_interface.IRawConnection, peer_id: libp2p.peer.id.ID) → libp2p.security.secure_conn_interface.ISecureConn

Secure the connection, either locally or by communicating with opposing node via conn, for an inbound connection (i.e. we are the initiator)

Returns

secure connection object (that implements secure_conn_interface)

with_noise_pipes: bool = None

Module contents