Skip to content

Commit

Permalink
remove "key-generator" node type and client support
Browse files Browse the repository at this point in the history
closes ticket:2783
  • Loading branch information
warner committed May 4, 2016
1 parent c715e0d commit d1d9884
Show file tree
Hide file tree
Showing 17 changed files with 28 additions and 461 deletions.
14 changes: 1 addition & 13 deletions docs/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,7 @@ The item descriptions below use the following types:
Node Types
==========

A node can be a client/server, an introducer, a statistics gatherer, or a
key generator.
A node can be a client/server, an introducer, or a statistics gatherer.

Client/server nodes provide one or more of the following services:

Expand Down Expand Up @@ -335,12 +334,6 @@ Client Configuration
If provided, the node will attempt to connect to and use the given helper
for uploads. See :doc:`helper` for details.

``key_generator.furl = (FURL string, optional)``

If provided, the node will attempt to connect to and use the given
key-generator service, using RSA keys from the external process rather
than generating its own.

``stats_gatherer.furl = (FURL string, optional)``

If provided, the node will connect to the given stats gatherer and
Expand Down Expand Up @@ -612,11 +605,6 @@ This section describes these other files.
This file is used to construct an introducer, and is created by the
"``tahoe create-introducer``" command.

``tahoe-key-generator.tac``

This file is used to construct a key generator, and is created by the
"``tahoe create-key-gernerator``" command.

``tahoe-stats-gatherer.tac``

This file is used to construct a statistics gatherer, and is created by the
Expand Down
8 changes: 0 additions & 8 deletions docs/frontends/CLI.rst
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,6 @@ This node provides introduction services and nothing else. When started, this
node will produce a ``private/introducer.furl`` file, which should be
published to all clients.

"``tahoe create-key-generator [NODEDIR]``" is used to create a special
"key-generation" service, which allows a client to offload their RSA key
generation to a separate process. Since RSA key generation takes several
seconds, and must be done each time a directory is created, moving it to a
separate process allows the first process (perhaps a busy web-API server) to
continue servicing other requests. The key generator exports a FURL that can
be copied into a node to enable this functionality.

"``tahoe run [NODEDIR]``" will start a previously-created node in the foreground.

"``tahoe start [NODEDIR]``" will launch a previously-created node. It will
Expand Down
3 changes: 0 additions & 3 deletions docs/man/man1/tahoe.1
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ Create a client node (with storage initially disabled).
.B \f[B]create-introducer\f[]
Create an introducer node.
.TP
.B \f[B]create-key-generator\f[]
Create a key generator service.
.TP
.B \f[B]create-stats-gatherer\f[]
Create a stats-gatherer service.
.SS OPTIONS
Expand Down
34 changes: 6 additions & 28 deletions src/allmydata/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,8 @@ class KeyGenerator:
to generate(), then with a default set by set_default_keysize(), then
with a built-in default of 2048 bits."""
def __init__(self):
self._remote = None
self.default_keysize = 2048

def set_remote_generator(self, keygen):
self._remote = keygen
def set_default_keysize(self, keysize):
"""Call this to override the size of the RSA keys created for new
mutable files which don't otherwise specify a size. This will affect
Expand All @@ -80,20 +77,11 @@ def generate(self, keysize=None):
set_default_keysize() has never been called, I will create 2048 bit
keys."""
keysize = keysize or self.default_keysize
if self._remote:
d = self._remote.callRemote('get_rsa_key_pair', keysize)
def make_key_objs((verifying_key, signing_key)):
v = rsa.create_verifying_key_from_string(verifying_key)
s = rsa.create_signing_key_from_string(signing_key)
return v, s
d.addCallback(make_key_objs)
return d
else:
# RSA key generation for a 2048 bit key takes between 0.8 and 3.2
# secs
signer = rsa.generate(keysize)
verifier = signer.get_verifying_key()
return defer.succeed( (verifier, signer) )
# RSA key generation for a 2048 bit key takes between 0.8 and 3.2
# secs
signer = rsa.generate(keysize)
verifier = signer.get_verifying_key()
return defer.succeed( (verifier, signer) )

class Terminator(service.Service):
def __init__(self):
Expand Down Expand Up @@ -145,7 +133,7 @@ def __init__(self, basedir="."):
self._key_generator = KeyGenerator()
key_gen_furl = self.get_config("client", "key_generator.furl", None)
if key_gen_furl:
self.init_key_gen(key_gen_furl)
log.msg("[client]key_generator.furl= is now ignored, see #2783")
self.init_client()
self.helper = None
if self.get_config("helper", "enabled", False, boolean=True):
Expand Down Expand Up @@ -442,16 +430,6 @@ def init_helper(self):
"private", "helper.furl").encode(get_filesystem_encoding())
self.tub.registerReference(self.helper, furlFile=helper_furlfile)

def init_key_gen(self, key_gen_furl):
self.tub.connectTo(key_gen_furl, self._got_key_generator)

def _got_key_generator(self, key_generator):
self._key_generator.set_remote_generator(key_generator)
key_generator.notifyOnDisconnect(self._lost_key_generator)

def _lost_key_generator(self):
self._key_generator.set_remote_generator(None)

def set_default_mutable_keysize(self, keysize):
self._key_generator.set_default_keysize(keysize)

Expand Down
14 changes: 0 additions & 14 deletions src/allmydata/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -2808,20 +2808,6 @@ def get_stats():
to be monitored, and numeric values.
"""

