-lucre version 0.9.0 README
---------------------------

WHAT IT IS

This is version 0.9.0 of -lucre (We pronounce it ``dash lucre''; you can
pronounce it however you like), the Unofficial Cypherpunks Release of
Ecash.  As the ``-l'' indicates, this is a C library that implements the
protocols of DigiCash's ecash (``ecash'' is a trademark of DigiCash).
As far as we can tell, it is compatible with all existing mints (as of
early November 1996).  Version 0.9.0 is a BETA release, incorporating
some new code and bugfixes, as well as a number of patches helpfully
supplied by Ian Goldberg <ian@cypherpunks.ca>.

-lucre provides all of the basic things you would like (payment
requests, payments, deposits, withdrawals, opening accounts), as well as
a few advanced features (like the ability to use the same account on
multiple machines, and the ability to use ecash without having a bank
account at all).  The format of the wallet is somewhat different from
that of DigiCash's standard client, so you have to be careful if you
want to use use both that and -lucre with the same bank account.  It
does seem to work, though.

Most of the information used to produce this program came from information
published on the net, and from analysis of the output of a logging packet
forwarder.  The rest was experimentation.  Because these are not ``official''
sources, some things may be incorrect.  Use at your own risk; there is
always the possibility, when using ecash, that your money will vanish into
the bowels of the network.

WHAT YOU NEED

To use this code, you will need the SSLeay package, which you can get
from ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/, and the Berkeley db
package, which you can get from
ftp://ftp.cs.berkeley.edu/pub/4bsd/db.1.85.tar.gz.  You will also need
the appropriate licences for these programs; see below.

***********************
        WARNING
***********************
Some versions of SSLeay have a bug that prevents -lucre from working.
It is known that 0.5.2a does not have the bug, and that 0.6.4 DOES HAVE
THE BUG.  The bug has been reported, and will assumedly be fixed in
0.6.5.  Here's a little program to see if you have the bug:

#include <stdio.h>
#include "bn.h"

main()
{
    BIGNUM *r,*a,*p,*n;
    BN_CTX *ctx;

    r = BN_new();
    a = BN_new();
    p = BN_new();
    n = BN_new();
    ctx = BN_CTX_new();

    BN_set_word(n, 15);
    BN_set_word(p, 3);
    BN_set_word(a, 3);

    BN_mod_exp(r,a,p,n,ctx);
    BN_mod_exp(a,a,p,n,ctx);
    if (BN_cmp(r,a)) {
        printf("Your SSLeay is broken.\n");
        return 1;
    }
    printf("Your SSLeay does not have this bug.\n");
    return 0;
}

WHAT YOU GET

-lucre is missing some features found in DigiCash's products.  Most
notably, it does _not_ do blinding of withdrawn coins, as that process
is patented.  If you manage to license the patent, or if you fall under
the ``Experimental Use Exception'' (in the US, and possibly other
places), it's up to you to add in the blinding code yourself.  Also,
-lucre does not support the recovery feature found in some of the
existing mints (EUnet, but not Mark Twain Bank).  This is due in part to
a lack of documentation, and in part due to the fact that DigiCash's
current implementation of recovery causes some loss of privacy, which we
do not want to encourage.  In any case, and especially if you plan to
use ecash for commercial purposes, we would recommend that you contact
competent legal counsel.  Note that DigiCash has published an attempt at
an ``official'' library for ecash, though (at time of writing) it is
much higher-level, without source available, and is somewhat incomplete.
If that library would suit your needs, though, you are probably better
off using it instead of -lucre.

The current release of -lucre has been tested only on a couple of
varieties of Unix.  We would be glad to accept success/failure stories
for different platforms; see the contact addresses below.

This package also contains a simple -lucre client, s-lc, so you can use
ecash without writing your own software.

LEGALESE

Here are the licensing terms for -lucre and s-lc:

---8<---8<---
License terms for -lucre-0.9.0 (including s-lc):

The -lucre library and the s-lc application are BETA software.
The source code may be redistributed freely, but the copyright remains
with the authors (whose public key is listed below).  Permission is
hereby granted to use and distribute the -lucre library, without
modification, for linking to applications which do not use the library
to accept positive-value payments or deposits, and for linking to the
s-lc application.  The s-lc application may also be used and distributed
without modification.  No written agreement, additional licence, or
royalty fee is required for any of these uses.

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
---8<---8<---

For example, if you want to use -lucre to build payment functionality
into a client (e.g., automatically generate a payment every 5 minutes
the client is connected to a service), you can use the above licence.
Servers that accept payments, however, cannot use -lucre with the above
licence.  Licensing rights have (at time of writing) been assigned to
Cypherpunks Canada.  If you want to use -lucre for a use not covered by
the above terms, you should contact them at <lucre@cypherpunks.ca>.

Note, however, that in order to use -lucre, you will also need to license
SSLeay and Berkeley db.  Also, in order to use SSLeay in the US, you
will probably need to get an RSA licence.

We note again that the information used to create -lucre was not
``official'', so there is no guarantee that it will not lose your money.
You use this software at your own risk.

CONTACT INFORMATION

You can reach us, the development team for -lucre, at <lucre@nym.alias.net>.
Better yet, there is a mailing list to discuss the library; send mail
to majordomo@c2.net with body "subscribe dev-lucre" to subscribe;
messages go to <dev-lucre@c2.net>.  Licensing queries for uses not covered
by the licence above should be directed to <lucre@cypherpunks.ca>.

We are, of course, open to bug reports, suggestions, and ecash donations. :-)

Type bits/keyID    Date       User ID
pub  1024/E9E2AC75 1996/06/13 Development team for -lucre <lucre@nym.alias.net>
          Key fingerprint =  63 94 0D F7 D9 6F 2D E5  08 0F EE 19 CB 6B A9 17 
sig       E9E2AC75             Development team for -lucre <lucre@nym.alias.net>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2

mQCNAzHANI0AAAEEANYAvtkmYoH/Mav1A8fuwm+ZsDD4t3NY7nYd6zBKkepLLHWd
Ue1Wnyr3mFHcrQBbJshwOJOCCUvYwDHST1TOqssaK/vAVavvubD8kRam+SET04b/
477krJbCycnbBJ5FSugR4kKKs3S3BkrFWIJaBVTSzsocp+eGrrpcpsjp4qx1AAUR
tDFEZXZlbG9wbWVudCB0ZWFtIGZvciAtbHVjcmUgPGx1Y3JlQG55bS5hbGlhcy5u
ZXQ+iQCVAwUQMnlqpbpcpsjp4qx1AQES/QQAj2mfqVjO28v84YjRBybDX4PapdF6
jhnH5bdmasx2KMYK7KQRmzXJADLDi1PSPxmN6scoEwhi583I6OXQCZBxXKk1SDoA
kIv2vgd2rXq3YtmlgIiCBw6mJbcBWyJQwm5/4ZjJM6THmz4LlOB51MTHF7d61ZDu
AZx/JUBjwjfYQOs=
=Tm4k
-----END PGP PUBLIC KEY BLOCK-----
