[tahoe-lafs-trac-stream] [tahoe-lafs] #466: extendable Introducer protocol: dictionary-based, signed announcements
tahoe-lafs
trac at tahoe-lafs.org
Wed Mar 14 01:27:42 UTC 2012
#466: extendable Introducer protocol: dictionary-based, signed announcements
-------------------------+-------------------------------------------------
Reporter: warner | Owner: warner
Type: | Status: new
enhancement | Milestone: 1.10.0
Priority: major | Version: 1.1.0
Component: code- | Keywords: introduction forward-compatibility
network | performance accounting ecdsa pycryptopp
Resolution: |
Launchpad Bug: |
-------------------------+-------------------------------------------------
Comment (by Brian Warner <warner@…>):
In [changeset:bc21726dfd73b434c8c513ec482f582cce88fc2a/git]:
{{{
#!CommitTicketReference repository="git"
revision="bc21726dfd73b434c8c513ec482f582cce88fc2a"
new introducer: signed extensible dictionary-based messages! refs #466
This introduces new client and server halves to the Introducer (renaming
the
old one with a _V1 suffix). Both have fallbacks to accomodate talking to a
different version: the publishing client switches on whether the server's
.get_version() advertises V2 support, the server switches on which
subscription method was invoked by the subscribing client.
The V2 protocol sends a three-tuple of (serialized announcement
dictionary,
signature, pubkey) for each announcement. The V2 server dispatches
messages
to subscribers according to the service-name, and throws errors for
invalid
signatures, but does not otherwise examine the messages. The V2 receiver's
subscription callback will receive a (serverid, ann_dict) pair. The
'serverid' will be equal to the pubkey if all of the following are true:
the originating client is V2, and was told a privkey to use
the announcement went through a V2 server
the signature is valid
If not, 'serverid' will be equal to the tubid portion of the announced
FURL,
as was the case for V1 receivers.
Servers will create a keypair if one does not exist yet, stored in
private/server.privkey .
The signed announcement dictionary puts the server FURL in a key named
"anonymous-storage-FURL", which anticipates upcoming Accounting-related
changes in the server advertisements. It also provides a key named
"permutation-seed-base32" to tell clients what permutation seed to use.
This
is computed at startup, using tubid if there are existing shares,
otherwise
the pubkey, to retain share-order compatibility for existing servers.
}}}
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/466#comment:26>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list