libchop
=======

Libchop is a file hashing, ciphering, and indexing library.  In a
nutshell, libchop provides mechanisms to:

  1. cut a file into pieces, store each of these blocks into a block
     store, and return an "abstract index" containing all the
     information necessary to retrieve the file;

  2. restore (rebuild) a file based on an abstract index, reading
     blocks from one (or several) block stores and decoding them
     according to the methods specified by the abstract index.

It is particularly suitable for content-based indexing (as used by
many peer-to-peer file sharing systems, as well as several revision
control systems such as Monotone and Torvalds' GIT), and content-hash
ciphering (as used by anonymous file sharing systems such as GNUnet and
FreeNet).

libchop contains several implementations of the various operations
listed above (several block stores, several file cutting algorithm,
etc.).  It is meant to be as flexible as possible while still retaining
performance.

The best way to experiment with libchop is to try out the
`chop-archiver' sample utility program available in the `utils'
directory.


Requirements
------------

Libchop primarily targets the GNU system (i.e. GNU C compiler and GNU C
library), although porting it to other systems shouldn't be too hard
(especially with the help of Gnulib).

If building from scratch:

  GNU Autoconf 2.59
  GNU Automake 1.11

Optional (but highly recommended) build dependency:

  GNU Gperf

Mandatory dependencies:

  GNU libgcrypt 1.2
  Sun/ONC RPC framework (part of the GNU C Library)

Optional dependencies:

  GNU GDBM
  libtdb
  SleepyCat's Berkeley DB (BDB) 4.x (x >= 3)
  zlib
  libbz2
  liblzo2

  GnuTLS 1.4.1 (or compatible --- recommended)
  Avahi 0.6 or later

If you want to build the Guile bindings of libchop (you don't have to),
then you'll need the following:

  GNU Guile 1.8
  G-Wrap 1.9.7 or later

And that's it.



Copyright (C) 2010  Ludovic Courtès <ludo@gnu.org>
Copyright (C) 2005, 2006, 2007  Centre National de la Recherche Scientifique (LAAS-CNRS)

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.
