mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-03-11 06:43:54 +00:00
Run key generation in a thread.
This commit is contained in:
parent
ef20422bfe
commit
1743d51bbf
@ -22,6 +22,7 @@ from zope.interface import implementer
|
|||||||
from twisted.plugin import (
|
from twisted.plugin import (
|
||||||
getPlugins,
|
getPlugins,
|
||||||
)
|
)
|
||||||
|
from twisted.internet.interfaces import IReactorFromThreads
|
||||||
from twisted.internet import reactor, defer
|
from twisted.internet import reactor, defer
|
||||||
from twisted.application import service
|
from twisted.application import service
|
||||||
from twisted.application.internet import TimerService
|
from twisted.application.internet import TimerService
|
||||||
@ -47,6 +48,7 @@ from allmydata.util.abbreviate import parse_abbreviated_size
|
|||||||
from allmydata.util.time_format import parse_duration, parse_date
|
from allmydata.util.time_format import parse_duration, parse_date
|
||||||
from allmydata.util.i2p_provider import create as create_i2p_provider
|
from allmydata.util.i2p_provider import create as create_i2p_provider
|
||||||
from allmydata.util.tor_provider import create as create_tor_provider, _Provider as TorProvider
|
from allmydata.util.tor_provider import create as create_tor_provider, _Provider as TorProvider
|
||||||
|
from allmydata.util.cputhreadpool import defer_to_thread
|
||||||
from allmydata.stats import StatsProvider
|
from allmydata.stats import StatsProvider
|
||||||
from allmydata.history import History
|
from allmydata.history import History
|
||||||
from allmydata.interfaces import (
|
from allmydata.interfaces import (
|
||||||
@ -170,12 +172,19 @@ class KeyGenerator(object):
|
|||||||
"""I create RSA keys for mutable files. Each call to generate() returns a
|
"""I create RSA keys for mutable files. Each call to generate() returns a
|
||||||
single keypair."""
|
single keypair."""
|
||||||
|
|
||||||
def generate(self):
|
def __init__(self, reactor: IReactorFromThreads):
|
||||||
"""I return a Deferred that fires with a (verifyingkey, signingkey)
|
self._reactor = reactor
|
||||||
pair. The returned key will be 2048 bit"""
|
|
||||||
|
def generate(self) -> defer.Deferred[tuple[rsa.PublicKey, rsa.PrivateKey]]:
|
||||||
|
"""
|
||||||
|
I return a Deferred that fires with a (verifyingkey, signingkey)
|
||||||
|
pair. The returned key will be 2048 bit.
|
||||||
|
"""
|
||||||
keysize = 2048
|
keysize = 2048
|
||||||
signer, verifier = rsa.create_signing_keypair(keysize)
|
return defer_to_thread(
|
||||||
return defer.succeed( (verifier, signer) )
|
self._reactor, rsa.create_signing_keypair, keysize
|
||||||
|
).addCallback(lambda t: (t[1], t[0]))
|
||||||
|
|
||||||
|
|
||||||
class Terminator(service.Service):
|
class Terminator(service.Service):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -622,11 +631,13 @@ class _Client(node.Node, pollmixin.PollMixin):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, config, main_tub, i2p_provider, tor_provider, introducer_clients,
|
def __init__(self, config, main_tub, i2p_provider, tor_provider, introducer_clients,
|
||||||
storage_farm_broker):
|
storage_farm_broker, reactor=None):
|
||||||
"""
|
"""
|
||||||
Use :func:`allmydata.client.create_client` to instantiate one of these.
|
Use :func:`allmydata.client.create_client` to instantiate one of these.
|
||||||
"""
|
"""
|
||||||
node.Node.__init__(self, config, main_tub, i2p_provider, tor_provider)
|
node.Node.__init__(self, config, main_tub, i2p_provider, tor_provider)
|
||||||
|
if reactor is None:
|
||||||
|
from twisted.internet import reactor
|
||||||
|
|
||||||
self.started_timestamp = time.time()
|
self.started_timestamp = time.time()
|
||||||
self.logSource = "Client"
|
self.logSource = "Client"
|
||||||
@ -638,7 +649,7 @@ class _Client(node.Node, pollmixin.PollMixin):
|
|||||||
self.init_stats_provider()
|
self.init_stats_provider()
|
||||||
self.init_secrets()
|
self.init_secrets()
|
||||||
self.init_node_key()
|
self.init_node_key()
|
||||||
self._key_generator = KeyGenerator()
|
self._key_generator = KeyGenerator(reactor)
|
||||||
key_gen_furl = config.get_config("client", "key_generator.furl", None)
|
key_gen_furl = config.get_config("client", "key_generator.furl", None)
|
||||||
if key_gen_furl:
|
if key_gen_furl:
|
||||||
log.msg("[client]key_generator.furl= is now ignored, see #2783")
|
log.msg("[client]key_generator.furl= is now ignored, see #2783")
|
||||||
|
@ -317,7 +317,7 @@ def make_nodemaker_with_storage_broker(storage_broker):
|
|||||||
:param StorageFarmBroker peers: The storage broker to use.
|
:param StorageFarmBroker peers: The storage broker to use.
|
||||||
"""
|
"""
|
||||||
sh = client.SecretHolder(b"lease secret", b"convergence secret")
|
sh = client.SecretHolder(b"lease secret", b"convergence secret")
|
||||||
keygen = client.KeyGenerator()
|
keygen = client.KeyGenerator(reactor)
|
||||||
nodemaker = NodeMaker(storage_broker, sh, None,
|
nodemaker = NodeMaker(storage_broker, sh, None,
|
||||||
None, None,
|
None, None,
|
||||||
{"k": 3, "n": 10}, SDMF_VERSION, keygen)
|
{"k": 3, "n": 10}, SDMF_VERSION, keygen)
|
||||||
|
@ -246,6 +246,7 @@ def create_no_network_client(basedir):
|
|||||||
from allmydata.client import read_config
|
from allmydata.client import read_config
|
||||||
config = read_config(basedir, u'client.port')
|
config = read_config(basedir, u'client.port')
|
||||||
storage_broker = NoNetworkStorageBroker()
|
storage_broker = NoNetworkStorageBroker()
|
||||||
|
from twisted.internet import reactor
|
||||||
client = _NoNetworkClient(
|
client = _NoNetworkClient(
|
||||||
config,
|
config,
|
||||||
main_tub=None,
|
main_tub=None,
|
||||||
@ -253,6 +254,7 @@ def create_no_network_client(basedir):
|
|||||||
tor_provider=None,
|
tor_provider=None,
|
||||||
introducer_clients=[],
|
introducer_clients=[],
|
||||||
storage_farm_broker=storage_broker,
|
storage_farm_broker=storage_broker,
|
||||||
|
reactor=reactor,
|
||||||
)
|
)
|
||||||
# this is a (pre-existing) reference-cycle and also a bad idea, see:
|
# this is a (pre-existing) reference-cycle and also a bad idea, see:
|
||||||
# https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2949
|
# https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2949
|
||||||
|
Loading…
x
Reference in New Issue
Block a user