Libgcrypt is based on the GnuPG code.  Here is a list of people, who
helped in GnuPG and Libgcrypt development.  Please help us to keep it
complete and free of errors.

Albert Chin                china at thewrittenword com
Allan Clark		   allanc@sco.com
Anand Kumria		   wildfire@progsoc.uts.edu.au
Andreas Metzler            ametzler at downhill.at.eu.org
Ariel T Glenn		   ariel@columbia.edu
Bodo Moeller		   Bodo_Moeller@public.uni-hamburg.de
Brenno de Winter	   brenno@dewinter.com
Brian Moore		   bem@cmc.net
Brian Warner		   warner@lothar.com
Brieuc Jeunhomme	   bbp@via.ecp.fr
Bryan Fullerton 	   bryanf@samurai.com
Caskey L. Dickson	   caskey@technocage.com
Cees van de Griend	   cees-list@griend.xs4all.nl
Charles Levert		   charles@comm.polymtl.ca
Christian Biere            christianbiere@gmx.de
Christian Grothoff         grothoff@cs.purdue.edu
Christian von Roques	   roques@pond.sub.org
Christopher Oliver	   oliver@fritz.traverse.net
Christian Recktenwald	   chris@citecs.de
Daniel Eisenbud 	   eisenbud@cs.swarthmore.edu
Daniel Koening		   dan@mail.isis.de
David Ellement		   ellement@sdd.hp.com
Detlef Lannert		   lannert@lannert.rz.uni-duesseldorf.de
Dirk Lattermann 	   dlatt@t-online.de
Dirk Stoecker              gcrypt@dstoecker.de
Ed Boraas		   ecxjo@esperanto.org
Elie De Brauwer            elie@de-brauwer.be
Enzo Michelangeli	   em@MailAndNews.com
Ernst Molitor		   ernst.molitor@uni-bonn.de
Fabio Coatti		   cova@felix.unife.it
Felix von Leitner	   leitner@amdiv.de
Frank Heckenbach	   heckenb@mi.uni-erlangen.de
Frank Stajano		   frank.stajano@cl.cam.ac.uk
Gabriele Monti             psicus78 gmail com
Gaël Quéri		   gqueri@mail.dotcom.fr
Gregor Riepl               seto-kun@freesurf.ch
Gerlinde Klaes             gk@u64.de
Greg Louis		   glouis@dynamicro.on.ca
Greg Troxel		   gdt@ir.bbn.com
Gregory Steuck		   steuck@iname.com
Geoff Keating		   geoffk@ozemail.com.au
Harald Denker		   harry@hal.westfalen.de
Hendrik Buschkamp	   buschkamp@rheumanet.org
Holger Schurig		   holger@d.om.org
Hugh Daniel		   hugh@toad.com
Ian McKellar		   imckellar@harvestroad.com.au
Ian Peters                 itp@ximian.com
Janusz A. Urbanowicz	   alex@bofh.torun.pl
James Troup		   james@nocrew.org
Jean-loup Gailly	   gzip@prep.ai.mit.edu
Jeff Johnson               jbj@redhat.com
Jens Bachem		   bachem@rrz.uni-koeln.de
J Horacio MG		   homega@ciberia.es
Joachim Backes		   backes@rhrk.uni-kl.de
Jordi Mallach              jordi@sindominio.net
John A. Martin		   jam@jamux.com
Johnny Teveßen		   j.tevessen@gmx.de
Jörg Schilling		   schilling@fokus.gmd.de
Jun Kuriyama		   kuriyama@sky.rim.or.jp
Karl Fogel		   kfogel@guanabana.onshore.com
Karsten Thygesen	   karthy@kom.auc.dk
Katsuhiro Kondou	   kondou@nec.co.jp
Kazu Yamamoto		   kazu@iijlab.net
Lars Kellogg-Stedman	   lars@bu.edu
Lee Fisher                 blibbet at gmail dot com
Marco d'Itri               md@linux.it
Mark Adler		   madler@alumni.caltech.edu
Mark Elbrecht		   snowball3@bigfoot.com
Markus Friedl		   Markus.Friedl@informatik.uni-erlangen.de
Matthias Urlichs           smurf@smurf.noris.de
Martin Kahlert		   martin.kahlert@provi.de
Martin Hamilton
Martin Schulte		   schulte@thp.uni-koeln.de
Matthew Skala		   mskala@ansuz.sooke.bc.ca
Max Kellermann             max@duempel.org
Max Valianskiy		   maxcom@maxcom.ml.org
Michael Fischer v. Mollard mfvm@gmx.de
Michael Roth		   mroth@nessie.de
Michael Sobolev 	   mss@despair.transas.com
Michele Baldessari	   michele@pupazzo.org
Modestas Vainius	   geromanas@mailas.com
Neil Dunbar                neil.dunbar at pobox.com
Neil Spring		   nspring@cs.washington.edu
Newton Hammet              newton@hammet.net
Nicolas Graner		   Nicolas.Graner@cri.u-psud.fr
NIIBE Yutaka		   gniibe@chroot.org
Niklas Hernaeus
Nikolay Sturm		   sturm@sec.informatik.tu-darmstadt.de
Nikos Mavroyanopoulos      nmav@hellug.gr
Nimrod Zimerman 	   zimerman@forfree.at
N J Doye		   nic@niss.ac.uk
Oliver Haakert		   haakert@hsp.de
Oskari Jääskeläinen	   f33003a@cc.hut.fi
Paul D. Smith		   psmith@baynetworks.com
Philippe Laliberte	   arsphl@oeil.qc.ca
Peter Gutmann		   pgut001@cs.auckland.ac.nz
QingLong		   qinglong@bolizm.ihep.su
Rafael Ávila de Espíndola  rafael.espindola@gmail.com
Rafaël Carré               funman@videolan.org
Ralf Fassel                ralf@akutech.de
Ralf Hildebrandt           Ralf.Hildebrandt@innominate.com 
Ralf Schneider             ralf@tapfere-schneiderleins.de
Ralph Gillen		   gillen@theochem.uni-duesseldorf.de
Rami Lehti                 Rami.Lehti@finland.sun.com
Randolph Chung             tausq@debian.org
Randy			   mcclellr@oit.edu
Rat			   ratinox@peorth.gweep.net
Reinhard Wobst		   R.Wobst@ifw-dresden.de
Rémi Guyomarch		   rguyom@mail.dotcom.fr
Reuben Sumner		   rasumner@wisdom.weizmann.ac.il
Richard Outerbridge	   outer@interlog.com
Roddy Strachan		   roddy@satlink.com.au
Roland Rosenfeld	   roland@spinnaker.rhein.de
Ross Golder		   rossigee@bigfoot.com
Serge Munhoven		   munhoven@mema.ucl.ac.be
Simon Josefsson            jas@extundo.com
SL Baur 		   steve@xemacs.org
Stephan Austermuehle       au@hcsd.de
Stephan Müller             smueller at atsec com
Stephane Corthesy          stephane@sente.ch
Stefan Karrmann 	   S.Karrmann@gmx.net
Stefan Keller		   dres@cs.tu-berlin.de
Steffen Ullrich 	   ccrlphr@xensei.com
Steffen Zahn		   zahn@berlin.snafu.de
Steven Bakker		   steven@icoe.att.com
Susanne Schultz 	   schultz@hsp.de
Szakats Istvan             szaki.ms@gmail.com
Thiago Jung Bauermann	   jungmann@cwb.matrix.com.br
Thomas Roessler 	   roessler@guug.de
Tom Holroyd                tomh@po.crl.go.jp
Tom Spindler		   dogcow@home.merit.edu
Tom Zerucha		   tzeruch@ceddec.com
Tomas Fasth		   tomas.fasth@twinspot.net
Tommi Komulainen           Tommi.Komulainen@iki.fi
Thomas Mikkelsen	   tbm@image.dk
Ulf Möller		   3umoelle@informatik.uni-hamburg.de
Umberto Salsi		   salsi@icosaedro.it
Uoti Urpala
Urko Lusa		   ulusa@euskalnet.net
Victor Stinner             haypo@inl.fr
Walter Koch		   koch@u32.de
Werner Koch		   wk@gnupg.org
Wim Vandeputte		   wim@kd85.com
			   nbecker@hns.com


 Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.

 This file is free software; as a special exception the author gives
 unlimited permission to copy and/or distribute it, with or without
 modifications, as long as this notice is preserved.

 This file is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
