mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-19 15:53:48 +00:00
move convergence secret into SecretHolder, next to lease secret
This commit is contained in:
@ -38,8 +38,9 @@ def _make_secret():
|
|||||||
return base32.b2a(os.urandom(hashutil.CRYPTO_VAL_SIZE)) + "\n"
|
return base32.b2a(os.urandom(hashutil.CRYPTO_VAL_SIZE)) + "\n"
|
||||||
|
|
||||||
class SecretHolder:
|
class SecretHolder:
|
||||||
def __init__(self, lease_secret):
|
def __init__(self, lease_secret, convergence_secret):
|
||||||
self._lease_secret = lease_secret
|
self._lease_secret = lease_secret
|
||||||
|
self._convergence_secret = convergence_secret
|
||||||
|
|
||||||
def get_renewal_secret(self):
|
def get_renewal_secret(self):
|
||||||
return hashutil.my_renewal_secret_hash(self._lease_secret)
|
return hashutil.my_renewal_secret_hash(self._lease_secret)
|
||||||
@ -47,6 +48,9 @@ class SecretHolder:
|
|||||||
def get_cancel_secret(self):
|
def get_cancel_secret(self):
|
||||||
return hashutil.my_cancel_secret_hash(self._lease_secret)
|
return hashutil.my_cancel_secret_hash(self._lease_secret)
|
||||||
|
|
||||||
|
def get_convergence_secret(self):
|
||||||
|
return self._convergence_secret
|
||||||
|
|
||||||
class KeyGenerator:
|
class KeyGenerator:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._remote = None
|
self._remote = None
|
||||||
@ -108,7 +112,7 @@ class Client(node.Node, pollmixin.PollMixin):
|
|||||||
self.DEFAULT_ENCODING_PARAMETERS = self.DEFAULT_ENCODING_PARAMETERS.copy()
|
self.DEFAULT_ENCODING_PARAMETERS = self.DEFAULT_ENCODING_PARAMETERS.copy()
|
||||||
self.init_introducer_client()
|
self.init_introducer_client()
|
||||||
self.init_stats_provider()
|
self.init_stats_provider()
|
||||||
self.init_lease_secret()
|
self.init_secrets()
|
||||||
self.init_storage()
|
self.init_storage()
|
||||||
self.init_control()
|
self.init_control()
|
||||||
self.helper = None
|
self.helper = None
|
||||||
@ -179,10 +183,13 @@ class Client(node.Node, pollmixin.PollMixin):
|
|||||||
def get_stats(self):
|
def get_stats(self):
|
||||||
return { 'node.uptime': time.time() - self.started_timestamp }
|
return { 'node.uptime': time.time() - self.started_timestamp }
|
||||||
|
|
||||||
def init_lease_secret(self):
|
def init_secrets(self):
|
||||||
secret_s = self.get_or_create_private_config("secret", _make_secret)
|
lease_s = self.get_or_create_private_config("secret", _make_secret)
|
||||||
lease_secret = base32.a2b(secret_s)
|
lease_secret = base32.a2b(lease_s)
|
||||||
self._secret_holder = SecretHolder(lease_secret)
|
convergence_s = self.get_or_create_private_config('convergence',
|
||||||
|
_make_secret)
|
||||||
|
self.convergence = base32.a2b(convergence_s)
|
||||||
|
self._secret_holder = SecretHolder(lease_secret, self.convergence)
|
||||||
|
|
||||||
def init_storage(self):
|
def init_storage(self):
|
||||||
# should we run a storage server (and publish it for others to use)?
|
# should we run a storage server (and publish it for others to use)?
|
||||||
@ -255,8 +262,6 @@ class Client(node.Node, pollmixin.PollMixin):
|
|||||||
DEP["k"] = int(self.get_config("client", "shares.needed", DEP["k"]))
|
DEP["k"] = int(self.get_config("client", "shares.needed", DEP["k"]))
|
||||||
DEP["n"] = int(self.get_config("client", "shares.total", DEP["n"]))
|
DEP["n"] = int(self.get_config("client", "shares.total", DEP["n"]))
|
||||||
DEP["happy"] = int(self.get_config("client", "shares.happy", DEP["happy"]))
|
DEP["happy"] = int(self.get_config("client", "shares.happy", DEP["happy"]))
|
||||||
convergence_s = self.get_or_create_private_config('convergence', _make_secret)
|
|
||||||
self.convergence = base32.a2b(convergence_s)
|
|
||||||
|
|
||||||
self.init_client_storage_broker()
|
self.init_client_storage_broker()
|
||||||
self.history = History(self.stats_provider)
|
self.history = History(self.stats_provider)
|
||||||
|
@ -21,7 +21,7 @@ class FakeClient:
|
|||||||
return None
|
return None
|
||||||
def get_history(self):
|
def get_history(self):
|
||||||
return None
|
return None
|
||||||
_secret_holder = client.SecretHolder("lease secret")
|
_secret_holder = client.SecretHolder("lease secret", "convergence secret")
|
||||||
|
|
||||||
class Node(unittest.TestCase):
|
class Node(unittest.TestCase):
|
||||||
def test_chk_filenode(self):
|
def test_chk_filenode(self):
|
||||||
|
@ -90,7 +90,7 @@ class AssistedUpload(unittest.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.s = FakeClient()
|
self.s = FakeClient()
|
||||||
self.storage_broker = StorageFarmBroker(None, True)
|
self.storage_broker = StorageFarmBroker(None, True)
|
||||||
self.secret_holder = client.SecretHolder("lease secret")
|
self.secret_holder = client.SecretHolder("lease secret", "convergence")
|
||||||
self.s.startService()
|
self.s.startService()
|
||||||
|
|
||||||
self.tub = t = Tub()
|
self.tub = t = Tub()
|
||||||
|
@ -196,7 +196,7 @@ def make_storagebroker(s=None, num_peers=10):
|
|||||||
|
|
||||||
def make_nodemaker(s=None, num_peers=10):
|
def make_nodemaker(s=None, num_peers=10):
|
||||||
storage_broker = make_storagebroker(s, num_peers)
|
storage_broker = make_storagebroker(s, num_peers)
|
||||||
sh = client.SecretHolder("lease secret")
|
sh = client.SecretHolder("lease secret", "convergence secret")
|
||||||
keygen = client.KeyGenerator()
|
keygen = client.KeyGenerator()
|
||||||
keygen.set_default_keysize(522)
|
keygen.set_default_keysize(522)
|
||||||
nodemaker = NodeMaker(storage_broker, sh, None,
|
nodemaker = NodeMaker(storage_broker, sh, None,
|
||||||
|
@ -187,7 +187,7 @@ class FakeClient:
|
|||||||
return self.DEFAULT_ENCODING_PARAMETERS
|
return self.DEFAULT_ENCODING_PARAMETERS
|
||||||
def get_storage_broker(self):
|
def get_storage_broker(self):
|
||||||
return self.storage_broker
|
return self.storage_broker
|
||||||
_secret_holder = client.SecretHolder("lease secret")
|
_secret_holder = client.SecretHolder("lease secret", "convergence secret")
|
||||||
|
|
||||||
class GotTooFarError(Exception):
|
class GotTooFarError(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -25,7 +25,7 @@ import common_util as testutil
|
|||||||
from allmydata.test.no_network import GridTestMixin
|
from allmydata.test.no_network import GridTestMixin
|
||||||
from allmydata.test.common_web import HTTPClientGETFactory, \
|
from allmydata.test.common_web import HTTPClientGETFactory, \
|
||||||
HTTPClientHEADFactory
|
HTTPClientHEADFactory
|
||||||
from allmydata.client import Client
|
from allmydata.client import Client, SecretHolder
|
||||||
|
|
||||||
# create a fake uploader/downloader, and a couple of fake dirnodes, then
|
# create a fake uploader/downloader, and a couple of fake dirnodes, then
|
||||||
# create a webserver that works against them
|
# create a webserver that works against them
|
||||||
@ -93,7 +93,7 @@ class FakeClient(Client):
|
|||||||
self.nickname = "fake_nickname"
|
self.nickname = "fake_nickname"
|
||||||
self.introducer_furl = "None"
|
self.introducer_furl = "None"
|
||||||
self.stats_provider = FakeStatsProvider()
|
self.stats_provider = FakeStatsProvider()
|
||||||
self._secret_holder = None
|
self._secret_holder = SecretHolder("lease secret", "convergence secret")
|
||||||
self.helper = None
|
self.helper = None
|
||||||
self.convergence = "some random string"
|
self.convergence = "some random string"
|
||||||
self.storage_broker = StorageFarmBroker(None, permute_peers=True)
|
self.storage_broker = StorageFarmBroker(None, permute_peers=True)
|
||||||
@ -101,7 +101,7 @@ class FakeClient(Client):
|
|||||||
self.history = FakeHistory()
|
self.history = FakeHistory()
|
||||||
self.uploader = FakeUploader()
|
self.uploader = FakeUploader()
|
||||||
self.uploader.setServiceParent(self)
|
self.uploader.setServiceParent(self)
|
||||||
self.nodemaker = FakeNodeMaker(None, None, None,
|
self.nodemaker = FakeNodeMaker(None, self._secret_holder, None,
|
||||||
self.uploader, None, None,
|
self.uploader, None, None,
|
||||||
None, None)
|
None, None)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user