@@ -199,6 +199,7 @@ def new_swarm(
199199 tls_client_config : ssl .SSLContext | None = None ,
200200 tls_server_config : ssl .SSLContext | None = None ,
201201 resource_manager : ResourceManager | None = None ,
202+ psk : str | None = None
202203) -> INetworkService :
203204 logger .debug (f"new_swarm: enable_quic={ enable_quic } , listen_addrs={ listen_addrs } " )
204205 """
@@ -214,6 +215,7 @@ def new_swarm(
214215 :param quic_transport_opt: options for transport
215216 :param resource_manager: optional resource manager for connection/stream limits
216217 :type resource_manager: :class:`libp2p.rcmgr.ResourceManager` or None
218+ :param psk: optional pre-shared key for PSK encryption in transport
217219 :return: return a default swarm instance
218220
219221 Note: Yamux (/yamux/1.0.0) is the preferred stream multiplexer
@@ -324,7 +326,8 @@ def new_swarm(
324326 upgrader ,
325327 transport ,
326328 retry_config = retry_config ,
327- connection_config = connection_config
329+ connection_config = connection_config ,
330+ psk = psk
328331 )
329332
330333 # Set resource manager if provided
@@ -342,6 +345,21 @@ def new_swarm(
342345
343346 return swarm
344347
348+ # Set resource manager if provided
349+ # Auto-create a default ResourceManager if one was not provided
350+ if resource_manager is None :
351+ try :
352+ from libp2p .rcmgr import new_resource_manager as _new_rm
353+
354+ resource_manager = _new_rm ()
355+ except Exception :
356+ resource_manager = None
357+
358+ if resource_manager is not None :
359+ swarm .set_resource_manager (resource_manager )
360+
361+ return swarm
362+
345363
346364def new_host (
347365 key_pair : KeyPair | None = None ,
@@ -360,6 +378,7 @@ def new_host(
360378 tls_client_config : ssl .SSLContext | None = None ,
361379 tls_server_config : ssl .SSLContext | None = None ,
362380 resource_manager : ResourceManager | None = None ,
381+ psk : str | None = None
363382) -> IHost :
364383 """
365384 Create a new libp2p host based on the given parameters.
@@ -379,6 +398,7 @@ def new_host(
379398 :param tls_server_config: optional TLS server configuration for WebSocket transport
380399 :param resource_manager: optional resource manager for connection/stream limits
381400 :type resource_manager: :class:`libp2p.rcmgr.ResourceManager` or None
401+ :param psk: optional pre-shared key (PSK)
382402 :return: return a host instance
383403 """
384404
@@ -408,6 +428,7 @@ def new_host(
408428 tls_client_config = tls_client_config ,
409429 tls_server_config = tls_server_config ,
410430 resource_manager = resource_manager ,
431+ psk = psk
411432 )
412433
413434 if disc_opt is not None :
0 commit comments