Brian Warner bc21726dfd 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.
2012-03-13 18:24:32 -07:00
2012-03-13 20:50:57 +00:00
2011-10-31 05:22:52 +00:00
2011-10-31 05:22:52 +00:00
2012-03-13 20:50:57 +00:00

==========
Tahoe-LAFS
==========

Tahoe-LAFS is a Free Software/Open Source decentralized data store. It
distributes your filesystem across multiple servers, and even if some of the
servers fail or are taken over by an attacker, the entire filesystem continues
to work correctly and to preserve your privacy and security.

To get started please see `quickstart.rst`_ in the docs directory.

LICENCE
=======

Copyright 2006-2012 The Tahoe-LAFS Software Foundation

You may use this package under the GNU General Public License, version 2 or, at
your option, any later version.  You may use this package under the Transitive
Grace Period Public Licence, version 1.0, or at your option, any later
version. (You may choose to use this package under the terms of either licence,
at your option.)  See the file `COPYING.GPL`_ for the terms of the GNU General
Public License, version 2.  See the file `COPYING.TGPPL.rst`_ for the terms of
the Transitive Grace Period Public Licence, version 1.0.

See `TGPPL.PDF`_ for why the TGPPL exists, graphically illustrated on three slides.

.. _quickstart.rst: https://tahoe-lafs.org/source/tahoe-lafs/trunk/docs/quickstart.rst
.. _COPYING.GPL: https://tahoe-lafs.org/trac/tahoe-lafs/browser/COPYING.GPL
.. _COPYING.TGPPL.rst: https://tahoe-lafs.org/trac/tahoe-lafs/browser/COPYING.TGPPL.rst
.. _TGPPL.PDF: https://tahoe-lafs.org/~zooko/tgppl.pdf
Description
The Tahoe-LAFS decentralized secure filesystem.
Readme 91 MiB
Languages
Python 98.1%
HTML 0.9%
Nix 0.3%
Shell 0.3%
Makefile 0.2%
Other 0.1%