2024-01-25 18:04:55 +09:00
|
|
|
import asyncio
|
|
|
|
|
|
2024-02-05 09:04:02 +01:00
|
|
|
from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey
|
|
|
|
|
|
2024-02-08 15:39:50 +09:00
|
|
|
from mixnet.config import (
|
2024-06-26 14:22:16 +09:00
|
|
|
MixMembership,
|
2024-02-08 15:39:50 +09:00
|
|
|
MixnetConfig,
|
2024-06-26 14:22:16 +09:00
|
|
|
NodeConfig,
|
|
|
|
|
NodePublicInfo,
|
2024-02-08 15:39:50 +09:00
|
|
|
)
|
2024-02-05 09:04:02 +01:00
|
|
|
|
2024-01-25 18:04:55 +09:00
|
|
|
|
|
|
|
|
def with_test_timeout(t):
|
|
|
|
|
def wrapper(coroutine):
|
|
|
|
|
async def run(*args, **kwargs):
|
|
|
|
|
async with asyncio.timeout(t):
|
|
|
|
|
return await coroutine(*args, **kwargs)
|
|
|
|
|
|
|
|
|
|
return run
|
|
|
|
|
|
|
|
|
|
return wrapper
|
2024-02-05 09:04:02 +01:00
|
|
|
|
|
|
|
|
|
2024-06-26 14:22:16 +09:00
|
|
|
def init_mixnet_config(num_nodes: int) -> MixnetConfig:
|
|
|
|
|
conn_degree = 4
|
|
|
|
|
transmission_rate_per_sec = 3
|
|
|
|
|
node_configs = [
|
|
|
|
|
NodeConfig(X25519PrivateKey.generate(), conn_degree, transmission_rate_per_sec)
|
|
|
|
|
for _ in range(num_nodes)
|
|
|
|
|
]
|
|
|
|
|
membership = MixMembership(
|
|
|
|
|
[NodePublicInfo(node_config.private_key) for node_config in node_configs]
|
2024-02-05 09:04:02 +01:00
|
|
|
)
|
2024-06-26 14:22:16 +09:00
|
|
|
return MixnetConfig(node_configs, membership)
|