Keep the host's private key for use in transports
This commit is contained in:
parent
879cbf1abd
commit
02e073d85a
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
from typing import Mapping, Sequence
|
from typing import Mapping, Sequence
|
||||||
|
|
||||||
|
from libp2p.crypto.keys import KeyPair
|
||||||
from libp2p.crypto.rsa import create_new_key_pair
|
from libp2p.crypto.rsa import create_new_key_pair
|
||||||
from libp2p.host.basic_host import BasicHost
|
from libp2p.host.basic_host import BasicHost
|
||||||
from libp2p.kademlia.network import KademliaServer
|
from libp2p.kademlia.network import KademliaServer
|
||||||
|
@ -33,11 +34,15 @@ async def cleanup_done_tasks() -> None:
|
||||||
await asyncio.sleep(3)
|
await asyncio.sleep(3)
|
||||||
|
|
||||||
|
|
||||||
def generate_peer_id_from_rsa_identity() -> ID:
|
def generate_new_rsa_identity() -> KeyPair:
|
||||||
new_key_pair = create_new_key_pair()
|
return create_new_key_pair()
|
||||||
new_public_key = new_key_pair.public_key
|
|
||||||
new_id = ID.from_pubkey(new_public_key)
|
|
||||||
return new_id
|
def generate_peer_id_from_rsa_identity(key_pair=None) -> ID:
|
||||||
|
if not key_pair:
|
||||||
|
key_pair = generate_new_rsa_identity()
|
||||||
|
public_key = key_pair.public_key
|
||||||
|
return ID.from_pubkey(public_key)
|
||||||
|
|
||||||
|
|
||||||
def initialize_default_kademlia_router(
|
def initialize_default_kademlia_router(
|
||||||
|
@ -64,6 +69,7 @@ def initialize_default_kademlia_router(
|
||||||
|
|
||||||
|
|
||||||
def initialize_default_swarm(
|
def initialize_default_swarm(
|
||||||
|
private_key: bytes,
|
||||||
id_opt: ID = None,
|
id_opt: ID = None,
|
||||||
transport_opt: Sequence[str] = None,
|
transport_opt: Sequence[str] = None,
|
||||||
muxer_opt: Sequence[str] = None,
|
muxer_opt: Sequence[str] = None,
|
||||||
|
@ -92,8 +98,9 @@ def initialize_default_swarm(
|
||||||
# TODO TransportUpgrader is not doing anything really
|
# TODO TransportUpgrader is not doing anything really
|
||||||
# TODO parse muxer and sec to pass into TransportUpgrader
|
# TODO parse muxer and sec to pass into TransportUpgrader
|
||||||
muxer = muxer_opt or ["mplex/6.7.0"]
|
muxer = muxer_opt or ["mplex/6.7.0"]
|
||||||
|
private_key_bytes = private_key.export_key("DER")
|
||||||
security_transports_by_protocol = sec_opt or {
|
security_transports_by_protocol = sec_opt or {
|
||||||
TProtocol("insecure/1.0.0"): InsecureTransport()
|
TProtocol("insecure/1.0.0"): InsecureTransport(private_key_bytes)
|
||||||
}
|
}
|
||||||
upgrader = TransportUpgrader(security_transports_by_protocol, muxer)
|
upgrader = TransportUpgrader(security_transports_by_protocol, muxer)
|
||||||
|
|
||||||
|
@ -105,6 +112,7 @@ def initialize_default_swarm(
|
||||||
|
|
||||||
|
|
||||||
async def new_node(
|
async def new_node(
|
||||||
|
private_key=None,
|
||||||
swarm_opt: INetwork = None,
|
swarm_opt: INetwork = None,
|
||||||
id_opt: ID = None,
|
id_opt: ID = None,
|
||||||
transport_opt: Sequence[str] = None,
|
transport_opt: Sequence[str] = None,
|
||||||
|
@ -125,11 +133,16 @@ async def new_node(
|
||||||
:return: return a host instance
|
:return: return a host instance
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if not private_key:
|
||||||
|
key_pair = generate_new_rsa_identity()
|
||||||
|
private_key = key_pair.private_key
|
||||||
|
|
||||||
if not id_opt:
|
if not id_opt:
|
||||||
id_opt = generate_peer_id_from_rsa_identity()
|
id_opt = generate_peer_id_from_rsa_identity(key_pair)
|
||||||
|
|
||||||
if not swarm_opt:
|
if not swarm_opt:
|
||||||
swarm_opt = initialize_default_swarm(
|
swarm_opt = initialize_default_swarm(
|
||||||
|
private_key=private_key,
|
||||||
id_opt=id_opt,
|
id_opt=id_opt,
|
||||||
transport_opt=transport_opt,
|
transport_opt=transport_opt,
|
||||||
muxer_opt=muxer_opt,
|
muxer_opt=muxer_opt,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user