-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 . -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 #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 . 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 . 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 . Licensing queries for uses not covered by the licence above should be directed to . 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 Key fingerprint = 63 94 0D F7 D9 6F 2D E5 08 0F EE 19 CB 6B A9 17 sig E9E2AC75 Development team for -lucre -----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-----