class RIKeyGenerator(RemoteInterface):
__remote_name__ = "RIKeyGenerator.tahoe.allmydata.com"
"""
Provides a service offering to make RSA key pairs.
"""

def get_rsa_key_pair(key_size=int):
"""
@param key_size: the size of the signature key.
@return: tuple(verifying_key, signing_key)
"""
return TupleOf(str, str)


class FileTooLargeError(Exception):
pass

Expand Down
111 changes: 0 additions & 111 deletions src/allmydata/key_generator.py

This file was deleted.

1 change: 0 additions & 1 deletion src/allmydata/scripts/create_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ def create_node(config, out=sys.stdout, err=sys.stderr):
c.write("# Which services should this client connect to?\n")
c.write("introducer.furl = %s\n" % config.get("introducer", ""))
c.write("helper.furl =\n")
c.write("#key_generator.furl =\n")
c.write("#stats_gatherer.furl =\n")
c.write("\n")
c.write("# Encoding parameters this client will use for newly-uploaded files\n")
Expand Down
38 changes: 0 additions & 38 deletions src/allmydata/scripts/keygen.py

This file was deleted.

5 changes: 2 additions & 3 deletions src/allmydata/scripts/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from twisted.python import usage

from allmydata.scripts.common import get_default_nodedir
from allmydata.scripts import debug, create_node, startstop_node, cli, keygen, stats_gatherer, admin
from allmydata.scripts import debug, create_node, startstop_node, cli, stats_gatherer, admin
from allmydata.util.encodingutil import quote_output, quote_local_unicode_path, get_io_encoding

def GROUP(s):
Expand Down Expand Up @@ -36,7 +36,6 @@ class Options(usage.Options):
synopsis = "\nUsage: tahoe <command> [command options]"
subCommands = ( GROUP("Administration")
+ create_node.subCommands
+ keygen.subCommands
+ stats_gatherer.subCommands
+ admin.subCommands
+ GROUP("Controlling a node")
Expand Down Expand Up @@ -85,7 +84,7 @@ def postOptions(self):


create_dispatch = {}
for module in (create_node, keygen, stats_gatherer):
for module in (create_node, stats_gatherer):
create_dispatch.update(module.dispatch)

def runner(argv,
Expand Down
3 changes: 1 addition & 2 deletions src/allmydata/scripts/startstop_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@ def makeService(self, so):
from allmydata.introducer.server import IntroducerNode
return IntroducerNode(self.basedir)
if self.nodetype == "key-generator":
from allmydata.key_generator import KeyGeneratorService
return KeyGeneratorService(default_key_size=2048)
raise ValueError("key-generator support removed, see #2783")
if self.nodetype == "stats-gatherer":
from allmydata.stats import StatsGathererService
return StatsGathererService(verbose=True)
Expand Down
Loading

0 comments on commit d1d9884

Please sign in to comment.