libp2p.security.secio package

Submodules

libp2p.security.secio.exceptions module

exception libp2p.security.secio.exceptions.IncompatibleChoices

Bases: libp2p.security.secio.exceptions.SecioException

exception libp2p.security.secio.exceptions.InconsistentNonce

Bases: libp2p.security.secio.exceptions.SecioException

exception libp2p.security.secio.exceptions.InvalidSignatureOnExchange

Bases: libp2p.security.secio.exceptions.SecioException

exception libp2p.security.secio.exceptions.PeerMismatchException

Bases: libp2p.security.secio.exceptions.SecioException

exception libp2p.security.secio.exceptions.SecioException

Bases: libp2p.security.exceptions.HandshakeFailure

exception libp2p.security.secio.exceptions.SedesException

Bases: libp2p.security.secio.exceptions.SecioException

exception libp2p.security.secio.exceptions.SelfEncryption

Bases: libp2p.security.secio.exceptions.SecioException

Raised to indicate that a host is attempting to encrypt communications with itself.

libp2p.security.secio.transport module

class libp2p.security.secio.transport.EncryptionParameters

Bases: object

cipher_type: str = None
curve_type: str = None
ephemeral_public_key: PublicKey = None
hash_type: str = None
permanent_public_key: PublicKey = None
class libp2p.security.secio.transport.Proposal(nonce: bytes, public_key: libp2p.crypto.keys.PublicKey, exchanges: str = 'P-256', ciphers: str = 'AES-128', hashes: str = 'SHA256')

Bases: object

A Proposal represents the set of session parameters one peer in a pair of peers attempting to negotiate a secio channel prefers.

calculate_peer_id() → libp2p.peer.id.ID
ciphers: str = 'AES-128'
classmethod deserialize(protobuf_bytes: bytes) → libp2p.security.secio.transport.Proposal
exchanges: str = 'P-256'
hashes: str = 'SHA256'
nonce: bytes = None
public_key: PublicKey = None
serialize() → bytes
class libp2p.security.secio.transport.SecioMsgReadWriter(local_encryption_parameters: libp2p.crypto.authenticated_encryption.EncryptionParameters, remote_encryption_parameters: libp2p.crypto.authenticated_encryption.EncryptionParameters, read_writer: libp2p.security.secio.transport.SecioPacketReadWriter)

Bases: libp2p.io.abc.EncryptedMsgReadWriter

async close() → None
decrypt(data: bytes) → bytes
encrypt(data: bytes) → bytes
async read_msg() → bytes
read_writer: SecioPacketReadWriter = None
async write_msg(msg: bytes) → None
class libp2p.security.secio.transport.SecioPacketReadWriter(read_write_closer: libp2p.io.abc.ReadWriteCloser)

Bases: libp2p.io.msgio.FixedSizeLenMsgReadWriter

size_len_bytes: int = 4
class libp2p.security.secio.transport.SessionParameters

Bases: object

local_encryption_parameters: EncryptionParameters = None
local_peer: PeerID = None
order: int = None
remote_encryption_parameters: EncryptionParameters = None
remote_peer: PeerID = None
shared_key: bytes = None
class libp2p.security.secio.transport.Transport(local_key_pair: libp2p.crypto.keys.KeyPair, secure_bytes_provider: Callable[[int], bytes] = <function default_secure_bytes_provider>)

Bases: libp2p.security.base_transport.BaseSecureTransport

Transport provides a security upgrader for a IRawConnection, following the secio protocol defined in the libp2p specs.

get_nonce() → bytes
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)

async libp2p.security.secio.transport.create_secure_session(local_nonce: bytes, local_peer: libp2p.peer.id.ID, local_private_key: libp2p.crypto.keys.PrivateKey, conn: libp2p.network.connection.raw_connection_interface.IRawConnection, remote_peer: libp2p.peer.id.ID = None) → libp2p.security.secure_conn_interface.ISecureConn

Attempt the initial secio handshake with the remote peer.

If successful, return an object that provides secure communication to the remote_peer. Raise SecioException when conn closed. Raise InconsistentNonce when handshake failed

Module contents