mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-12 16:10:57 +00:00
Add early data support to Noise protocol
Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
This commit is contained in:
@ -14,6 +14,7 @@ from libp2p.peer.id import (
|
||||
ID,
|
||||
)
|
||||
|
||||
from .early_data import EarlyDataHandler, TransportEarlyDataHandler
|
||||
from .patterns import (
|
||||
IPattern,
|
||||
PatternXX,
|
||||
@ -26,35 +27,40 @@ class Transport(ISecureTransport):
|
||||
libp2p_privkey: PrivateKey
|
||||
noise_privkey: PrivateKey
|
||||
local_peer: ID
|
||||
early_data: bytes | None
|
||||
with_noise_pipes: bool
|
||||
supported_muxers: list[TProtocol]
|
||||
initiator_early_data_handler: EarlyDataHandler | None
|
||||
responder_early_data_handler: EarlyDataHandler | None
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
libp2p_keypair: KeyPair,
|
||||
noise_privkey: PrivateKey,
|
||||
early_data: bytes | None = None,
|
||||
with_noise_pipes: bool = False,
|
||||
supported_muxers: list[TProtocol] | None = None,
|
||||
initiator_handler: EarlyDataHandler | None = None,
|
||||
responder_handler: EarlyDataHandler | None = None,
|
||||
) -> None:
|
||||
self.libp2p_privkey = libp2p_keypair.private_key
|
||||
self.noise_privkey = noise_privkey
|
||||
self.local_peer = ID.from_pubkey(libp2p_keypair.public_key)
|
||||
self.early_data = early_data
|
||||
self.with_noise_pipes = with_noise_pipes
|
||||
self.supported_muxers = supported_muxers or []
|
||||
|
||||
if self.with_noise_pipes:
|
||||
raise NotImplementedError
|
||||
# Create default handlers for muxer negotiation if none provided
|
||||
if initiator_handler is None and self.supported_muxers:
|
||||
initiator_handler = TransportEarlyDataHandler(self.supported_muxers)
|
||||
if responder_handler is None and self.supported_muxers:
|
||||
responder_handler = TransportEarlyDataHandler(self.supported_muxers)
|
||||
|
||||
self.initiator_early_data_handler = initiator_handler
|
||||
self.responder_early_data_handler = responder_handler
|
||||
|
||||
def get_pattern(self) -> IPattern:
|
||||
if self.with_noise_pipes:
|
||||
raise NotImplementedError
|
||||
else:
|
||||
return PatternXX(
|
||||
self.local_peer,
|
||||
self.libp2p_privkey,
|
||||
self.noise_privkey,
|
||||
self.early_data,
|
||||
)
|
||||
return PatternXX(
|
||||
self.local_peer,
|
||||
self.libp2p_privkey,
|
||||
self.noise_privkey,
|
||||
self.initiator_early_data_handler,
|
||||
self.responder_early_data_handler,
|
||||
)
|
||||
|
||||
async def secure_inbound(self, conn: IRawConnection) -> ISecureConn:
|
||||
pattern = self.get_pattern()
|
||||
|
||||
Reference in New Issue
Block a user