@@ -8,12 +8,14 @@
|
||||
import hashlib
|
||||
import asyncio
|
||||
from asyncio import StreamReader, StreamWriter
|
||||
from typing import Optional
|
||||
|
||||
from .crypto import sha256, hmac_oneshot, chacha20_poly1305_encrypt, chacha20_poly1305_decrypt
|
||||
from .lnutil import (get_ecdh, privkey_to_pubkey, LightningPeerConnectionClosed,
|
||||
HandshakeFailed, LNPeerAddr)
|
||||
from . import ecc
|
||||
from .util import bh2u
|
||||
from .util import bh2u, MySocksProxy
|
||||
|
||||
|
||||
class HandshakeState(object):
|
||||
prologue = b"lightning"
|
||||
@@ -217,17 +219,22 @@ class LNResponderTransport(LNTransportBase):
|
||||
class LNTransport(LNTransportBase):
|
||||
"""Transport initiated by local party."""
|
||||
|
||||
def __init__(self, privkey: bytes, peer_addr: LNPeerAddr):
|
||||
def __init__(self, privkey: bytes, peer_addr: LNPeerAddr, *,
|
||||
proxy: Optional[dict]):
|
||||
LNTransportBase.__init__(self)
|
||||
assert type(privkey) is bytes and len(privkey) == 32
|
||||
self.privkey = privkey
|
||||
self.peer_addr = peer_addr
|
||||
self.proxy = MySocksProxy.from_proxy_dict(proxy)
|
||||
|
||||
def name(self):
|
||||
return self.peer_addr.net_addr_str()
|
||||
|
||||
async def handshake(self):
|
||||
self.reader, self.writer = await asyncio.open_connection(self.peer_addr.host, self.peer_addr.port)
|
||||
if not self.proxy:
|
||||
self.reader, self.writer = await asyncio.open_connection(self.peer_addr.host, self.peer_addr.port)
|
||||
else:
|
||||
self.reader, self.writer = await self.proxy.open_connection(self.peer_addr.host, self.peer_addr.port)
|
||||
hs = HandshakeState(self.peer_addr.pubkey)
|
||||
# Get a new ephemeral key
|
||||
epriv, epub = create_ephemeral_key()
|
||||
|
||||
Reference in New Issue
Block a user