From 9e18d7561d7e37532a12483a1bf38671905d0858 Mon Sep 17 00:00:00 2001 From: Alex Stokes Date: Fri, 2 Aug 2019 21:55:37 -0700 Subject: [PATCH] Supply local priv and pub key when upgrading to a secure transport --- libp2p/__init__.py | 5 ++++- libp2p/security/base_transport.py | 4 ++-- libp2p/security/simple/transport.py | 5 ++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libp2p/__init__.py b/libp2p/__init__.py index 68b65e61..92474ad4 100644 --- a/libp2p/__init__.py +++ b/libp2p/__init__.py @@ -99,8 +99,11 @@ def initialize_default_swarm( # TODO parse muxer and sec to pass into TransportUpgrader muxer = muxer_opt or ["mplex/6.7.0"] private_key_bytes = private_key.export_key("DER") + public_key_bytes = private_key.publickey().export_key("DER") security_transports_by_protocol = sec_opt or { - TProtocol("insecure/1.0.0"): InsecureTransport(private_key_bytes) + TProtocol("insecure/1.0.0"): InsecureTransport( + private_key_bytes, public_key_bytes + ) } upgrader = TransportUpgrader(security_transports_by_protocol, muxer) diff --git a/libp2p/security/base_transport.py b/libp2p/security/base_transport.py index 65c9757a..135454e1 100644 --- a/libp2p/security/base_transport.py +++ b/libp2p/security/base_transport.py @@ -8,6 +8,6 @@ class BaseSecureTransport(ISecureTransport): is only meant to be used in clases that derive from it. """ - def __init__(self, local_private_key: bytes) -> None: + def __init__(self, local_private_key: bytes, local_public_key: bytes) -> None: self.local_private_key = local_private_key - self.local_peer = ID.from_privkey(local_private_key) + self.local_peer = ID.from_pubkey(local_public_key) diff --git a/libp2p/security/simple/transport.py b/libp2p/security/simple/transport.py index 8a9c6dbb..ac9c01e4 100644 --- a/libp2p/security/simple/transport.py +++ b/libp2p/security/simple/transport.py @@ -10,7 +10,10 @@ from libp2p.security.secure_conn_interface import ISecureConn class SimpleSecurityTransport(BaseSecureTransport): key_phrase: str - def __init__(self, key_phrase: str) -> None: + def __init__( + self, local_private_key: bytes, local_public_key: bytes, key_phrase: str + ) -> None: + super().__init__(local_private_key, local_public_key) self.key_phrase = key_phrase async def secure_inbound(self, conn: IRawConnection) -> ISecureConn: