This commit is contained in:
Chih Cheng Liang
2019-08-08 14:22:06 +08:00
committed by Kevin Mai-Husan Chia
parent 5903012e0e
commit c536aa3e07
19 changed files with 58 additions and 62 deletions

View File

@ -1,12 +1,11 @@
from typing import TYPE_CHECKING, cast
from typing import cast
from libp2p.security.secure_conn_interface import ISecureConn
from libp2p.security.secure_transport_interface import ISecureTransport
if TYPE_CHECKING:
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
class InsecureTransport(ISecureTransport):
@ -20,7 +19,7 @@ class InsecureTransport(ISecureTransport):
def __init__(self, transport_id: str) -> None:
self.transport_id = transport_id
async def secure_inbound(self, conn: "IRawConnection") -> ISecureConn:
async def secure_inbound(self, conn: IRawConnection) -> 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)
@ -29,7 +28,7 @@ class InsecureTransport(ISecureTransport):
insecure_conn = InsecureConn(conn, self.transport_id)
return insecure_conn
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> ISecureConn:
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)
@ -40,21 +39,21 @@ class InsecureTransport(ISecureTransport):
class InsecureConn(ISecureConn):
conn: "IRawConnection"
details: "TSecurityDetails"
conn: IRawConnection
details: TSecurityDetails
def __init__(self, conn: "IRawConnection", conn_id: str) -> None:
def __init__(self, conn: IRawConnection, conn_id: str) -> None:
self.conn = conn
self.details = cast("TSecurityDetails", {})
self.details = cast(TSecurityDetails, {})
self.details["id"] = conn_id
def get_conn(self) -> "IRawConnection":
def get_conn(self) -> IRawConnection:
"""
:return: connection object that has been made secure
"""
return self.conn
def get_security_details(self) -> "TSecurityDetails":
def get_security_details(self) -> TSecurityDetails:
"""
:return: map containing details about the connections security
"""

View File

@ -1,9 +1,7 @@
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from libp2p.network.connection.raw_connection_interface import IRawConnection
from .typing import TSecurityDetails
from libp2p.network.connection.raw_connection_interface import IRawConnection
from .typing import TSecurityDetails
"""
@ -16,13 +14,13 @@ Relevant go repo: https://github.com/libp2p/go-conn-security/blob/master/interfa
class ISecureConn(ABC):
@abstractmethod
def get_conn(self) -> "IRawConnection":
def get_conn(self) -> IRawConnection:
"""
:return: the underlying raw connection
"""
@abstractmethod
def get_security_details(self) -> "TSecurityDetails":
def get_security_details(self) -> TSecurityDetails:
"""
:return: map containing details about the connections security
"""

View File

@ -1,10 +1,8 @@
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .secure_conn_interface import ISecureConn
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .secure_conn_interface import ISecureConn
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
"""
@ -17,7 +15,7 @@ Relevant go repo: https://github.com/libp2p/go-conn-security/blob/master/interfa
class ISecureTransport(ABC):
@abstractmethod
async def secure_inbound(self, conn: "IRawConnection") -> "ISecureConn":
async def secure_inbound(self, conn: IRawConnection) -> 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)
@ -25,7 +23,7 @@ class ISecureTransport(ABC):
"""
@abstractmethod
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> "ISecureConn":
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)

View File

@ -1,5 +1,5 @@
from abc import ABC
from typing import Dict, NewType
from typing import Dict
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
@ -20,9 +20,9 @@ Relevant go repo: https://github.com/libp2p/go-conn-security/blob/master/interfa
class SecurityMultistream(ABC):
transports: Dict[TProtocol, "ISecureTransport"]
multiselect: "Multiselect"
multiselect_client: "MultiselectClient"
transports: Dict[TProtocol, ISecureTransport]
multiselect: Multiselect
multiselect_client: MultiselectClient
def __init__(self) -> None:
# Map protocol to secure transport
@ -34,7 +34,7 @@ class SecurityMultistream(ABC):
# Create multiselect client
self.multiselect_client = MultiselectClient()
def add_transport(self, protocol: TProtocol, transport: "ISecureTransport") -> None:
def add_transport(self, protocol: TProtocol, transport: ISecureTransport) -> None:
# Associate protocol with transport
self.transports[protocol] = transport
@ -43,7 +43,7 @@ class SecurityMultistream(ABC):
# we only care about selecting the protocol, not any handler function
self.multiselect.add_handler(protocol, None)
async def secure_inbound(self, conn: "IRawConnection") -> "ISecureConn":
async def secure_inbound(self, conn: IRawConnection) -> 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)
@ -58,7 +58,7 @@ class SecurityMultistream(ABC):
return secure_conn
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> "ISecureConn":
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)
@ -73,7 +73,7 @@ class SecurityMultistream(ABC):
return secure_conn
async def select_transport(self, conn: "IRawConnection", initiator: bool) -> "ISecureTransport":
async def select_transport(self, conn: IRawConnection, initiator: bool) -> ISecureTransport:
"""
Select a transport that both us and the node on the
other end of conn support and agree on

View File

@ -1,13 +1,12 @@
import asyncio
from typing import TYPE_CHECKING, cast
from typing import cast
from libp2p.security.secure_conn_interface import ISecureConn
from libp2p.security.secure_transport_interface import ISecureTransport
if TYPE_CHECKING:
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
class SimpleSecurityTransport(ISecureTransport):
@ -16,7 +15,7 @@ class SimpleSecurityTransport(ISecureTransport):
def __init__(self, key_phrase: str) -> None:
self.key_phrase = key_phrase
async def secure_inbound(self, conn: "IRawConnection") -> "ISecureConn":
async def secure_inbound(self, conn: IRawConnection) -> 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)
@ -31,7 +30,7 @@ class SimpleSecurityTransport(ISecureTransport):
secure_conn = SimpleSecureConn(conn, self.key_phrase)
return secure_conn
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> "ISecureConn":
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)
@ -52,22 +51,22 @@ class SimpleSecurityTransport(ISecureTransport):
class SimpleSecureConn(ISecureConn):
conn: "IRawConnection"
conn: IRawConnection
key_phrase: str
details: "TSecurityDetails"
details: TSecurityDetails
def __init__(self, conn: "IRawConnection", key_phrase: str) -> None:
def __init__(self, conn: IRawConnection, key_phrase: str) -> None:
self.conn = conn
self.details = cast("TSecurityDetails", {})
self.details = cast(TSecurityDetails, {})
self.details["key_phrase"] = key_phrase
def get_conn(self) -> "IRawConnection":
def get_conn(self) -> IRawConnection:
"""
:return: connection object that has been made secure
"""
return self.conn
def get_security_details(self) -> "TSecurityDetails":
def get_security_details(self) -> TSecurityDetails:
"""
:return: map containing details about the connections security
"""