-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 NotDashEscaped: You need GnuPG to verify this message This is a patch file to create version 1.0.5 from 1.0.4. Please check the signature of this patch file: zcat somepath/gnupg-1.0.4-1.0.5.diff.gz | gpg --verify Change to directory gnupg-1.0.4 (or however you renamed it) and give this command: zcat somepath/gnupg-1.0.4-1.0.5.diff.gz | patch -p1 It is a good idea to rename your current directory to gnupg-1.0.5 now. Prereq: 1.0.4 diff -urN gnupg-1.0.4/VERSION gnupg-1.0.5/VERSION --- gnupg-1.0.4/VERSION Tue Oct 17 15:11:23 2000 +++ gnupg-1.0.5/VERSION Sun Apr 29 16:13:11 2001 @@ -1 +1 @@ -1.0.4 +1.0.5 diff -urN gnupg-1.0.4/AUTHORS gnupg-1.0.5/AUTHORS --- gnupg-1.0.4/AUTHORS Wed Oct 4 16:15:49 2000 +++ gnupg-1.0.5/AUTHORS Tue Apr 17 10:26:50 2001 @@ -30,10 +30,15 @@ Niklas Hernaeus Disclaimer (weak key patches) +Nilgun Belma Buguner Translations [tr] + Nils Ellmenreich Assignment (configure.in, cipher/rndlinux.c, FAQ) -Pedro Morais Translations [pt_BR] +Paul Eggert + (configuration macros for LFS) + +Pedro Morais Translations [pt_PT] Rémi Guyomarch Assignment (g10/compress.c, g10/encr-data.c, @@ -43,14 +48,16 @@ Thiago Jung Bauermann Translations [pt_BR] +Toomas Soome Translations [et] + Urko Lusa Translations [es_ES] -Walter Koch Translations [de] +Walter Koch Translations [de] Werner Koch Assignment (started the whole thing) -Yosiaki IIDA Translations [ja] +Yosiaki IIDA Translations [ja] @@ -76,3 +83,14 @@ The RPM specs file scripts/gnupg.spec has been contributed by several people. + + Copyright 1998, 1999, 2000, 2001 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. + diff -urN gnupg-1.0.4/BUGS gnupg-1.0.5/BUGS --- gnupg-1.0.4/BUGS Wed Jul 12 13:30:52 2000 +++ gnupg-1.0.5/BUGS Fri Apr 13 21:03:54 2001 @@ -2,7 +2,7 @@ http://www.gnupg.org/buglist.html -for a list know bugs in GnuPG. We don't distribute this list anymore +for a list of know bugs in GnuPG. We don't distribute this list anymore with the package because a more current one with notes in which version the bug is fixed can be found online. diff -urN gnupg-1.0.4/ChangeLog gnupg-1.0.5/ChangeLog --- gnupg-1.0.4/ChangeLog Tue Oct 17 14:55:59 2000 +++ gnupg-1.0.5/ChangeLog Sat Apr 28 19:56:07 2001 @@ -1,3 +1,70 @@ +2001-04-28 Werner Koch + + Updated all copyright notices. + +2001-04-27 Werner Koch + + * README: Removed a few outdated paragraphs. + +2001-04-17 Werner Koch + + * acinclude.m4 (GNUPG_CHECK_DOCBOOK_TO_TEXI): New. + (GNUPG_CHECK_TYPEDEF): Define _GNU_SOURCE because we will use it + anyway. + + * configure.in: Use it here. + + * configure.in (ALL_LINGUAS): Add Estonian translation by Toomas Soome. + (use_m_debug): Removed --enable-m-debug because it does not work + anymore. + +2001-04-06 Werner Koch + + * configure.in (ALL_LINGUAS): Add Turkish translation. Thanks + to Nilgun Belma Buguner. + +2001-03-18 Werner Koch + + * configure.in: Hardwire the use of -lsocket for some + systems. Thanks to Reinhard Wobst. + +2001-03-13 Werner Koch + + * configure.in: Add copyright notice and -lwsock32. + +2001-03-12 Werner Koch + + * INSTALL: Add a note to VPATH builds. + +2001-03-08 Werner Koch + + * debian/: Applied update from James. + + Added copyright and license notices to some more files. + +2001-01-18 Werner Koch + + * configure.in: Removed tool definitions for MingW32 + +2000-11-17 Werner Koch + + * acinclude.m4 (GNUPG_CHECK_FAQPROG): Do not prinnt the warning. + +2000-11-11 Paul Eggert + + Actually Paul's patches are dated 2000-20-17; I applied them today + and merged some ChangeLog entries (wk@gnupg.org). + + * configure.in (AC_SYS_LARGEFILE): Add. + (try_large_file): Remove. All uses removed. + (AC_CHECK_FUNCS): Remove fopen64 and fstat64. + + * acinclude.m4 (AC_SYS_LARGEFILE_TEST_INCLUDES, + AC_SYS_LARGEFILE_MACRO_VALUE, AC_SYS_LARGEFILE): New macros, + taken from GNU tar. + + * configure.in (AC_CHECK_FUNCS): Add fseeko. + 2000-10-17 Werner Koch * configure.in: Disabled fopen64 checks for Solaris and HPUX. @@ -559,4 +626,16 @@ * configure.in : Fixed zlib stuff * Makefile.am: Likewise + + + Copyright 1998, 1999, 2000, 2001 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. + diff -urN gnupg-1.0.4/INSTALL gnupg-1.0.5/INSTALL --- gnupg-1.0.4/INSTALL Fri Aug 25 16:04:02 2000 +++ gnupg-1.0.5/INSTALL Sat Apr 28 20:51:06 2001 @@ -1,3 +1,14 @@ +Installation instructions for GnuPG +==================================== + Copyright 1998, 1999, 2000, 2001 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. Please read the Basic Installation section somewhere below. @@ -35,7 +46,10 @@ --disable-nls Disable NLS support (See the file ABOUT-NLS) ---enable-m-guard Enable the integrated malloc checking code. +--enable-m-guard Enable the integrated malloc checking code. Please + note that this feature does not work on all CPUs + (e.g. SunOS 5.7 on UltraSparc-2) and might give + you a Bus error. --disable-dynload If you have problems with dynamic loading, this option disables all dynamic loading stuff. @@ -139,6 +153,10 @@ The ~/.gnupg directory will be created if it does not exist. Your first action should be to create a key pair: "gpg --gen-key". +Due to limitations in the automake system, the Info format versions of +the man pages are not installed. You have to convert the Texinfo +files by hand (use makeinfo) and copy them to the appropriate place. + Creating a RPM package @@ -228,13 +246,14 @@ Compiling For Multiple Architectures ==================================== - You can compile the package for more than one kind of computer at the same -time by placing the object files for each architecture in their own -directory. To do this, you must use a version of `make', such as GNU `make', -that supports the `VPATH' variable. `cd' to the directory where you want the -object files and executables to go and run the `configure' script. -`configure' automatically checks for the source code in the directory that -`configure' is in and in `..'. + You can compile the package for more than one kind of computer at +the same time by placing the object files for each architecture in +their own directory. To do this, you must use a version of `make', +such as GNU `make', that supports the `VPATH' variable. `cd' to the +directory where you want the object files and executables to go and +run the `configure' script; please use a relative filename name to +invoke `configure'. `configure' automatically checks for the source +code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time diff -urN gnupg-1.0.4/Makefile.am gnupg-1.0.5/Makefile.am --- gnupg-1.0.4/Makefile.am Wed Apr 19 10:36:35 2000 +++ gnupg-1.0.5/Makefile.am Thu Mar 8 14:44:41 2001 @@ -1,3 +1,21 @@ +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + ## Process this file with automake to produce Makefile.in if CROSS_COMPILING diff -urN gnupg-1.0.4/Makefile.in gnupg-1.0.5/Makefile.in --- gnupg-1.0.4/Makefile.in Tue Oct 17 15:39:59 2000 +++ gnupg-1.0.5/Makefile.in Sun Apr 29 16:38:50 2001 @@ -10,6 +10,24 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + SHELL = @SHELL@ @@ -72,6 +90,7 @@ DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOCBOOK_TO_TEXI = @DOCBOOK_TO_TEXI@ DYNAMIC_CIPHER_MODS = @DYNAMIC_CIPHER_MODS@ DYNLINK_LDFLAGS = @DYNLINK_LDFLAGS@ DYNLINK_MOD_CFLAGS = @DYNLINK_MOD_CFLAGS@ diff -urN gnupg-1.0.4/NEWS gnupg-1.0.5/NEWS --- gnupg-1.0.4/NEWS Tue Oct 17 14:47:04 2000 +++ gnupg-1.0.5/NEWS Sun Apr 29 16:19:29 2001 @@ -1,3 +1,61 @@ +Noteworthy changes in version 1.0.5 (2001-04-29) +------------------------------------------------ + + * WARNING: The semantics of --verify have changed to address a + problem with detached signature detection. --verify now ignores + signed material given on stdin unless this is requested by using + a "-" as the name for the file with the signed material. Please + check all your detached signature handling applications and make + sure that they don't pipe the signed material to stdin without + using a filename together with "-" on the the command line. + + * WARNING: Corrected hash calculation for input data larger than + 512M - it was just wrong, so you might notice bad signature in + some very big files. It may be wise to keep an old copy of + GnuPG around. + + * Secret keys are no longer imported unless you use the new option + --allow-secret-key-import. This is a kludge and future versions will + handle it in another way. + + * New command "showpref" in the --edit-key menu to show an easier + to understand preference listing. + + * There is now the notation of a primary user ID. For example, it + is printed with a signature verification as the first user ID; + revoked user IDs are not printed there anymore. In general the + primary user ID is the one with the latest self-signature. + + * New --charset=utf-8 to bypass all internal conversions. + + * Large File Support (LFS) is now working. + + * New options: --ignore-crc-error, --no-sig-create-check, + --no-sig-cache, --fixed_list_mode, --no-expensive-trust-checks, + --enable-special-filenames and --use-agent. See man page. + + * New command --pipemode, which can be used to run gpg as a + co-process. Currently only the verification of detached + signatures are working. See doc/DETAILS. + + * Keyserver support for the W32 version. + + * Rewritten key selection code so that GnuPG can better cope with + multiple subkeys, expire dates and so. The drawback is that it + is slower. + + * A whole lot of bug fixes. + + * The verification status of self-signatures are now cached. To + increase the speed of key list operations for existing keys you + can do the following in your GnuPG homedir (~/.gnupg): + $ cp pubring.gpg pubring.gpg.save && $ gpg --export-all >x && \ + rm pubring.gpg && gpg --import x + Only v4 keys (i.e not the old RSA keys) benefit from this caching. + + * New translations: Estonian, Turkish. + + Noteworthy changes in version 1.0.4 (2000-10-17) ------------------------------------------------ @@ -97,7 +155,7 @@ entirely. This option should not yet be used. * New option --no-auto-key-retrieve to disable retrieving of - a missing public key from a keyerver, when a keyerver has been set. + a missing public key from a keyserver, when a keyserver has been set. * Danish translation @@ -929,3 +987,13 @@ * The string "(INSECURE!)" is appended to a new user-id if this is generated on a system without a good random number generator. + +Copyright 1998, 1999, 2000, 2001 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. diff -urN gnupg-1.0.4/PROJECTS gnupg-1.0.5/PROJECTS --- gnupg-1.0.4/PROJECTS Mon Aug 7 10:48:01 2000 +++ gnupg-1.0.5/PROJECTS Thu Mar 8 14:41:28 2001 @@ -29,3 +29,12 @@ We should add an abstraction layer so that adding support for different certificate structures will become easier. + Copyright 1998, 1999, 2000, 2001 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. diff -urN gnupg-1.0.4/README gnupg-1.0.5/README --- gnupg-1.0.4/README Wed Oct 4 16:04:11 2000 +++ gnupg-1.0.5/README Fri Apr 27 18:18:52 2001 @@ -3,6 +3,19 @@ ------------------------------- Version 1.0 + Copyright 1998, 1999, 2000, 2001 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. + + Intro + ----- + GnuPG is GNU's tool for secure communication and data storage. It can be used to encrypt data and to create digital signatures. It includes an advanced key management facility and is compliant @@ -23,9 +36,7 @@ is still available, but because of the larger size of such signatures it is deprecated (Please note that the GnuPG implementation of ElGamal signatures is *not* insecure). Symmetric - algorithms are: 3DES, Blowfish, CAST5 and Twofish (GnuPG does not - yet create Twofish encrypted messages because there is no agreement - in the OpenPGP WG on how to use it together with a MDC algorithm) + algorithms are: AES, 3DES, Blowfish, CAST5 and Twofish Digest algorithms available are MD5, RIPEMD160 and SHA1. @@ -87,41 +98,19 @@ $ gpg --fingerprint 0x57548DCD - with the elsewhere published fingerprint, or - if you are able to - _positively_ verify the signature of this README file - with - this fingerprint: "6BD9 050F D8FC 941B 4341 2DCC 68B7 AB89 5754 8DCD" + with the elsewhere published fingerprint Please note, that you have to use an old version of GnuPG to do all this stuff. *Never* use the version which you are going to check! - b) If you have a trusted Version of PGP 2 or 5 installed, you - can check the supplied PGP 2 signature: - - $ pgp gnupg-x.y.z.tar.gz.sig gnupg-x.y.z.tar.gz - - This checks that the detached signature gnupg-x.y.z.tar.gz.sig - is indeed a a signature of gnupg-x.y.z.tar.gz. Please note, - that this signature has been created with a RSA signature and - you probably can't use this method (due to legal reasons) when - you are in the U.S. The key used to create this signature is - the same as the one used to sign this README file. It should be - available at the keyservers and is also included in the source - of GnuPG in g10/pubring.asc. - - "pub 768R/0C9857A5 1995-09-30 Werner Koch " - - The fingerprint of this key is published in printed form in the - "Global Trust Register for 1998", ISBN 0-9532397-0-5. - - - c) If you don't have any of the above programs, you have to verify + b) If you don't have any of the above programs, you have to verify the MD5 checksum: $ md5sum gnupg-x.y.z.tar.gz - This should yield an output similar_to this: + This should yield an output _similar_ to this: fd9351b26b3189c1d577f0970f9dcadc gnupg-x.y.z.tar.gz @@ -133,7 +122,7 @@ Documentation ------------- - The manual will be distributed separate under the name "gnupgdoc". + The manual will be distributed separate under the name "gph". An online version of the latest manual draft is available at the GnuPG web pages: @@ -475,7 +464,7 @@ --------------------------- The primary WWW page is "http://www.gnupg.org" - The primary FTP site is "ftp://ftp.gnupg.org/pub/gcrypt/" + The primary FTP site is "ftp://ftp.gnupg.org/gcrypt/" See http://www.gnupg.org/mirrors.html for a list of mirrors and use them if possible. You may also find GnuPG mirrored on diff -urN gnupg-1.0.4/THANKS gnupg-1.0.5/THANKS --- gnupg-1.0.4/THANKS Mon Oct 16 16:11:19 2000 +++ gnupg-1.0.5/THANKS Sun Apr 29 16:17:39 2001 @@ -23,30 +23,38 @@ Christian von Roques roques@pond.sub.org Christopher Oliver oliver@fritz.traverse.net Christian Recktenwald chris@citecs.de +Dan Winship danw@helixcode.com Daniel Eisenbud eisenbud@cs.swarthmore.edu Daniel Koening dan@mail.isis.de Daniel Resare daniel@resare.com Dave Dykstra dwd@bell-labs.com +David C Niemi niemi@tuxers.net David Champion dgc@uchicago.edu David Ellement ellement@sdd.hp.com David Hallinan hallinan@rtd.com +David Hollenberg dhollen@ISI.EDU David Mathog MATHOG@seqaxp.bio.caltech.edu Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de Dimitri dmitri@advantrix.com Dirk Lattermann dlatt@t-online.de Ed Boraas ecxjo@esperanto.org Edmund GRIMLEY EVANS edmundo@rano.org +Edwin Woudt edwin@woudt.nl Enzo Michelangeli em@MailAndNews.com Ernst Molitor ernst.molitor@uni-bonn.de Fabio Coatti cova@ferrara.linux.it Felix von Leitner leitner@amdiv.de +Florian Weimer Florian.Weimer@rus.uni-stuttgart.de Frank Donahoe fdonahoe@wilkes1.wilkes.edu Frank Heckenbach heckenb@mi.uni-erlangen.de Frank Stajano frank.stajano@cl.cam.ac.uk Frank Tobin ftobin@uiuc.edu Gabriel Rosenkoetter gr@eclipsed.net Gaël Quéri gqueri@mail.dotcom.fr +Gene Carter gcarter@lanier.com +Georg Schwarz georg.schwarz@iname.com Giampaolo Tomassoni g.tomassoni@libero.it +Gilbert Fernandes gilbert_fernandes@hotmail.com Greg Louis glouis@dynamicro.on.ca Greg Troxel gdt@ir.bbn.com Gregory Steuck steuck@iname.com @@ -61,6 +69,7 @@ Ian McKellar imckellar@harvestroad.com.au Ivo Timmermans itimmermans@bigfoot.com Jan Krueger max@physics.otago.ac.nz +Jan Niehusmann jan@gondor.com Janusz A. Urbanowicz alex@bofh.torun.pl James Troup james@nocrew.org Jean-loup Gailly gzip@prep.ai.mit.edu @@ -70,19 +79,27 @@ Jeroen C. van Gelderen jeroen@vangelderen.org J Horacio MG homega@ciberia.es J. Michael Ashley jashley@acm.org +Jim Bauer jfbauer@home.com Jim Small cavenewt@my-deja.com Joachim Backes backes@rhrk.uni-kl.de +Joe Rhett jrhett@isite.net John A. Martin jam@jamux.com Johnny Teveßen j.tevessen@gmx.de Jörg Schilling schilling@fokus.gmd.de Jos Backus Jos.Backus@nl.origin-it.com Jun Kuriyama kuriyama@sky.rim.or.jp +Kahil D. Jallad kdj4@cs.columbia.edu Karl Fogel kfogel@guanabana.onshore.com Karsten Thygesen karthy@kom.auc.dk Katsuhiro Kondou kondou@nec.co.jp Kazu Yamamoto kazu@iijlab.net +Keith Clayton keith@claytons.org +Kevin Ryde user42@zip.com.au +Klaus Singvogel ks@caldera.de Lars Kellogg-Stedman lars@bu.edu L. Sassaman rabbi@quickie.net +M Taylor mctaylor@privacy.nb.ca +Marcel Waldvogel mwa@arl.wustl.edu Marco d'Itri md@linux.it Mark Adler madler@alumni.caltech.edu Mark Elbrecht snowball3@bigfoot.com @@ -107,9 +124,12 @@ Oliver Haakert haakert@hsp.de Oskari Jääskeläinen f33003a@cc.hut.fi Paul D. Smith psmith@baynetworks.com +Per Cederqvist ceder@lysator.liu.se Philippe Laliberte arsphl@oeil.qc.ca +Peter Fales psfales@lucent.com Peter Gutmann pgut001@cs.auckland.ac.nz Peter Marschall Peter.Marschall@gedos.de +Piotr Krukowiecki piotr@pingu.ii.uj.edu.pl QingLong qinglong@bolizm.ihep.su Ralph Gillen gillen@theochem.uni-duesseldorf.de Rat ratinox@peorth.gweep.net @@ -118,44 +138,62 @@ Reuben Sumner rasumner@wisdom.weizmann.ac.il Richard Outerbridge outer@interlog.com Roddy Strachan roddy@satlink.com.au +Roger Sondermann r.so@bigfoot.com Roland Rosenfeld roland@spinnaker.rhein.de Ross Golder rossigee@bigfoot.com Sam Roberts sam@cogent.ca Sean MacLennan seanm@netwinder.org Serge Munhoven munhoven@mema.ucl.ac.be SL Baur steve@xemacs.org +Stefan Bellon sbellon@sbellon.de 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 +Steven Murdoch sjmurdoch@bigfoot.com Susanne Schultz schultz@hsp.de Ted Cabeen secabeen@pobox.com Thiago Jung Bauermann jungmann@cwb.matrix.com.br Thomas Roessler roessler@guug.de Tim Mooney mooney@dogbert.cc.ndsu.nodak.edu +Timo Schulz towaday@freakmail.de Tom Spindler dogcow@home.merit.edu Tom Zerucha tzeruch@ceddec.com Tomas Fasth tomas.fasth@twinspot.net +Tommi Komulainen Tommi.Komulainen@iki.fi Thomas Klausner wiz@danbala.ifoer.tuwien.ac.at +Tomasz Kozlowski tomek@rentec.com Thomas Mikkelsen tbm@image.dk Ulf Möller 3umoelle@informatik.uni-hamburg.de Urko Lusa ulusa@euskalnet.net +Vincent P. Broman broman@spawar.navy.mil Walter Hofmann Walter.Hofmann@physik.stud.uni-erlangen.de Walter Koch koch@hsp.de Wayne Chapeskie waynec@spinnaker.com Werner Koch wk@gnupg.org Wim Vandeputte bunbun@reptile.rug.ac.be -Yosiaki IIDA iida@secom.ne.jp +Yosiaki IIDA iida@ring.gr.jp Yoshihiro Kajiki kajiki@ylug.org + disastry@saiknes.lv nbecker@hns.com -Thanks to the German Unix User Group for providing FTP space, -Martin Hamilton for hosting the mailing list and HSP for -hosting gnupg.org. +Thanks to the German Unix User Group for sponsoring this project, +Martin Hamilton for hosting the first mailing list and OpenIT for +cheap hosting conditions. The development of this software has partly been funded by the German Ministry for Economics and Technology under grant VIB3-68553.168-001/1999. Many thanks to my wife Gerlinde for having so much patience with me while hacking late in the evening. + + Copyright 1998, 1999, 2000, 2001 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. diff -urN gnupg-1.0.4/TODO gnupg-1.0.5/TODO --- gnupg-1.0.4/TODO Tue Oct 17 14:44:47 2000 +++ gnupg-1.0.5/TODO Wed Apr 25 12:01:08 2001 @@ -1,4 +1,14 @@ + * Check that no secret temporary results are stored in the result parameter + of the mpi functions. We have already done this for mpi-mul.c + + * check whether we can remove all the expire stuff in trustdb because this + is now done in getkey. + + * We need another special packet at the end of a clearsign message to mark + it's end and allow for multiple signature for one message. And + add a real grammar to the code in mainproc.c + * option to set the signature expiration time for key sigs. * Option to warn when a non MDC message is decrypted? @@ -6,70 +16,64 @@ * If there is no secure memory, allocate more memory for the secure memory block or do it in all cases. - * for detached signatures: Allow to specify a filedescriptor (maybe - we can use a generic way to specify filedescriptors - "-" is already - used to specify 0/1). - - * List all UserID with GOODSIG? - * add a way to set expiration time for key signatures. * add some minor things vor VMS. * Don't get the ultimately trusted keys from the secring but store it permanently in the trustdb. This way we don't need a secring at all. - [ Solved by re-introducing --trusted-key ] + [ currently solved by re-introducing --trusted-key ] Eventually we + will have commands --{add,remove}-trusted-key which keeps them in + special trustdb records. - * Use DSA keys with the test suite. + * Use DSA keys with the test suite (partly done) * g10/trustdb.c (make_sig_records): fix the fixme. - * at least an option to prefer DSA keys over RSA when selecting the key to - use. Depending on creation time would be nice too. I think this is - already done for the subkeys - check it. + * Replace Valid/Invalid by Known/Unknown? - * Fix localtime() in W32. + * Fix the bug in the mips assembler code - * No TCP support yet for W32? arggg - should go into a separate program - anyway. + * Add a way to show the fingerprint of an key signator's keys - * Replace Valid/Invalid by Known/Unknown? + * New option --file-remove path-to-wipe-program ? + + * Add an is_valid flag to each user ID. + + * Do not create a secring.gpg if it is not needed; I have fixed this + sometime ago but it has later reappeared. + + * Check for consistent spelling of user ID, key ID etc. + Replace "user id not found" in getkey.c by "no valid user ID found". + + * Do not return "[revoked] User Name" unless in verbose mode, so that + revoked user IDs are better hidden. + + * Replace the printing of the user name by [self-signature] when + appropriate so that a key listing does not get clobbered. - * Fix the bug in the mips assembler code Scheduled for 1.1 ----------------- * export by user-IDs does only export the first matching name which leads to a problem in cases where there are 2 keys with identically user-IDs. - * Rework the whole key selection stuff: Compile a list of valid - candidates for a keyblock first and the select one from it. - The current code is too ugly (getkey.c). - * With option -i prompt before adding a key to the keyring and show some info what we are about to add. * Speed up calculation of key validation. - * print a warning when a revoked/expired _secret_ key is used. - * --disable-asm should still assemble _udiv_qrnnd when needed * Skip RO keyrings when importing a key. - * Use the newest encryption key if only the main key has been given. - [already in the gpg 1.1 codebase] - * replace the keyserver stuff either by a call to a specialized utility and SOCKSify this utility. * Check the beginning of file to detect already compressed files (gzip, bzip2, xdelta and some picture formats) - * Delay the read of the passphrase-fd after a NEED_PASSPHRASE. But this - may break some scripts. - - * Get new assembler stuff from gmgp 3.1 + * Get new assembler stuff from gmp 3.1 Nice to have @@ -84,9 +88,6 @@ test program. Use it with the test suite? * add test cases for invalid data (scrambled armor or other random data) * add checking of armor trailers - * Burn the buffers used by fopen(), or use read(2). Does this - really make sense? And while we are at it: implement a secure deletion - stuff? * the pubkey encrypt functions should do some sanity checks. * dynload: implement the hint stuff. * "gpg filename.tar.gz.asc" should work like --verify (-sab). @@ -94,11 +95,7 @@ verification status of the message to the output (i.e. write something to the --output file and not only to stderr. * configure option where to find zlib - * Display more validity information about the user IDs at certain places. - We need a more general function to extract such kind of info from the - trustdb. * Evaluate whether it make sense to replace the namehashs either by using the user ID directly or by using pointers into the trustdb. - diff -urN gnupg-1.0.4/acconfig.h gnupg-1.0.5/acconfig.h --- gnupg-1.0.4/acconfig.h Fri Aug 25 13:17:14 2000 +++ gnupg-1.0.5/acconfig.h Thu Mar 8 14:57:26 2001 @@ -1,5 +1,5 @@ /* acconfig.h - used by autoheader to make config.h.in - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GNUPG. * diff -urN gnupg-1.0.4/acinclude.m4 gnupg-1.0.5/acinclude.m4 --- gnupg-1.0.4/acinclude.m4 Mon Oct 9 13:41:12 2000 +++ gnupg-1.0.5/acinclude.m4 Fri Apr 27 16:42:25 2001 @@ -1,5 +1,21 @@ dnl macros to configure g10 - +dnl Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +dnl +dnl This file is part of GnuPG. +dnl +dnl GnuPG is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl GnuPG is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA dnl GNUPG_MSG_PRINT(STRING) dnl print a message @@ -15,7 +31,8 @@ AC_DEFUN(GNUPG_CHECK_TYPEDEF, [ AC_MSG_CHECKING(for $1 typedef) AC_CACHE_VAL(gnupg_cv_typedef_$1, - [AC_TRY_COMPILE([#include + [AC_TRY_COMPILE([#define _GNU_SOURCE 1 + #include #include ], [ #undef $1 int a = sizeof($1); @@ -60,17 +77,33 @@ AC_SUBST(FAQPROG) AM_CONDITIONAL(WORKING_FAQPROG, test "$working_faqprog" = "yes" ) - if test $working_faqprog = no; then - AC_MSG_WARN([[ -*** -*** It seems that the faqprog.pl program is not installed; -*** however it is only needed if you want to change the FAQ. -*** (faqprog.pl should be available at: -*** ftp://ftp.gnupg.org/pub/gcrypt/contrib/faqprog.pl ) -*** No need to worry about this warning. -***]]) +dnl if test $working_faqprog = no; then +dnl AC_MSG_WARN([[ +dnl *** +dnl *** It seems that the faqprog.pl program is not installed; +dnl *** however it is only needed if you want to change the FAQ. +dnl *** (faqprog.pl should be available at: +dnl *** ftp://ftp.gnupg.org/pub/gcrypt/contrib/faqprog.pl ) +dnl *** No need to worry about this warning. +dnl ***]]) +dnl fi + ]) + +dnl GNUPG_CHECK_DOCBOOK_TO_TEXI +dnl +AC_DEFUN(GNUPG_CHECK_DOCBOOK_TO_TEXI, + [ + AC_CHECK_PROG(DOCBOOK_TO_TEXI, docbook2texi, yes, no) + AC_MSG_CHECKING(for sgml to texi tools) + working_sgmltotexi=no + if test "$ac_cv_prog_DOCBOOK_TO_TEXI" = yes; then + if sgml2xml -v /dev/null 2>&1 | grep 'SP version' >/dev/null 2>&1 ; then + working_sgmltotexi=yes + fi fi - ]) + AC_MSG_RESULT($working_sgmltotexi) + AM_CONDITIONAL(HAVE_DOCBOOK_TO_TEXI, test "$working_sgmltotexi" = "yes" ) + ]) dnl GNUPG_LINK_FILES( SRC, DEST ) @@ -429,7 +462,6 @@ ################################################################ - # GNUPG_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN(GNUPG_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) @@ -720,4 +752,82 @@ fi ]) -dnl *-*wedit:notab*-* Please keep this as the last line. + +dnl AC_SYS_LARGEFILE is stolen from tar. +dnl This can be removed once the official successor to autoconf 2.13 is out. +#serial 12 + +dnl By default, many hosts won't let programs access large files; +dnl one must use special compiler options to get large-file access to work. +dnl For more details about this brain damage please see: +dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html + +dnl Written by Paul Eggert . + +dnl Internal subroutine of AC_SYS_LARGEFILE. +dnl AC_SYS_LARGEFILE_TEST_INCLUDES +AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES, + [[#include + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + ]]) + +dnl Internal subroutine of AC_SYS_LARGEFILE. +dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, +dnl COMMENT, INCLUDES,FUNCTION-BODY) +AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE, + [AC_CACHE_CHECK([for $1 value needed for large files], $3, + [$3=no + AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES +$5 + , + [$6], + , + [AC_TRY_COMPILE([#define $1 $2] +AC_SYS_LARGEFILE_TEST_INCLUDES +$5 + , + [$6], + [$3=$2])])]) + if test "[$]$3" != no; then + AC_DEFINE_UNQUOTED([$1], [$]$3, [$4]) + fi]) + +AC_DEFUN(AC_SYS_LARGEFILE, + [AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) + if test "$enable_largefile" != no; then + + AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , , + [ac_save_CC="$CC" + CC="$CC -n32" + AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , + ac_cv_sys_largefile_CC=' -n32') + CC="$ac_save_CC"]) + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC="$CC$ac_cv_sys_largefile_CC" + fi + + AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.]) + AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1, + ac_cv_sys_largefile_source, + [Define to make ftello visible on some hosts (e.g. HP-UX 10.20).], + [#include ], [return !ftello;]) + AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, + ac_cv_sys_large_files, + [Define for large files, on AIX-style hosts.]) + AC_SYS_LARGEFILE_MACRO_VALUE(_XOPEN_SOURCE, 500, + ac_cv_sys_xopen_source, + [Define to make ftello visible on some hosts (e.g. glibc 2.1.3).], + [#include ], [return !ftello;]) + fi + ]) + diff -urN gnupg-1.0.4/aclocal.m4 gnupg-1.0.5/aclocal.m4 --- gnupg-1.0.4/aclocal.m4 Tue Oct 17 15:39:38 2000 +++ gnupg-1.0.5/aclocal.m4 Sat Apr 28 19:55:31 2001 @@ -11,7 +11,23 @@ dnl PARTICULAR PURPOSE. dnl macros to configure g10 - +dnl Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +dnl +dnl This file is part of GnuPG. +dnl +dnl GnuPG is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl GnuPG is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA dnl GNUPG_MSG_PRINT(STRING) dnl print a message @@ -27,7 +43,8 @@ AC_DEFUN(GNUPG_CHECK_TYPEDEF, [ AC_MSG_CHECKING(for $1 typedef) AC_CACHE_VAL(gnupg_cv_typedef_$1, - [AC_TRY_COMPILE([#include + [AC_TRY_COMPILE([#define _GNU_SOURCE 1 + #include #include ], [ #undef $1 int a = sizeof($1); @@ -72,17 +89,33 @@ AC_SUBST(FAQPROG) AM_CONDITIONAL(WORKING_FAQPROG, test "$working_faqprog" = "yes" ) - if test $working_faqprog = no; then - AC_MSG_WARN([[ -*** -*** It seems that the faqprog.pl program is not installed; -*** however it is only needed if you want to change the FAQ. -*** (faqprog.pl should be available at: -*** ftp://ftp.gnupg.org/pub/gcrypt/contrib/faqprog.pl ) -*** No need to worry about this warning. -***]]) +dnl if test $working_faqprog = no; then +dnl AC_MSG_WARN([[ +dnl *** +dnl *** It seems that the faqprog.pl program is not installed; +dnl *** however it is only needed if you want to change the FAQ. +dnl *** (faqprog.pl should be available at: +dnl *** ftp://ftp.gnupg.org/pub/gcrypt/contrib/faqprog.pl ) +dnl *** No need to worry about this warning. +dnl ***]]) +dnl fi + ]) + +dnl GNUPG_CHECK_DOCBOOK_TO_TEXI +dnl +AC_DEFUN(GNUPG_CHECK_DOCBOOK_TO_TEXI, + [ + AC_CHECK_PROG(DOCBOOK_TO_TEXI, docbook2texi, yes, no) + AC_MSG_CHECKING(for sgml to texi tools) + working_sgmltotexi=no + if test "$ac_cv_prog_DOCBOOK_TO_TEXI" = yes; then + if sgml2xml -v /dev/null 2>&1 | grep 'SP version' >/dev/null 2>&1 ; then + working_sgmltotexi=yes + fi fi - ]) + AC_MSG_RESULT($working_sgmltotexi) + AM_CONDITIONAL(HAVE_DOCBOOK_TO_TEXI, test "$working_sgmltotexi" = "yes" ) + ]) dnl GNUPG_LINK_FILES( SRC, DEST ) @@ -432,7 +465,6 @@ ]) - # GNUPG_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN(GNUPG_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) @@ -723,7 +755,85 @@ fi ]) -dnl *-*wedit:notab*-* Please keep this as the last line. + +dnl AC_SYS_LARGEFILE is stolen from tar. +dnl This can be removed once the official successor to autoconf 2.13 is out. +#serial 12 + +dnl By default, many hosts won't let programs access large files; +dnl one must use special compiler options to get large-file access to work. +dnl For more details about this brain damage please see: +dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html + +dnl Written by Paul Eggert . + +dnl Internal subroutine of AC_SYS_LARGEFILE. +dnl AC_SYS_LARGEFILE_TEST_INCLUDES +AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES, + [[#include + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + ]]) + +dnl Internal subroutine of AC_SYS_LARGEFILE. +dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, +dnl COMMENT, INCLUDES,FUNCTION-BODY) +AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE, + [AC_CACHE_CHECK([for $1 value needed for large files], $3, + [$3=no + AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES +$5 + , + [$6], + , + [AC_TRY_COMPILE([#define $1 $2] +AC_SYS_LARGEFILE_TEST_INCLUDES +$5 + , + [$6], + [$3=$2])])]) + if test "[$]$3" != no; then + AC_DEFINE_UNQUOTED([$1], [$]$3, [$4]) + fi]) + +AC_DEFUN(AC_SYS_LARGEFILE, + [AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) + if test "$enable_largefile" != no; then + + AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , , + [ac_save_CC="$CC" + CC="$CC -n32" + AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , + ac_cv_sys_largefile_CC=' -n32') + CC="$ac_save_CC"]) + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC="$CC$ac_cv_sys_largefile_CC" + fi + + AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.]) + AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1, + ac_cv_sys_largefile_source, + [Define to make ftello visible on some hosts (e.g. HP-UX 10.20).], + [#include ], [return !ftello;]) + AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, + ac_cv_sys_large_files, + [Define for large files, on AIX-style hosts.]) + AC_SYS_LARGEFILE_MACRO_VALUE(_XOPEN_SOURCE, 500, + ac_cv_sys_xopen_source, + [Define to make ftello visible on some hosts (e.g. glibc 2.1.3).], + [#include ], [return !ftello;]) + fi + ]) + # Define a conditional. diff -urN gnupg-1.0.4/checks/ChangeLog gnupg-1.0.5/checks/ChangeLog --- gnupg-1.0.4/checks/ChangeLog Thu Feb 10 17:41:05 2000 +++ gnupg-1.0.5/checks/ChangeLog Sat Apr 28 21:40:29 2001 @@ -1,3 +1,36 @@ +2001-04-28 Werner Koch + + * run-gpg.patterns: a v3 test key expired yesterday, suppress the + messages. + +2001-03-27 Werner Koch + + * defs.inc: Removed creation of options file. + * options.in: New. + * Makefile.am: Create options file and fixed import of pubdemo.asc. + + * run-gpg.patterns (gpg): Add some more patterns. + +2001-03-20 Werner Koch + + * Makefile.am: Import the pubdemo.asc file + + * sigs.test (hash_algo_list): s/tiger/tiger192/ + +2001-03-19 Werner Koch + + * mkdemodirs (GPGDEMO): Add --allow-secret-key-import to all gpg + invocations. Use echon -n instead of an argument with \c. + +2001-02-12 Werner Koch + + * multisig.test: new + * Makefile.am (TESTS): Added. + +2000-10-18 Werner Koch + + * conventional-mdc.test: Add Rijndael and fix for empty plain texts. + Thu Feb 10 17:39:44 CET 2000 Werner Koch * mkdemodirs: Fixed the --clean loop. @@ -68,4 +101,16 @@ * Makefile.am: Now uses mk-tdata to produce random test data. * ChangeLog: New. + + + Copyright 1998, 1999, 2000, 2001 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. + diff -urN gnupg-1.0.4/checks/Makefile.am gnupg-1.0.5/checks/Makefile.am --- gnupg-1.0.4/checks/Makefile.am Sat Jun 3 13:51:10 2000 +++ gnupg-1.0.5/checks/Makefile.am Tue Mar 27 13:47:51 2001 @@ -1,6 +1,25 @@ +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + ## Process this file with automake to create Makefile.in -GPG_DEARMOR = ../g10/gpg --no-options --quiet --yes --dearmor +GPG_DEARMOR = ../g10/gpg --no-options --no-greeting --batch --quiet --yes --dearmor +GPG_IMPORT = ../g10/gpg --homedir . --quiet --yes --import TESTS = version.test mds.test \ decrypt.test decrypt-dsa.test \ @@ -11,12 +30,13 @@ signencrypt.test signencrypt-dsa.test \ armsignencrypt.test armdetach.test \ armdetachm.test detachm.test genkey1024.test \ - conventional.test conventional-mdc.test + conventional.test conventional-mdc.test \ + multisig.test TEST_FILES = pubring.asc secring.asc plain-1o.asc plain-2o.asc plain-3o.asc \ plain-1.asc plain-2.asc plain-3.asc plain-1-pgp.asc \ - pubring.pkr.asc secring.skr.asc secdemo.asc pubdemo.asc + pubring.pkr.asc secring.skr.asc secdemo.asc pubdemo.asc options.in DATA_FILES = data-500 data-9000 data-32000 data-80000 plain-large @@ -24,7 +44,7 @@ mkdemodirs signdemokey CLEANFILES = prepared.stamp x y yy z out err $(DATA_FILES) \ plain-1 plain-2 plain-3 options trustdb.gpg *.lock .\#lk* \ - pubring.gpg secring.gpg pubring.pkr secring.skr + pubring.gpg secring.gpg pubring.pkr secring.skr options DISTCLEANFILES = pubring.gpg~ @@ -34,11 +54,14 @@ ./mkdemodirs --clean prepared.stamp: ./pubring.gpg ./secring.gpg ./plain-1 ./plain-2 ./plain-3 \ - ./pubring.pkr ./secring.skr $(DATA_FILES) + ./pubring.pkr ./secring.skr ./options $(DATA_FILES) + $(GPG_IMPORT) $(srcdir)/pubdemo.asc echo timestamp >./prepared.stamp +./options: $(srcdir)/options.in + cat $(srcdir)/options.in >./options -./pubring.gpg: $(srcdir)/pubring.asc +./pubring.gpg: $(srcdir)/pubring.asc $(srcdir)/pubdemo.asc $(GPG_DEARMOR) -o ./pubring.gpg $(srcdir)/pubring.asc ./secring.gpg: $(srcdir)/secring.asc diff -urN gnupg-1.0.4/checks/Makefile.in gnupg-1.0.5/checks/Makefile.in --- gnupg-1.0.4/checks/Makefile.in Tue Oct 17 15:40:52 2000 +++ gnupg-1.0.5/checks/Makefile.in Sun Apr 29 16:39:46 2001 @@ -10,6 +10,24 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + SHELL = @SHELL@ @@ -72,6 +90,7 @@ DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOCBOOK_TO_TEXI = @DOCBOOK_TO_TEXI@ DYNAMIC_CIPHER_MODS = @DYNAMIC_CIPHER_MODS@ DYNLINK_LDFLAGS = @DYNLINK_LDFLAGS@ DYNLINK_MOD_CFLAGS = @DYNLINK_MOD_CFLAGS@ @@ -106,19 +125,20 @@ ZLIBS = @ZLIBS@ l = @l@ -GPG_DEARMOR = ../g10/gpg --no-options --quiet --yes --dearmor +GPG_DEARMOR = ../g10/gpg --no-options --no-greeting --batch --quiet --yes --dearmor +GPG_IMPORT = ../g10/gpg --homedir . --quiet --yes --import -TESTS = version.test mds.test decrypt.test decrypt-dsa.test sigs.test sigs-dsa.test encrypt.test encrypt-dsa.test seat.test clearsig.test encryptp.test detach.test armsigs.test armencrypt.test armencryptp.test signencrypt.test signencrypt-dsa.test armsignencrypt.test armdetach.test armdetachm.test detachm.test genkey1024.test conventional.test conventional-mdc.test +TESTS = version.test mds.test decrypt.test decrypt-dsa.test sigs.test sigs-dsa.test encrypt.test encrypt-dsa.test seat.test clearsig.test encryptp.test detach.test armsigs.test armencrypt.test armencryptp.test signencrypt.test signencrypt-dsa.test armsignencrypt.test armdetach.test armdetachm.test detachm.test genkey1024.test conventional.test conventional-mdc.test multisig.test -TEST_FILES = pubring.asc secring.asc plain-1o.asc plain-2o.asc plain-3o.asc plain-1.asc plain-2.asc plain-3.asc plain-1-pgp.asc pubring.pkr.asc secring.skr.asc secdemo.asc pubdemo.asc +TEST_FILES = pubring.asc secring.asc plain-1o.asc plain-2o.asc plain-3o.asc plain-1.asc plain-2.asc plain-3.asc plain-1-pgp.asc pubring.pkr.asc secring.skr.asc secdemo.asc pubdemo.asc options.in DATA_FILES = data-500 data-9000 data-32000 data-80000 plain-large EXTRA_DIST = defs.inc run-gpg run-gpg.patterns $(TESTS) $(TEST_FILES) mkdemodirs signdemokey -CLEANFILES = prepared.stamp x y yy z out err $(DATA_FILES) plain-1 plain-2 plain-3 options trustdb.gpg *.lock .\#lk* pubring.gpg secring.gpg pubring.pkr secring.skr +CLEANFILES = prepared.stamp x y yy z out err $(DATA_FILES) plain-1 plain-2 plain-3 options trustdb.gpg *.lock .\#lk* pubring.gpg secring.gpg pubring.pkr secring.skr options DISTCLEANFILES = pubring.gpg~ mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs @@ -254,10 +274,14 @@ ./mkdemodirs --clean prepared.stamp: ./pubring.gpg ./secring.gpg ./plain-1 ./plain-2 ./plain-3 \ - ./pubring.pkr ./secring.skr $(DATA_FILES) + ./pubring.pkr ./secring.skr ./options $(DATA_FILES) + $(GPG_IMPORT) $(srcdir)/pubdemo.asc echo timestamp >./prepared.stamp -./pubring.gpg: $(srcdir)/pubring.asc +./options: $(srcdir)/options.in + cat $(srcdir)/options.in >./options + +./pubring.gpg: $(srcdir)/pubring.asc $(srcdir)/pubdemo.asc $(GPG_DEARMOR) -o ./pubring.gpg $(srcdir)/pubring.asc ./secring.gpg: $(srcdir)/secring.asc diff -urN gnupg-1.0.4/checks/conventional-mdc.test gnupg-1.0.5/checks/conventional-mdc.test --- gnupg-1.0.4/checks/conventional-mdc.test Sat Jun 3 14:11:13 2000 +++ gnupg-1.0.5/checks/conventional-mdc.test Wed Oct 18 17:13:45 2000 @@ -4,8 +4,13 @@ #info Checking conventional encryption for i in 0 1 2 3 9 10 11 19 20 21 22 23 39 40 41 8192 32000 ; do - for ciph in 3des cast5 blowfish twofish; do - dd if=data-80000 of=z bs=1 count=$i 2>/dev/null + for ciph in 3des cast5 blowfish twofish rijndael; do + # *BSD's dd can't cope with a count of 0 + if test "$i" = "0"; then + : >z + else + dd if=data-80000 of=z bs=1 count=$i 2>/dev/null + fi echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 \ --force-mdc --cipher $ciph -c -o x --yes z echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 \ diff -urN gnupg-1.0.4/checks/defs.inc gnupg-1.0.5/checks/defs.inc --- gnupg-1.0.4/checks/defs.inc Wed Jul 12 14:56:22 2000 +++ gnupg-1.0.5/checks/defs.inc Tue Mar 27 13:46:38 2001 @@ -98,11 +98,5 @@ [ -z "$srcdir" ] && fatal "not called from make" -cat <./options -no-greeting -no-secmem-warning -load-extension ../cipher/tiger -batch -emulate-md-encode-bug -EOF - +: +# end \ No newline at end of file diff -urN gnupg-1.0.4/checks/encryptp.test gnupg-1.0.5/checks/encryptp.test --- gnupg-1.0.4/checks/encryptp.test Mon Sep 14 17:49:48 1998 +++ gnupg-1.0.5/checks/encryptp.test Tue Dec 19 12:45:26 2000 @@ -4,7 +4,7 @@ #info Checking encryption with a pipe for i in $plain_files $data_files ; do - $srcdir/run-gpg -e --yes -r "$usrname2" <$i | tee yy | $srcdir/run-gpg --yes > y + $srcdir/run-gpg -e --yes -r "$usrname2" <$i | $srcdir/run-gpg --yes > y cmp $i y || error "$i: mismatch" done diff -urN gnupg-1.0.4/checks/genkey1024.test gnupg-1.0.5/checks/genkey1024.test --- gnupg-1.0.4/checks/genkey1024.test Fri Apr 9 12:34:34 1999 +++ gnupg-1.0.5/checks/genkey1024.test Tue Mar 27 12:35:09 2001 @@ -13,7 +13,7 @@ LANG= LANGUAGE= -expect - </dev/null +expect - </dev/null #set timeout -1 set timeout 8 match_max 100000 diff -urN gnupg-1.0.4/checks/mkdemodirs gnupg-1.0.5/checks/mkdemodirs --- gnupg-1.0.4/checks/mkdemodirs Thu Feb 10 17:41:05 2000 +++ gnupg-1.0.5/checks/mkdemodirs Mon Mar 19 19:55:02 2001 @@ -2,7 +2,7 @@ set -e -GPG="../g10/gpg --batch --quiet --no-secmem-warning" +GPG="../g10/gpg --batch --quiet --no-secmem-warning --allow-secret-key-import" NAMES='Alpha Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliet Kilo Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform Victor Whisky XRay Yankee Zulu' @@ -19,9 +19,9 @@ [ -f ./tdb.tmp ] && rm ./tdb.tmp GPGDEMO="$GPG --homedir . --trustdb-name ./tdb.tmp --no-default-keyring --keyring pubdemo.gpg --secret-keyring secdemo.gpg" -/bin/echo "Creating:\c" +echo -n "Creating:" for name in $NAMES; do - /bin/echo " $name\c" + echo -n " $name" [ -d $name ] && rm -r $name mkdir $name $GPGDEMO --export-secret-key -o - $name > $name/Secret.gpg diff -urN gnupg-1.0.4/checks/multisig.test gnupg-1.0.5/checks/multisig.test --- gnupg-1.0.4/checks/multisig.test Thu Jan 1 01:00:00 1970 +++ gnupg-1.0.5/checks/multisig.test Thu Apr 5 13:36:55 2001 @@ -0,0 +1,148 @@ +#!/bin/sh +# Check that gpg verifies only signatures where there is no ambiguity +# in the order of packets. Needs the Demo Keys Lima and Mike. + +. $srcdir/defs.inc || exit 3 + +# (variable intialization was created using: +# for i in files; do echo "`echo $i | sed 's,[.-],_,g'`='"; \ +# gpg --no-version --enarmor <$i | grep -v ^Comment:; echo "'" ; done +# ) + +sig_1ls1ls_valid=' +-----BEGIN PGP ARMORED FILE----- + +kA0DAAIRN8q1H7eRA/gBrCdiBXRleHQxOogq9EkgYW0gc29ycnksIEkgY2FuJ3Qg +ZG8gdGhhdAqIPwMFADqIKvQ3yrUft5ED+BEC2joAoJaSaXOZEtSZqQ780HIXG77e +8PB7AJ4wCprmaFTO0fBaTcXDuEOBdAWnOZANAwACETfKtR+3kQP4AawnYgV0ZXh0 +MTqIKvRJIGFtIHNvcnJ5LCBJIGNhbid0IGRvIHRoYXQKiD8DBQA6iCr0N8q1H7eR +A/gRAto6AKCWkmlzmRLUmakO/NByFxu+3vDwewCeMAqa5mhUztHwWk3Fw7hDgXQF +pzk= +=8jSC +-----END PGP ARMORED FILE----- +' +sig_ls_valid=' +-----BEGIN PGP ARMORED FILE----- + +rCdiBXRleHQxOogrS0kgYW0gc29ycnksIEkgY2FuJ3QgZG8gdGhhdAqIPwMFADqI +K0s3yrUft5ED+BECLQMAn2jZUNOpB4OuurSQkc2TRfg6ek02AJ9+oJS0frQ+yUsT +QDUFTH2PvZRxjw== +=J+lb +-----END PGP ARMORED FILE----- +' +sig_sl_valid=' +-----BEGIN PGP ARMORED FILE----- + +iD8DBQA6iCtLN8q1H7eRA/gRAi0DAJ9o2VDTqQeDrrq0kJHNk0X4OnpNNgCffqCU +tH60PslLE0A1BUx9j72UcY+sJ2IFdGV4dDE6iCtLSSBhbSBzb3JyeSwgSSBjYW4n +dCBkbyB0aGF0Cg== +=N9MP +-----END PGP ARMORED FILE----- +' +sig_11lss_valid_but_is_not=' +-----BEGIN PGP ARMORED FILE----- + +kA0DAAIRN8q1H7eRA/gAkA0DAAIRN8q1H7eRA/gBrCdiBXRleHQxOogyXUkgYW0g +c29ycnksIEkgY2FuJ3QgZG8gdGhhdAqIPwMFADqIMl03yrUft5ED+BECwQAAnRXT +mXjVd385oD38W80XuheWKTGcAJ9pZ6/flaKDfw+SLido7xaUHuhp5Yg/AwUAOogy +XTfKtR+3kQP4EQLBAACgnN0IP+NztE0aAc/DZ17yHWR9diwAniN0P01WmbgZJoZB +Q341WRXKS/at +=Ekrs +-----END PGP ARMORED FILE----- +' +sig_11lss11lss_valid_but_is_not=' +-----BEGIN PGP ARMORED FILE----- + +kA0DAAIRN8q1H7eRA/gAkA0DAAIRN8q1H7eRA/gBrCdiBXRleHQxOogyXUkgYW0g +c29ycnksIEkgY2FuJ3QgZG8gdGhhdAqIPwMFADqIMl03yrUft5ED+BECwQAAnRXT +mXjVd385oD38W80XuheWKTGcAJ9pZ6/flaKDfw+SLido7xaUHuhp5Yg/AwUAOogy +XTfKtR+3kQP4EQLBAACgnN0IP+NztE0aAc/DZ17yHWR9diwAniN0P01WmbgZJoZB +Q341WRXKS/atkA0DAAIRN8q1H7eRA/gAkA0DAAIRN8q1H7eRA/gBrCdiBXRleHQx +OogyXUkgYW0gc29ycnksIEkgY2FuJ3QgZG8gdGhhdAqIPwMFADqIMl03yrUft5ED ++BECwQAAnRXTmXjVd385oD38W80XuheWKTGcAJ9pZ6/flaKDfw+SLido7xaUHuhp +5Yg/AwUAOogyXTfKtR+3kQP4EQLBAACgnN0IP+NztE0aAc/DZ17yHWR9diwAniN0 +P01WmbgZJoZBQ341WRXKS/at +=P1Mu +-----END PGP ARMORED FILE----- +' +sig_ssl_valid_but_is_not=' +-----BEGIN PGP ARMORED FILE----- + +iD8DBQA6iCtLN8q1H7eRA/gRAi0DAJ9o2VDTqQeDrrq0kJHNk0X4OnpNNgCffqCU +tH60PslLE0A1BUx9j72UcY+IPwMFADqIK0s3yrUft5ED+BECLQMAn2jZUNOpB4Ou +urSQkc2TRfg6ek02AJ9+oJS0frQ+yUsTQDUFTH2PvZRxj6wnYgV0ZXh0MTqIK0tJ +IGFtIHNvcnJ5LCBJIGNhbid0IGRvIHRoYXQK +=Zven +-----END PGP ARMORED FILE----- +' +sig_1lsls_invalid=' +-----BEGIN PGP ARMORED FILE----- + +kA0DAAIRN8q1H7eRA/gBrCdiBXRleHQxOogq9EkgYW0gc29ycnksIEkgY2FuJ3Qg +ZG8gdGhhdAqIPwMFADqIKvQ3yrUft5ED+BEC2joAoJaSaXOZEtSZqQ780HIXG77e +8PB7AJ4wCprmaFTO0fBaTcXDuEOBdAWnOawnYgV0ZXh0MTqIK0tJIGFtIHNvcnJ5 +LCBJIGNhbid0IGRvIHRoYXQKiD8DBQA6iCtLN8q1H7eRA/gRAi0DAJ9o2VDTqQeD +rrq0kJHNk0X4OnpNNgCffqCUtH60PslLE0A1BUx9j72UcY8= +=nkeu +-----END PGP ARMORED FILE----- +' +sig_lsls_invalid=' +-----BEGIN PGP ARMORED FILE----- + +rCdiBXRleHQxOogrS0kgYW0gc29ycnksIEkgY2FuJ3QgZG8gdGhhdAqIPwMFADqI +K0s3yrUft5ED+BECLQMAn2jZUNOpB4OuurSQkc2TRfg6ek02AJ9+oJS0frQ+yUsT +QDUFTH2PvZRxj6wnYgV0ZXh0MTqIK0tJIGFtIHNvcnJ5LCBJIGNhbid0IGRvIHRo +YXQKiD8DBQA6iCtLN8q1H7eRA/gRAi0DAJ9o2VDTqQeDrrq0kJHNk0X4OnpNNgCf +fqCUtH60PslLE0A1BUx9j72UcY8= +=BlZH +-----END PGP ARMORED FILE----- +' +sig_lss_invalid=' +-----BEGIN PGP ARMORED FILE----- + +rCdiBXRleHQxOogrS0kgYW0gc29ycnksIEkgY2FuJ3QgZG8gdGhhdAqIPwMFADqI +K0s3yrUft5ED+BECLQMAn2jZUNOpB4OuurSQkc2TRfg6ek02AJ9+oJS0frQ+yUsT +QDUFTH2PvZRxj4g/AwUAOogrSzfKtR+3kQP4EQItAwCfaNlQ06kHg666tJCRzZNF ++Dp6TTYAn36glLR+tD7JSxNANQVMfY+9lHGP +=jmt6 +-----END PGP ARMORED FILE----- +' +sig_slsl_invalid=' +-----BEGIN PGP ARMORED FILE----- + +iD8DBQA6iCtLN8q1H7eRA/gRAi0DAJ9o2VDTqQeDrrq0kJHNk0X4OnpNNgCffqCU +tH60PslLE0A1BUx9j72UcY+sJ2IFdGV4dDE6iCtLSSBhbSBzb3JyeSwgSSBjYW4n +dCBkbyB0aGF0Cog/AwUAOogrSzfKtR+3kQP4EQItAwCfaNlQ06kHg666tJCRzZNF ++Dp6TTYAn36glLR+tD7JSxNANQVMfY+9lHGPrCdiBXRleHQxOogrS0kgYW0gc29y +cnksIEkgY2FuJ3QgZG8gdGhhdAo= +=phBF +-----END PGP ARMORED FILE----- +' + +save_IFS="${IFS}" +IFS="" +for i in "$sig_1ls1ls_valid" "$sig_ls_valid" "$sig_sl_valid"; do + echo "$i" | $srcdir/run-gpg --dearmor >x + ../g10/gpg --homedir . --verify x 2>/dev/null || error "valid is invalid" +done +#for i in "$sig_11lss_valid_but_is_not" "$sig_11lss11lss_valid_but_is_not" \ +# "$sig_ssl_valid_but_is_not"; do +# echo "$i" | $srcdir/run-gpg --dearmor >x +# ../g10/gpg --homedir . --verify /dev/null || error "valid is invalid" +#done +for i in "$sig_1lsls_invalid" "$sig_lsls_invalid" \ + "$sig_lss_invalid" "$sig_slsl_invalid" ; do + echo "$i" | $srcdir/run-gpg --dearmor >x + ../g10/gpg --homedir . --verify /dev/null && error "invalid is valid" +done +IFS="${save_IFS}" + + + + + + + + + + diff -urN gnupg-1.0.4/checks/options.in gnupg-1.0.5/checks/options.in --- gnupg-1.0.4/checks/options.in Thu Jan 1 01:00:00 1970 +++ gnupg-1.0.5/checks/options.in Tue Mar 27 13:41:12 2001 @@ -0,0 +1,5 @@ +no-greeting +no-secmem-warning +load-extension ../cipher/tiger +batch +emulate-md-encode-bug diff -urN gnupg-1.0.4/checks/run-gpg.patterns gnupg-1.0.5/checks/run-gpg.patterns --- gnupg-1.0.4/checks/run-gpg.patterns Fri Feb 19 15:53:50 1999 +++ gnupg-1.0.5/checks/run-gpg.patterns Sat Apr 28 21:42:05 2001 @@ -9,3 +9,12 @@ gpg: WARNING: using insecure random number generator gpg: NOTE: signature key expired NOTE: this is a development version! +gpg: encrypted with +"test two (no pp) " +"Test one (pp=def) " +"pgp5 test " +gpg: using secondary key +secret key 9D266E0F expired at +: expired at +gpg: Note: This key has expired! +gpg: Fingerprint: 0826 1CB7 C976 5344 E207 4184 3C6B BBE6 9D26 6E0F diff -urN gnupg-1.0.4/checks/sigs.test gnupg-1.0.5/checks/sigs.test --- gnupg-1.0.4/checks/sigs.test Sun Oct 25 19:59:51 1998 +++ gnupg-1.0.5/checks/sigs.test Tue Mar 20 14:47:42 2001 @@ -10,8 +10,8 @@ done hash_algo_list="ripemd160 sha1 md5" -if have_hash_algo "TIGER"; then - hash_algo_list="$hash_algo_list tiger" +if have_hash_algo "TIGER192"; then + hash_algo_list="$hash_algo_list tiger192" fi for da in $hash_algo_list ; do diff -urN gnupg-1.0.4/cipher/ChangeLog gnupg-1.0.5/cipher/ChangeLog --- gnupg-1.0.4/cipher/ChangeLog Thu Oct 12 12:18:37 2000 +++ gnupg-1.0.5/cipher/ChangeLog Sun Apr 29 10:17:25 2001 @@ -1,3 +1,82 @@ +2001-04-29 Werner Koch + + * random.c (fast_random_poll): Do not check the return code of + getrusage. + +2001-04-17 Werner Koch + + * rndunix.c: Add a signal.h header to avoid warnings on SOlaris 7 + and 8. + +2001-04-16 Werner Koch + + * dynload.c [__MINGW32__]: Applied patch from Timo Schulz to make + it work under W32. This patches is based on the one from + Disastry@saiknes.lv + +2001-04-06 Werner Koch + + * rijndael.c, des.c, blowfish.c, twofish.c, cast5.c (burn_stack): + New. Add wrappers for most functions to be able to call + burn_stack after the function invocation. This methods seems to be + the most portable way to zeroise the stack used. It does only work + on stack frame based machines but it is highly portable and has no + side effects. Just setting the automatic variables at the end of + a function to zero does not work well because the compiler will + optimize them away - marking them as volatile woule be bad for + performance. + * md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise. + * random.c (burn_stack): New. + (mix_pool): Use it here to burn the stack of te mixblock function. + +2001-04-02 Werner Koch + + * primegen.c (generate_elg_prime): I was not initialized for mode + != 1. Freed q at 3 places. Thanks to Tommi Komulainen. + +2001-03-28 Werner Koch + + * md5.c (md5_final): Fixed calculation of hashed length. Thanks + to disastry@saiknes.lv for pointing out that it was horrible wrong + for more than 512MB of input. + * sha1.c (sha1_final): Ditto. + * rmd160.c (rmd160_final): Ditto. + * tiger.c (tiger_final): Ditto. + +2001-03-19 Werner Koch + + * blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to + avoid name clahses with an encrypt function in stdlib.h of + Dynix/PIX. Thanks to Gene Carter. + * elgamal.c (encrypt,do_encrypt): Ditto. + +2001-03-12 Werner Koch + + * twofish.c (gnupgext_enum_func): Add some static when comnpiled + as a module. + + * tiger.c (tiger_get_info): Return "TIGER192" and not just + "TIGER". By Edwin Woudt. + +2001-03-08 Werner Koch + + * random.c: Always include time.h - standard requirement. Thanks + to James Troup. + +2001-01-18 Werner Koch + + * rndw32.c: Fixed typo and wrong ifdef for VER_PLATFORM* macro + +2001-01-12 Werner Koch + + * cipher.c (cipher_encrypt,cipher_encrypt): Use blocksize and + not 8 for CBC mode (However: we don't use CBS in OpenPGP). + +2000-11-22 Werner Koch + + * rndegd.c (gather_random): Fixed default socket to be '=entropy'. + Thanks to Tomasz Kozlowski. + 2000-10-12 Werner Koch * rijndael.c: New. @@ -681,5 +760,17 @@ * misc.c (cipher_algo_to_string): New (pubkey_algo_to_string): New. (digest_algo_to_string): New. + + + + Copyright 1998, 1999, 2000, 2001 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. diff -urN gnupg-1.0.4/cipher/Makefile.am gnupg-1.0.5/cipher/Makefile.am --- gnupg-1.0.4/cipher/Makefile.am Thu Oct 12 12:27:08 2000 +++ gnupg-1.0.5/cipher/Makefile.am Thu Mar 8 14:47:11 2001 @@ -1,3 +1,21 @@ +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + ## Process this file with automake to produce Makefile.in diff -urN gnupg-1.0.4/cipher/Makefile.in gnupg-1.0.5/cipher/Makefile.in --- gnupg-1.0.4/cipher/Makefile.in Tue Oct 17 15:40:21 2000 +++ gnupg-1.0.5/cipher/Makefile.in Sun Apr 29 16:39:07 2001 @@ -10,6 +10,24 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + SHELL = @SHELL@ @@ -72,6 +90,7 @@ DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOCBOOK_TO_TEXI = @DOCBOOK_TO_TEXI@ DYNAMIC_CIPHER_MODS = @DYNAMIC_CIPHER_MODS@ DYNLINK_LDFLAGS = @DYNLINK_LDFLAGS@ FAQPROG = @FAQPROG@ diff -urN gnupg-1.0.4/cipher/blowfish.c gnupg-1.0.5/cipher/blowfish.c --- gnupg-1.0.4/cipher/blowfish.c Fri Jan 14 18:25:56 2000 +++ gnupg-1.0.5/cipher/blowfish.c Sat Apr 28 18:24:36 2001 @@ -1,9 +1,5 @@ /* blowfish.c - Blowfish encryption - * Copyright (C) 1998 Free Software Foundation, Inc. - * - * For a description of the algorithm, see: - * Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996. - * ISBN 0-471-11709-9. Pages 336 ff. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -20,6 +16,10 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * For a description of the algorithm, see: + * Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996. + * ISBN 0-471-11709-9. Pages 336 ff. */ /* Test values: @@ -278,9 +278,20 @@ #endif #define R(l,r,i) do { l ^= p[i]; r ^= F(l); } while(0) +static void +burn_stack (int bytes) +{ + char buf[64]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} + static void -encrypt( BLOWFISH_context *bc, u32 *ret_xl, u32 *ret_xr ) +do_encrypt( BLOWFISH_context *bc, u32 *ret_xl, u32 *ret_xr ) { #if BLOWFISH_ROUNDS == 16 u32 xl, xr, *s0, *s1, *s2, *s3, *p; @@ -413,13 +424,13 @@ #undef R static void -encrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf ) +do_encrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf ) { u32 d1, d2; d1 = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3]; d2 = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7]; - encrypt( bc, &d1, &d2 ); + do_encrypt( bc, &d1, &d2 ); outbuf[0] = (d1 >> 24) & 0xff; outbuf[1] = (d1 >> 16) & 0xff; outbuf[2] = (d1 >> 8) & 0xff; @@ -430,9 +441,15 @@ outbuf[7] = d2 & 0xff; } +static void +encrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf ) +{ + do_encrypt_block (bc, outbuf, inbuf); + burn_stack (64); +} static void -decrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf ) +do_decrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf ) { u32 d1, d2; @@ -449,6 +466,13 @@ outbuf[7] = d2 & 0xff; } +static void +decrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf ) +{ + do_decrypt_block (bc, outbuf, inbuf); + burn_stack (64); +} + static const char* selftest(void) @@ -481,7 +505,7 @@ static int -bf_setkey( BLOWFISH_context *c, byte *key, unsigned keylen ) +do_bf_setkey( BLOWFISH_context *c, byte *key, unsigned keylen ) { int i, j; u32 data, datal, datar; @@ -524,27 +548,27 @@ datal = datar = 0; for(i=0; i < BLOWFISH_ROUNDS+2; i += 2 ) { - encrypt( c, &datal, &datar ); + do_encrypt( c, &datal, &datar ); c->p[i] = datal; c->p[i+1] = datar; } for(i=0; i < 256; i += 2 ) { - encrypt( c, &datal, &datar ); + do_encrypt( c, &datal, &datar ); c->s0[i] = datal; c->s0[i+1] = datar; } for(i=0; i < 256; i += 2 ) { - encrypt( c, &datal, &datar ); + do_encrypt( c, &datal, &datar ); c->s1[i] = datal; c->s1[i+1] = datar; } for(i=0; i < 256; i += 2 ) { - encrypt( c, &datal, &datar ); + do_encrypt( c, &datal, &datar ); c->s2[i] = datal; c->s2[i+1] = datar; } for(i=0; i < 256; i += 2 ) { - encrypt( c, &datal, &datar ); + do_encrypt( c, &datal, &datar ); c->s3[i] = datal; c->s3[i+1] = datar; } @@ -563,6 +587,13 @@ return 0; } +static int +bf_setkey( BLOWFISH_context *c, byte *key, unsigned keylen ) +{ + int rc = do_bf_setkey (c, key, keylen); + burn_stack (64); + return rc; +} /**************** * Return some information about the algorithm. We need algo here to diff -urN gnupg-1.0.4/cipher/cast5.c gnupg-1.0.5/cipher/cast5.c --- gnupg-1.0.4/cipher/cast5.c Fri Jan 14 18:25:56 2000 +++ gnupg-1.0.5/cipher/cast5.c Sat Apr 28 18:25:01 2001 @@ -1,5 +1,5 @@ /* cast5.c - CAST5 cipher (RFC2144) - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -355,7 +355,19 @@ (((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) ) static void -encrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf ) +burn_stack (int bytes) +{ + char buf[64]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} + + +static void +do_encrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf ) { u32 l, r, t; u32 I; /* used by the Fx macros */ @@ -409,7 +421,14 @@ } static void -decrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf ) +encrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf ) +{ + do_encrypt_block (c, outbuf, inbuf); + burn_stack (20+4*sizeof(void*)); +} + +static void +do_decrypt_block (CAST5_context *c, byte *outbuf, byte *inbuf ) { u32 l, r, t; u32 I; @@ -449,6 +468,12 @@ outbuf[7] = l & 0xff; } +static void +decrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf ) +{ + do_decrypt_block (c, outbuf, inbuf); + burn_stack (20+4*sizeof(void*)); +} static const char* @@ -547,7 +572,7 @@ static int -cast_setkey( CAST5_context *c, byte *key, unsigned keylen ) +do_cast_setkey( CAST5_context *c, byte *key, unsigned keylen ) { static int initialized; static const char* selftest_failed; @@ -589,6 +614,13 @@ return 0; } +static int +cast_setkey( CAST5_context *c, byte *key, unsigned keylen ) +{ + int rc = do_cast_setkey (c, key, keylen); + burn_stack (96+7*sizeof(void*)); + return rc; +} /**************** * Return some information about the algorithm. We need algo here to diff -urN gnupg-1.0.4/cipher/cipher.c gnupg-1.0.5/cipher/cipher.c --- gnupg-1.0.4/cipher/cipher.c Thu Oct 12 12:26:01 2000 +++ gnupg-1.0.5/cipher/cipher.c Sat Apr 28 18:25:21 2001 @@ -1,5 +1,5 @@ /* cipher.c - cipher dispatcher - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -619,12 +619,12 @@ { switch( c->mode ) { case CIPHER_MODE_ECB: - assert(!(nbytes%8)); - do_ecb_encrypt(c, outbuf, inbuf, nbytes/8 ); + assert(!(nbytes%c->blocksize)); + do_ecb_encrypt(c, outbuf, inbuf, nbytes/c->blocksize ); break; case CIPHER_MODE_CBC: - assert(!(nbytes%8)); /* fixme: should be blocksize */ - do_cbc_encrypt(c, outbuf, inbuf, nbytes/8 ); + assert(!(nbytes%c->blocksize)); + do_cbc_encrypt(c, outbuf, inbuf, nbytes/c->blocksize ); break; case CIPHER_MODE_CFB: case CIPHER_MODE_PHILS_CFB: @@ -649,12 +649,12 @@ { switch( c->mode ) { case CIPHER_MODE_ECB: - assert(!(nbytes%8)); - do_ecb_decrypt(c, outbuf, inbuf, nbytes/8 ); + assert(!(nbytes%c->blocksize)); + do_ecb_decrypt(c, outbuf, inbuf, nbytes/c->blocksize ); break; case CIPHER_MODE_CBC: - assert(!(nbytes%8)); /* fixme: should assert on blocksize */ - do_cbc_decrypt(c, outbuf, inbuf, nbytes/8 ); + assert(!(nbytes%c->blocksize)); + do_cbc_decrypt(c, outbuf, inbuf, nbytes/c->blocksize ); break; case CIPHER_MODE_CFB: case CIPHER_MODE_PHILS_CFB: diff -urN gnupg-1.0.4/cipher/des.c gnupg-1.0.5/cipher/des.c --- gnupg-1.0.4/cipher/des.c Fri Jan 14 18:25:56 2000 +++ gnupg-1.0.5/cipher/des.c Sat Apr 28 18:26:23 2001 @@ -1,12 +1,5 @@ /* des.c - DES and Triple-DES encryption/decryption Algorithm - * Copyright (C) 1998, 1999 Free Software Foundation, Inc. - * - * Please see below for more legal information! - * - * According to the definition of DES in FIPS PUB 46-2 from December 1993. - * For a description of triple encryption, see: - * Bruce Schneier: Applied Cryptography. Second Edition. - * John Wiley & Sons, 1996. ISBN 0-471-12845-7. Pages 358 ff. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -23,6 +16,12 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * + * According to the definition of DES in FIPS PUB 46-2 from December 1993. + * For a description of triple encryption, see: + * Bruce Schneier: Applied Cryptography. Second Edition. + * John Wiley & Sons, 1996. ISBN 0-471-12845-7. Pages 358 ff. */ @@ -449,9 +448,16 @@ #define tripledes_ecb_decrypt(ctx, from, to) tripledes_ecb_crypt(ctx, from, to, 1) - - - +static void +burn_stack (int bytes) +{ + char buf[64]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} /* * des_key_schedule(): Calculate 16 subkeys pairs (even/odd) for @@ -558,6 +564,7 @@ return G10ERR_SELFTEST_FAILED; des_key_schedule (key, ctx->encrypt_subkeys); + burn_stack (32); for(i=0; i<32; i+=2) { @@ -616,6 +623,7 @@ des_key_schedule (key1, ctx->encrypt_subkeys); des_key_schedule (key2, &(ctx->decrypt_subkeys[32])); + burn_stack (32); for(i=0; i<32; i+=2) { @@ -653,6 +661,7 @@ des_key_schedule (key1, ctx->encrypt_subkeys); des_key_schedule (key2, &(ctx->decrypt_subkeys[32])); des_key_schedule (key3, &(ctx->encrypt_subkeys[64])); + burn_stack (32); for(i=0; i<32; i+=2) { @@ -947,8 +956,11 @@ tripledes_set3keys ( ctx, key, key+8, key+16); - if( is_weak_key( key ) || is_weak_key( key+8 ) || is_weak_key( key+16 ) ) + if( is_weak_key( key ) || is_weak_key( key+8 ) || is_weak_key( key+16 ) ) { + burn_stack (64); return G10ERR_WEAK_KEY; + } + burn_stack (64); return 0; } @@ -958,12 +970,14 @@ do_tripledes_encrypt( struct _tripledes_ctx *ctx, byte *outbuf, byte *inbuf ) { tripledes_ecb_encrypt ( ctx, inbuf, outbuf ); + burn_stack (32); } static void do_tripledes_decrypt( struct _tripledes_ctx *ctx, byte *outbuf, byte *inbuf ) { tripledes_ecb_decrypt ( ctx, inbuf, outbuf ); + burn_stack (32); } diff -urN gnupg-1.0.4/cipher/dsa.c gnupg-1.0.5/cipher/dsa.c --- gnupg-1.0.4/cipher/dsa.c Thu May 18 08:31:29 2000 +++ gnupg-1.0.5/cipher/dsa.c Sun Apr 29 15:44:31 2001 @@ -1,5 +1,5 @@ -/* dsa.c - DSA signature scheme - * Copyright (C) 1998 Free Software Foundation, Inc. +/* dsa.c - DSA signature algorithm + * Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -273,6 +273,9 @@ /**************** * Make a DSA signature from HASH and put it into r and s. + * + * Without generating the k this function runs in + * about 26ms on a 300 Mhz Mobile Pentium */ static void @@ -307,6 +310,9 @@ /**************** * Returns true if the signature composed from R and S is valid. + * + * Without the checks this function runs in + * about 31ms on a 300 Mhz Mobile Pentium */ static int verify(MPI r, MPI s, MPI hash, DSA_public_key *pkey ) diff -urN gnupg-1.0.4/cipher/dsa.h gnupg-1.0.5/cipher/dsa.h --- gnupg-1.0.4/cipher/dsa.h Tue Feb 16 14:16:22 1999 +++ gnupg-1.0.5/cipher/dsa.h Sun Apr 29 15:44:45 2001 @@ -1,4 +1,4 @@ -/* dsa.h - DSA signature scheme +/* dsa.h - DSA signature algorithm * Copyright (C) 1998 Free Software Foundation, Inc. * * This file is part of GnuPG. diff -urN gnupg-1.0.4/cipher/dynload.c gnupg-1.0.5/cipher/dynload.c --- gnupg-1.0.4/cipher/dynload.c Sat Jun 26 12:22:51 1999 +++ gnupg-1.0.5/cipher/dynload.c Sun Apr 29 15:45:42 2001 @@ -1,5 +1,5 @@ /* dynload.c - load cipher extensions - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -31,6 +31,9 @@ #include #include #endif +#ifdef __MINGW32__ + #include +#endif #include "util.h" #include "cipher.h" #include "dynload.h" @@ -67,6 +70,57 @@ } #endif /*HAVE_DL_SHL_LOAD*/ +#ifdef __MINGW32__ +#define HAVE_DL_DLOPEN +#define USE_DYNAMIC_LINKING + +static int last_error = 0; + +void* +dlopen(const char *pathname, int mode) +{ + void *h = LoadLibrary( pathname ); + if (!h) { + log_error( "LoadLibrary failed ec=%d\n", (int)GetLastError() ); + last_error = 1; + return NULL; + } + return h; +} + +int +dlclose( void *handle ) +{ + last_error = 0; + return FreeLibrary( handle ); +} + +char* +dlerror(void) +{ + static char dlerrstr[10]; + if (last_error) { + sprintf(dlerrstr, "%d", (int)GetLastError() ); + return dlerrstr; + } + return NULL; +} + +void* +dlsym( void *handle, const char *name ) +{ + void *h = GetProcAddress( handle, name ); + if (!h) { + log_error( "GetProcAddress failed ec=%d\n", (int)GetLastError() ); + last_error = 1; + return NULL; + } + return h; +} +#endif /*__MINGW32__*/ + + + typedef struct ext_list { @@ -219,9 +273,11 @@ int rc; #endif + #ifndef __MINGW32__ /* make sure we are not setuid */ if( getuid() != geteuid() ) log_bug("trying to load an extension while still setuid\n"); + #endif /* now that we are not setuid anymore, we can safely load modules */ #ifdef HAVE_DL_DLOPEN diff -urN gnupg-1.0.4/cipher/dynload.h gnupg-1.0.5/cipher/dynload.h --- gnupg-1.0.4/cipher/dynload.h Tue Feb 16 14:16:22 1999 +++ gnupg-1.0.5/cipher/dynload.h Sun Apr 29 15:46:13 2001 @@ -1,4 +1,4 @@ -/* dynload.5 +/* dynload.h * Copyright (C) 1998 Free Software Foundation, Inc. * * This file is part of GnuPG. diff -urN gnupg-1.0.4/cipher/elgamal.c gnupg-1.0.5/cipher/elgamal.c --- gnupg-1.0.4/cipher/elgamal.c Tue Jun 27 16:21:13 2000 +++ gnupg-1.0.5/cipher/elgamal.c Sat Apr 28 18:27:50 2001 @@ -1,5 +1,5 @@ /* elgamal.c - ElGamal Public Key encryption - * Copyright (C) 1998, 2000 Free Software Foundation, Inc. + * Copyright (C) 1998, 2000, 2001 Free Software Foundation, Inc. * * For a description of the algorithm, see: * Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996. @@ -50,7 +50,7 @@ static MPI gen_k( MPI p ); static void generate( ELG_secret_key *sk, unsigned nbits, MPI **factors ); static int check_secret_key( ELG_secret_key *sk ); -static void encrypt(MPI a, MPI b, MPI input, ELG_public_key *pkey ); +static void do_encrypt(MPI a, MPI b, MPI input, ELG_public_key *pkey ); static void decrypt(MPI output, MPI a, MPI b, ELG_secret_key *skey ); static void sign(MPI a, MPI b, MPI input, ELG_secret_key *skey); static int verify(MPI a, MPI b, MPI input, ELG_public_key *pkey); @@ -136,7 +136,7 @@ m_free(p); } - encrypt( out1_a, out1_b, test, &pk ); + do_encrypt( out1_a, out1_b, test, &pk ); decrypt( out2, out1_a, out1_b, sk ); if( mpi_cmp( test, out2 ) ) log_fatal("ElGamal operation: encrypt, decrypt failed\n"); @@ -338,7 +338,7 @@ static void -encrypt(MPI a, MPI b, MPI input, ELG_public_key *pkey ) +do_encrypt(MPI a, MPI b, MPI input, ELG_public_key *pkey ) { MPI k; @@ -557,7 +557,7 @@ pk.y = pkey[2]; resarr[0] = mpi_alloc( mpi_get_nlimbs( pk.p ) ); resarr[1] = mpi_alloc( mpi_get_nlimbs( pk.p ) ); - encrypt( resarr[0], resarr[1], data, &pk ); + do_encrypt( resarr[0], resarr[1], data, &pk ); return 0; } diff -urN gnupg-1.0.4/cipher/g10c.c gnupg-1.0.5/cipher/g10c.c --- gnupg-1.0.4/cipher/g10c.c Sat Feb 20 21:45:35 1999 +++ gnupg-1.0.5/cipher/g10c.c Sun Apr 29 16:07:57 2001 @@ -1,5 +1,5 @@ /* g10c.c - Wrapper for cipher functions - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -29,7 +29,7 @@ /* FIXME: The modules should use functions from libgcrypt */ -const char *g10c_revision_string(int dummy) { return "$Revision: 1.6 $"; } +const char *g10c_revision_string(int dummy) { return "$Revision: 1.6.2.2 $"; } MPI g10c_generate_secret_prime( unsigned nbits ) diff -urN gnupg-1.0.4/cipher/md.c gnupg-1.0.5/cipher/md.c --- gnupg-1.0.4/cipher/md.c Mon Oct 4 21:26:53 1999 +++ gnupg-1.0.5/cipher/md.c Sun Apr 29 15:48:16 2001 @@ -1,5 +1,5 @@ /* md.c - message digest dispatcher - * Copyright (C) 1998,1999 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/md5.c gnupg-1.0.5/cipher/md5.c --- gnupg-1.0.4/cipher/md5.c Fri Jan 14 18:25:56 2000 +++ gnupg-1.0.5/cipher/md5.c Sat Apr 28 20:52:39 2001 @@ -1,8 +1,6 @@ /* md5.c - MD5 Message-Digest Algorithm - * Copyright (C) 1995, 1996, 1998, 1999 Free Software Foundation, Inc. - * - * according to the definition of MD5 in RFC 1321 from April 1992. - * NOTE: This is *not* the same file as the one from glibc. + * Copyright (C) 1995, 1996, 1998, 1999, + * 2000, 2001 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -17,9 +15,12 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * According to the definition of MD5 in RFC 1321 from April 1992. + * NOTE: This is *not* the same file as the one from glibc. */ /* Written by Ulrich Drepper , 1995. */ -/* heavily modified for GnuPG by */ +/* Heavily modified for GnuPG by */ /* Test values: * "" D4 1D 8C D9 8F 00 B2 04 E9 80 09 98 EC F8 42 7E @@ -72,6 +73,18 @@ #define FH(b, c, d) (b ^ c ^ d) #define FI(b, c, d) (c ^ (b | ~d)) +static void +burn_stack (int bytes) +{ + char buf[128]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} + + /**************** * transform n*64 bytes @@ -217,6 +230,7 @@ { if( hd->count == 64 ) { /* flush the buffer */ transform( hd, hd->buf ); + burn_stack (80+6*sizeof(void*)); hd->count = 0; hd->nblocks++; } @@ -237,9 +251,9 @@ inlen -= 64; inbuf += 64; } + burn_stack (80+6*sizeof(void*)); for( ; inlen && hd->count < 64; inlen-- ) hd->buf[hd->count++] = *inbuf++; - } @@ -258,18 +272,19 @@ md5_write(hd, NULL, 0); /* flush */; - msb = 0; t = hd->nblocks; - if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */ - msb++; - msb += t >> 26; + /* multiply by 64 to make a byte count */ + lsb = t << 6; + msb = t >> 26; + /* add the count */ t = lsb; - if( (lsb = t + hd->count) < t ) /* add the count */ + if( (lsb += hd->count) < t ) msb++; + /* multiply by 8 to make a bit count */ t = lsb; - if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */ - msb++; - msb += t >> 29; + lsb <<= 3; + msb <<= 3; + msb |= t >> 29; if( hd->count < 56 ) { /* enough room */ hd->buf[hd->count++] = 0x80; /* pad */ @@ -293,6 +308,7 @@ hd->buf[62] = msb >> 16; hd->buf[63] = msb >> 24; transform( hd, hd->buf ); + burn_stack (80+6*sizeof(void*)); p = hd->buf; #ifdef BIG_ENDIAN_HOST @@ -356,7 +372,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "MD5 ($Revision: 1.15.2.1 $)"; +const char * const gnupgext_version = "MD5 ($Revision: 1.15.2.4 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/primegen.c gnupg-1.0.5/cipher/primegen.c --- gnupg-1.0.4/cipher/primegen.c Thu May 18 08:31:43 2000 +++ gnupg-1.0.5/cipher/primegen.c Sat Apr 28 18:30:18 2001 @@ -1,5 +1,5 @@ /* primegen.c - prime number generator - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -190,6 +190,7 @@ count1 = 0; qbits++; progress('>'); + mpi_free (q); q = gen_prime( qbits, 0, 0 ); goto next_try; } @@ -201,6 +202,7 @@ count2 = 0; qbits--; progress('<'); + mpi_free (q); q = gen_prime( qbits, 0, 0 ); goto next_try; } @@ -227,8 +229,8 @@ if( ret_factors ) { /* caller wants the factors */ *ret_factors = m_alloc_clear( (n+2) * sizeof **ret_factors); + i = 0; if( mode == 1 ) { - i = 0; (*ret_factors)[i++] = mpi_copy( q_factor ); for(; i <= n; i++ ) (*ret_factors)[i] = mpi_copy( factors[i] ); @@ -283,6 +285,7 @@ m_free( pool ); m_free(perms); mpi_free(val_2); + mpi_free(q); return prime; } diff -urN gnupg-1.0.4/cipher/pubkey.c gnupg-1.0.5/cipher/pubkey.c --- gnupg-1.0.4/cipher/pubkey.c Wed Sep 6 16:37:17 2000 +++ gnupg-1.0.5/cipher/pubkey.c Sat Apr 28 18:30:26 2001 @@ -1,5 +1,5 @@ /* pubkey.c - pubkey dispatcher - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/rand-internal.h gnupg-1.0.5/cipher/rand-internal.h --- gnupg-1.0.4/cipher/rand-internal.h Wed Dec 23 13:41:15 1998 +++ gnupg-1.0.5/cipher/rand-internal.h Sat Apr 28 18:30:34 2001 @@ -1,5 +1,5 @@ /* rand-internal.h - header to glue the random functions - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/random.c gnupg-1.0.5/cipher/random.c --- gnupg-1.0.4/cipher/random.c Thu Sep 14 12:59:59 2000 +++ gnupg-1.0.5/cipher/random.c Sun Apr 29 10:17:42 2001 @@ -1,5 +1,5 @@ /* random.c - random number generator - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -43,9 +44,6 @@ #ifdef HAVE_GETTIMEOFDAY #include #endif -#ifdef HAVE_CLOCK_GETTIME - #include -#endif #ifdef HAVE_GETRUSAGE #include #endif @@ -141,6 +139,16 @@ cipher_modules_constructor(); } +static void +burn_stack (int bytes) +{ + char buf[128]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} void random_dump_stats() @@ -271,6 +279,7 @@ rmd160_mixblock( &md, hashbuf); memcpy(p, hashbuf, 20 ); } + burn_stack (200); /* for the rmd160_mixblock() */ } @@ -595,9 +604,11 @@ #else { struct rusage buf; /* QNX/Neutrino does return ENOSYS - so we just ignore it and - * add whatever is in buf */ - if( getrusage( RUSAGE_SELF, &buf ) && errno != ENOSYS ) - BUG(); + * add whatever is in buf. In a chroot environment it might not + * work at all (i.e. because /proc/ is not accessible), so we better + * ognore all error codes and hope for the best + */ + getrusage( RUSAGE_SELF, &buf ); add_randomness( &buf, sizeof buf, 1 ); memset( &buf, 0, sizeof buf ); diff -urN gnupg-1.0.4/cipher/random.h gnupg-1.0.5/cipher/random.h --- gnupg-1.0.4/cipher/random.h Thu Mar 2 15:45:05 2000 +++ gnupg-1.0.5/cipher/random.h Sat Apr 28 18:30:55 2001 @@ -1,5 +1,5 @@ /* random.h - random functions - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/rijndael.c gnupg-1.0.5/cipher/rijndael.c --- gnupg-1.0.4/cipher/rijndael.c Thu Oct 12 16:33:57 2000 +++ gnupg-1.0.5/cipher/rijndael.c Sat Apr 28 20:52:39 2001 @@ -1,5 +1,5 @@ /* Rijndael (AES) for GnuPG - * Copyright (C) 2000 Free Software Foundation, Inc. + * Copyright (C) 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -1707,10 +1707,23 @@ }; + +static void +burn_stack (int bytes) +{ + char buf[64]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} + + /* Perform the key setup. */ static int -rijndael_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen) +do_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen) { static int initialized = 0; static const char *selftest_failed=0; @@ -1719,6 +1732,7 @@ int i,j, r, t, rconpointer = 0; byte tk[MAXKC][4]; int KC; + /* space for automatic variables is about 64 + 11*int */ if (!initialized) { initialized = 1; @@ -1809,6 +1823,14 @@ return 0; } +static int +rijndael_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen) +{ + int rc = do_setkey (ctx, key, keylen); + burn_stack ( 100 + 16*sizeof(int)); + return rc; +} + /* make a decryption key from an encryption key */ static void prepare_decryption( RIJNDAEL_context *ctx ) @@ -1847,7 +1869,7 @@ /* Encrypt one block. A and B may be the same. */ static void -rijndael_encrypt (const RIJNDAEL_context *ctx, byte *b, const byte *a) +do_encrypt (const RIJNDAEL_context *ctx, byte *b, const byte *a) { int r; byte temp[4][4]; @@ -1924,10 +1946,18 @@ *((u32*)(b+12)) ^= *((u32*)rk[ROUNDS][3]); #undef rk } + +static void +rijndael_encrypt (const RIJNDAEL_context *ctx, byte *b, const byte *a) +{ + do_encrypt (ctx, b, a); + burn_stack (16 + 2*sizeof(int)); +} + /* Decrypt one block. a and b may be the same. */ static void -rijndael_decrypt (RIJNDAEL_context *ctx, byte *b, const byte *a) +do_decrypt (RIJNDAEL_context *ctx, byte *b, const byte *a) { #define rk (ctx->keySched2) int ROUNDS = ctx->ROUNDS; @@ -1936,6 +1966,7 @@ if ( !ctx->decryption_prepared ) { prepare_decryption ( ctx ); + burn_stack (64); ctx->decryption_prepared = 1; } @@ -2009,6 +2040,13 @@ *((u32*)(b+12)) ^= *((u32*)rk[0][3]); #undef rk } + +static void +rijndael_decrypt (RIJNDAEL_context *ctx, byte *b, const byte *a) +{ + do_decrypt (ctx, b, a); + burn_stack (16+2*sizeof(int)); +} /* Test a single encryption and decryption with each key size. */ @@ -2124,7 +2162,7 @@ #ifdef IS_MODULE static -const char * const gnupgext_version = "RIJNDAEL ($Revision: 1.1.2.1 $)"; +const char * const gnupgext_version = "RIJNDAEL ($Revision: 1.1.2.3 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/rmd.h gnupg-1.0.5/cipher/rmd.h --- gnupg-1.0.4/cipher/rmd.h Wed Feb 10 17:22:21 1999 +++ gnupg-1.0.5/cipher/rmd.h Sat Apr 28 18:31:26 2001 @@ -1,5 +1,5 @@ /* rmd.h - RIPE-MD hash functions - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/rmd160.c gnupg-1.0.5/cipher/rmd160.c --- gnupg-1.0.4/cipher/rmd160.c Fri Jan 14 18:25:56 2000 +++ gnupg-1.0.5/cipher/rmd160.c Sat Apr 28 20:52:40 2001 @@ -1,5 +1,5 @@ /* rmd160.c - RIPE-MD160 - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -141,6 +141,18 @@ * 1 million times "a" 52783243c1697bdbe16d37f97f68f08325dc1528 */ +static void +burn_stack (int bytes) +{ + char buf[150]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} + + void rmd160_init( RMD160_CONTEXT *hd ) @@ -405,6 +417,7 @@ { if( hd->count == 64 ) { /* flush the buffer */ transform( hd, hd->buf ); + burn_stack (108+5*sizeof(void*)); hd->count = 0; hd->nblocks++; } @@ -425,6 +438,7 @@ inlen -= 64; inbuf += 64; } + burn_stack (108+5*sizeof(void*)); for( ; inlen && hd->count < 64; inlen-- ) hd->buf[hd->count++] = *inbuf++; } @@ -461,18 +475,19 @@ rmd160_write(hd, NULL, 0); /* flush */; - msb = 0; t = hd->nblocks; - if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */ - msb++; - msb += t >> 26; + /* multiply by 64 to make a byte count */ + lsb = t << 6; + msb = t >> 26; + /* add the count */ t = lsb; - if( (lsb = t + hd->count) < t ) /* add the count */ + if( (lsb += hd->count) < t ) msb++; + /* multiply by 8 to make a bit count */ t = lsb; - if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */ - msb++; - msb += t >> 29; + lsb <<= 3; + msb <<= 3; + msb |= t >> 29; if( hd->count < 56 ) { /* enough room */ hd->buf[hd->count++] = 0x80; /* pad */ @@ -496,6 +511,7 @@ hd->buf[62] = msb >> 16; hd->buf[63] = msb >> 24; transform( hd, hd->buf ); + burn_stack (108+5*sizeof(void*)); p = hd->buf; #ifdef BIG_ENDIAN_HOST @@ -574,7 +590,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "RMD160 ($Revision: 1.17.2.1 $)"; +const char * const gnupgext_version = "RMD160 ($Revision: 1.17.2.4 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/rndegd.c gnupg-1.0.5/cipher/rndegd.c --- gnupg-1.0.4/cipher/rndegd.c Fri Aug 25 16:00:14 2000 +++ gnupg-1.0.5/cipher/rndegd.c Sat Apr 28 20:52:40 2001 @@ -1,5 +1,5 @@ /* rndegd.c - interface to the EGD - * Copyright (C) 1999 Free Software Foundation, Inc. + * Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -123,7 +123,7 @@ bname = EGD_SOCKET_NAME; #endif if ( !bname || !*bname ) - bname = "entropy"; + bname = "=entropy"; if ( *bname == '=' && bname[1] ) name = make_filename( g10_opt_homedir, bname+1 , NULL ); @@ -210,7 +210,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "RNDEGD ($Revision: 1.7.2.2 $)"; +const char * const gnupgext_version = "RNDEGD ($Revision: 1.7.2.4 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/rndlinux.c gnupg-1.0.5/cipher/rndlinux.c --- gnupg-1.0.4/cipher/rndlinux.c Fri Aug 25 16:00:14 2000 +++ gnupg-1.0.5/cipher/rndlinux.c Sat Apr 28 20:52:40 2001 @@ -1,5 +1,5 @@ /* rndlinux.c - raw random number for OSes with /dev/random - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -178,7 +178,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "RNDLINUX ($Revision: 1.9.2.2 $)"; +const char * const gnupgext_version = "RNDLINUX ($Revision: 1.9.2.3 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/rndunix.c gnupg-1.0.5/cipher/rndunix.c --- gnupg-1.0.4/cipher/rndunix.c Thu Sep 14 14:20:27 2000 +++ gnupg-1.0.5/cipher/rndunix.c Sat Apr 28 18:49:59 2001 @@ -80,6 +80,7 @@ #endif /* _AIX || __QNX__ */ #ifndef __QNX__ #include +#include #include #endif /* __QNX__ */ #include @@ -850,7 +851,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "RNDUNIX ($Revision: 1.14.2.4 $)"; +const char * const gnupgext_version = "RNDUNIX ($Revision: 1.14.2.5 $)"; static struct { diff -urN gnupg-1.0.4/cipher/rndw32.c gnupg-1.0.5/cipher/rndw32.c --- gnupg-1.0.4/cipher/rndw32.c Mon Sep 18 12:11:42 2000 +++ gnupg-1.0.5/cipher/rndw32.c Sat Apr 28 20:52:40 2001 @@ -1,5 +1,5 @@ /* rndw32.c - W32 entropy gatherer - * Copyright (C) 1999, 2000 Free Software Foundation, Inc. + * Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. * Copyright Peter Gutmann, Matt Thomlinson and Blake Coverett 1996-1999 * * This file is part of GnuPG. @@ -311,8 +311,8 @@ #ifndef IOCTL_DISK_PERFORMANCE #define IOCTL_DISK_PERFORMANCE 0x00070020 #endif -#ifndef IOCTL_DISK_PERFORMANCE -#define VER_PLATFORM_WIN32_WINDOWSw 1 +#ifndef VER_PLATFORM_WIN32_WINDOWS +#define VER_PLATFORM_WIN32_WINDOWS 1 #endif typedef struct { @@ -915,7 +915,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "RNDW32 ($Revision: 1.1.4.6 $)"; +const char * const gnupgext_version = "RNDW32 ($Revision: 1.1.4.8 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/rsa.c gnupg-1.0.5/cipher/rsa.c --- gnupg-1.0.4/cipher/rsa.c Wed Sep 13 15:49:23 2000 +++ gnupg-1.0.5/cipher/rsa.c Sat Apr 28 18:50:51 2001 @@ -1,6 +1,6 @@ /* rsa.c - RSA function * Copyright (C) 1997, 1998, 1999 by Werner Koch (dd9jn) - * Copyright (C) 2000 Free Software Foundation, Inc. + * Copyright (C) 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/rsa.h gnupg-1.0.5/cipher/rsa.h --- gnupg-1.0.4/cipher/rsa.h Tue Jun 27 16:59:06 2000 +++ gnupg-1.0.5/cipher/rsa.h Sat Apr 28 18:50:57 2001 @@ -1,6 +1,6 @@ /* rsa.h * Copyright (C) 1997,1998 by Werner Koch (dd9jn) - * Copyright (C) 2000 Free Software Foundation, Inc. + * Copyright (C) 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/sha1.c gnupg-1.0.5/cipher/sha1.c --- gnupg-1.0.4/cipher/sha1.c Wed Oct 4 15:50:33 2000 +++ gnupg-1.0.5/cipher/sha1.c Sat Apr 28 20:52:40 2001 @@ -1,5 +1,5 @@ /* sha1.c - SHA1 hash function - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * Please see below for more legal information! * @@ -49,7 +49,16 @@ int count; } SHA1_CONTEXT; - +static void +burn_stack (int bytes) +{ + char buf[128]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} void @@ -214,6 +223,7 @@ { if( hd->count == 64 ) { /* flush the buffer */ transform( hd, hd->buf ); + burn_stack (88+4*sizeof(void*)); hd->count = 0; hd->nblocks++; } @@ -234,6 +244,7 @@ inlen -= 64; inbuf += 64; } + burn_stack (88+4*sizeof(void*)); for( ; inlen && hd->count < 64; inlen-- ) hd->buf[hd->count++] = *inbuf++; } @@ -254,18 +265,19 @@ sha1_write(hd, NULL, 0); /* flush */; - msb = 0; t = hd->nblocks; - if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */ - msb++; - msb += t >> 26; + /* multiply by 64 to make a byte count */ + lsb = t << 6; + msb = t >> 26; + /* add the count */ t = lsb; - if( (lsb = t + hd->count) < t ) /* add the count */ + if( (lsb += hd->count) < t ) msb++; + /* multiply by 8 to make a bit count */ t = lsb; - if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */ - msb++; - msb += t >> 29; + lsb <<= 3; + msb <<= 3; + msb |= t >> 29; if( hd->count < 56 ) { /* enough room */ hd->buf[hd->count++] = 0x80; /* pad */ @@ -289,6 +301,7 @@ hd->buf[62] = lsb >> 8; hd->buf[63] = lsb ; transform( hd, hd->buf ); + burn_stack (88+4*sizeof(void*)); p = hd->buf; #ifdef BIG_ENDIAN_HOST @@ -350,7 +363,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "SHA1 ($Revision: 1.12.2.3 $)"; +const char * const gnupgext_version = "SHA1 ($Revision: 1.12.2.6 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/smallprime.c gnupg-1.0.5/cipher/smallprime.c --- gnupg-1.0.4/cipher/smallprime.c Wed Dec 23 13:41:15 1998 +++ gnupg-1.0.5/cipher/smallprime.c Sat Apr 28 18:51:37 2001 @@ -1,5 +1,5 @@ /* smallprime.c - List of small primes - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * diff -urN gnupg-1.0.4/cipher/tiger.c gnupg-1.0.5/cipher/tiger.c --- gnupg-1.0.4/cipher/tiger.c Fri Jan 14 18:25:56 2000 +++ gnupg-1.0.5/cipher/tiger.c Sat Apr 28 20:52:40 2001 @@ -1,5 +1,5 @@ /* tiger.c - The TIGER hash function - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -631,6 +631,19 @@ static void +burn_stack (int bytes) +{ + char buf[256]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} + + + +static void tiger_init( TIGER_CONTEXT *hd ) { hd->a = 0x0123456789abcdefLL; @@ -768,6 +781,7 @@ { if( hd->count == 64 ) { /* flush the buffer */ transform( hd, hd->buf ); + burn_stack (21*8+11*sizeof(void*)); hd->count = 0; hd->nblocks++; } @@ -788,6 +802,7 @@ inlen -= 64; inbuf += 64; } + burn_stack (21*8+11*sizeof(void*)); for( ; inlen && hd->count < 64; inlen-- ) hd->buf[hd->count++] = *inbuf++; } @@ -805,18 +820,19 @@ tiger_write(hd, NULL, 0); /* flush */; - msb = 0; t = hd->nblocks; - if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */ - msb++; - msb += t >> 26; + /* multiply by 64 to make a byte count */ + lsb = t << 6; + msb = t >> 26; + /* add the count */ t = lsb; - if( (lsb = t + hd->count) < t ) /* add the count */ + if( (lsb += hd->count) < t ) msb++; + /* multiply by 8 to make a bit count */ t = lsb; - if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */ - msb++; - msb += t >> 29; + lsb <<= 3; + msb <<= 3; + msb |= t >> 29; if( hd->count < 56 ) { /* enough room */ hd->buf[hd->count++] = 0x01; /* pad */ @@ -840,6 +856,7 @@ hd->buf[62] = msb >> 16; hd->buf[63] = msb >> 24; transform( hd, hd->buf ); + burn_stack (21*8+11*sizeof(void*)); p = hd->buf; #ifdef BIG_ENDIAN_HOST @@ -904,7 +921,7 @@ *(void (**)(TIGER_CONTEXT *))r_final = tiger_final; *(byte *(**)(TIGER_CONTEXT *))r_read = tiger_read; - return "TIGER"; + return "TIGER192"; } @@ -912,7 +929,7 @@ #ifndef IS_MODULE static #endif -const char * const gnupgext_version = "TIGER ($Revision: 1.10.2.1 $)"; +const char * const gnupgext_version = "TIGER ($Revision: 1.10.2.5 $)"; static struct { int class; diff -urN gnupg-1.0.4/cipher/twofish.c gnupg-1.0.5/cipher/twofish.c --- gnupg-1.0.4/cipher/twofish.c Fri Apr 14 19:34:26 2000 +++ gnupg-1.0.5/cipher/twofish.c Sat Apr 28 18:54:54 2001 @@ -545,11 +545,25 @@ x += y; y += x; ctx->a[j] = x; \ ctx->a[(j) + 1] = (y << 9) + (y >> 23) + +static void +burn_stack (int bytes) +{ + char buf[64]; + + memset (buf, 0, sizeof buf); + bytes -= sizeof buf; + if (bytes > 0) + burn_stack (bytes); +} + + + /* Perform the key setup. Note that this works only with 128- and 256-bit * keys, despite the API that looks like it might support other sizes. */ static int -twofish_setkey (TWOFISH_context *ctx, const byte *key, const unsigned keylen) +do_twofish_setkey (TWOFISH_context *ctx, const byte *key, unsigned int keylen) { int i, j, k; @@ -682,6 +696,16 @@ return 0; } + +static int +twofish_setkey (TWOFISH_context *ctx, const byte *key, unsigned int keylen) +{ + int rc = do_twofish_setkey (ctx, key, keylen); + burn_stack (23+6*sizeof(void*)); + return rc; +} + + /* Macros to compute the g() function in the encryption and decryption * rounds. G1 is the straight g() function; G2 includes the 8-bit @@ -744,7 +768,7 @@ /* Encrypt one block. in and out may be the same. */ static void -twofish_encrypt (const TWOFISH_context *ctx, byte *out, const byte *in) +do_twofish_encrypt (const TWOFISH_context *ctx, byte *out, const byte *in) { /* The four 32-bit chunks of the text. */ u32 a, b, c, d; @@ -774,11 +798,18 @@ OUTUNPACK (2, a, 6); OUTUNPACK (3, b, 7); } + +static void +twofish_encrypt (const TWOFISH_context *ctx, byte *out, const byte *in) +{ + do_twofish_encrypt (ctx, out, in); + burn_stack (24+3*sizeof (void*)); +} /* Decrypt one block. in and out may be the same. */ static void -twofish_decrypt (const TWOFISH_context *ctx, byte *out, const byte *in) +do_twofish_decrypt (const TWOFISH_context *ctx, byte *out, const byte *in) { /* The four 32-bit chunks of the text. */ u32 a, b, c, d; @@ -808,6 +839,13 @@ OUTUNPACK (2, c, 2); OUTUNPACK (3, d, 3); } + +static void +twofish_decrypt (const TWOFISH_context *ctx, byte *out, const byte *in) +{ + do_twofish_decrypt (ctx, out, in); + burn_stack (24+3*sizeof (void*)); +} /* Test a single encryption and decryption with each key size. */ @@ -1004,7 +1042,9 @@ } -const char * const gnupgext_version = "TWOFISH ($Revision: 1.8.2.3 $)"; +#ifdef IS_MODULE +static +const char * const gnupgext_version = "TWOFISH ($Revision: 1.8.2.5 $)"; static struct { int class; @@ -1034,7 +1074,7 @@ * version = interface version of the function/pointer * (currently this is 1 for all functions) */ -void * +static void * gnupgext_enum_func ( int what, int *sequence, int *class, int *vers ) { void *ret; @@ -1062,4 +1102,4 @@ *sequence = i; return ret; } - +#endif diff -urN gnupg-1.0.4/config.h.in gnupg-1.0.5/config.h.in --- gnupg-1.0.4/config.h.in Wed Sep 6 17:23:46 2000 +++ gnupg-1.0.5/config.h.in Thu Mar 8 15:26:26 2001 @@ -1,6 +1,6 @@ /* config.h.in. Generated automatically from configure.in by autoheader. */ /* acconfig.h - used by autoheader to make config.h.in - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GNUPG. * @@ -188,11 +188,8 @@ /* Define if you have the dlopen function. */ #undef HAVE_DLOPEN -/* Define if you have the fopen64 function. */ -#undef HAVE_FOPEN64 - -/* Define if you have the fstat64 function. */ -#undef HAVE_FSTAT64 +/* Define if you have the fseeko function. */ +#undef HAVE_FSEEKO /* Define if you have the getcwd function. */ #undef HAVE_GETCWD @@ -367,6 +364,18 @@ /* Version number of package */ #undef VERSION + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define to make ftello visible on some hosts (e.g. HP-UX 10.20). */ +#undef _LARGEFILE_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to make ftello visible on some hosts (e.g. glibc 2.1.3). */ +#undef _XOPEN_SOURCE /* define if compiled symbols have a leading underscore */ #undef WITH_SYMBOL_UNDERSCORE diff -urN gnupg-1.0.4/configure gnupg-1.0.5/configure --- gnupg-1.0.4/configure Tue Oct 17 15:39:41 2000 +++ gnupg-1.0.5/configure Sun Apr 29 16:38:16 2001 @@ -1,6 +1,6 @@ #! /bin/sh -# From configure.in Revision: 1.103.2.27 +# From configure.in Revision: 1.103.2.33 CDPATH= @@ -17,6 +17,7 @@ + @@ -53,7 +54,6 @@ - # GNUPG_PROG_NM - find the path to a BSD-compatible name lister @@ -70,6 +70,17 @@ + +#serial 12 + + + + + + + + + # Define a conditional. @@ -163,8 +174,6 @@ ac_help="$ac_help --disable-asm do not use assembler modules" ac_help="$ac_help - --enable-m-debug enable debugging of memory allocation" -ac_help="$ac_help --enable-m-guard enable memory guard facility" ac_help="$ac_help --with-included-zlib use the zlib code included here" @@ -174,6 +183,8 @@ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer" ac_help="$ac_help + --disable-largefile omit support for large files" +ac_help="$ac_help --disable-nls do not use Native Language Support" ac_help="$ac_help --with-included-gettext use the GNU gettext library included here" @@ -739,7 +750,7 @@ fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:743: checking host system type" >&5 +echo "configure:754: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -760,7 +771,7 @@ echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:764: checking target system type" >&5 +echo "configure:775: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -778,7 +789,7 @@ echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:782: checking build system type" >&5 +echo "configure:793: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -812,7 +823,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:816: checking for a BSD compatible install" >&5 +echo "configure:827: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -865,7 +876,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:869: checking whether build environment is sane" >&5 +echo "configure:880: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -922,7 +933,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:926: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:937: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -968,7 +979,7 @@ missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:972: checking for working aclocal" >&5 +echo "configure:983: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -981,7 +992,7 @@ fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:985: checking for working autoconf" >&5 +echo "configure:996: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -994,7 +1005,7 @@ fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:998: checking for working automake" >&5 +echo "configure:1009: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1007,7 +1018,7 @@ fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:1011: checking for working autoheader" >&5 +echo "configure:1022: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1020,7 +1031,7 @@ fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:1024: checking for working makeinfo" >&5 +echo "configure:1035: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1035,7 +1046,7 @@ -ALL_LINGUAS="da de eo es_ES fr id it ja nl pl pt_BR pt_PT ru sv" +ALL_LINGUAS="da de eo es_ES et fr id it ja nl pl pt_BR pt_PT ru sv tr" static_modules="sha1 md5 rmd160" static_random_module="" @@ -1044,7 +1055,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1048: checking for $ac_word" >&5 +echo "configure:1059: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1079,7 +1090,7 @@ echo $ac_n "checking which static random module to use""... $ac_c" 1>&6 -echo "configure:1083: checking which static random module to use" >&5 +echo "configure:1094: checking which static random module to use" >&5 # Check whether --enable-static-rnd or --disable-static-rnd was given. if test "${enable_static_rnd+set}" = set; then enableval="$enable_static_rnd" @@ -1119,7 +1130,7 @@ echo $ac_n "checking whether use of /dev/random is requested""... $ac_c" 1>&6 -echo "configure:1123: checking whether use of /dev/random is requested" >&5 +echo "configure:1134: checking whether use of /dev/random is requested" >&5 # Check whether --enable-dev-random or --disable-dev-random was given. if test "${enable_dev_random+set}" = set; then enableval="$enable_dev_random" @@ -1133,7 +1144,7 @@ echo $ac_n "checking whether use of extensions is requested""... $ac_c" 1>&6 -echo "configure:1137: checking whether use of extensions is requested" >&5 +echo "configure:1148: checking whether use of extensions is requested" >&5 # Check whether --enable-dynload or --disable-dynload was given. if test "${enable_dynload+set}" = set; then enableval="$enable_dynload" @@ -1145,7 +1156,7 @@ echo "$ac_t""$try_dynload" 1>&6 echo $ac_n "checking whether assembler modules are requested""... $ac_c" 1>&6 -echo "configure:1149: checking whether assembler modules are requested" >&5 +echo "configure:1160: checking whether assembler modules are requested" >&5 # Check whether --enable-asm or --disable-asm was given. if test "${enable_asm+set}" = set; then enableval="$enable_asm" @@ -1156,27 +1167,9 @@ echo "$ac_t""$try_asm_modules" 1>&6 -echo $ac_n "checking whether memory debugging is requested""... $ac_c" 1>&6 -echo "configure:1161: checking whether memory debugging is requested" >&5 -# Check whether --enable-m-debug or --disable-m-debug was given. -if test "${enable_m_debug+set}" = set; then - enableval="$enable_m_debug" - use_m_debug=$enableval -else - use_m_debug=no -fi - -echo "$ac_t""$use_m_debug" 1>&6 -if test "$use_m_debug" = yes; then - cat >> confdefs.h <<\EOF -#define M_DEBUG 1 -EOF - - use_m_guard=yes -else - echo $ac_n "checking whether memory guard is requested""... $ac_c" 1>&6 -echo "configure:1179: checking whether memory guard is requested" >&5 - # Check whether --enable-m-guard or --disable-m-guard was given. +echo $ac_n "checking whether memory guard is requested""... $ac_c" 1>&6 +echo "configure:1172: checking whether memory guard is requested" >&5 +# Check whether --enable-m-guard or --disable-m-guard was given. if test "${enable_m_guard+set}" = set; then enableval="$enable_m_guard" use_m_guard=$enableval @@ -1184,8 +1177,7 @@ use_m_guard=no fi - echo "$ac_t""$use_m_guard" 1>&6 -fi +echo "$ac_t""$use_m_guard" 1>&6 if test "$use_m_guard" = yes ; then cat >> confdefs.h <<\EOF #define M_GUARD 1 @@ -1195,7 +1187,7 @@ echo $ac_n "checking whether included zlib is requested""... $ac_c" 1>&6 -echo "configure:1199: checking whether included zlib is requested" >&5 +echo "configure:1191: checking whether included zlib is requested" >&5 # Check whether --with-included-zlib or --without-included-zlib was given. if test "${with_included_zlib+set}" = set; then withval="$with_included_zlib" @@ -1208,7 +1200,7 @@ echo $ac_n "checking whether use of capabilities is requested""... $ac_c" 1>&6 -echo "configure:1212: checking whether use of capabilities is requested" >&5 +echo "configure:1204: checking whether use of capabilities is requested" >&5 # Check whether --with-capabilities or --without-capabilities was given. if test "${with_capabilities+set}" = set; then withval="$with_capabilities" @@ -1224,7 +1216,7 @@ echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:1228: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:1220: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -1250,12 +1242,6 @@ case "${target}" in *-*-mingw32*) - # special stuff for Windoze NT - # Do we need to set cross_compiling here or is it sufficient - # to rely on AC_PROG_CC which is called later? - CC="${target}-gcc" - CPP="${target}-gcc -E" - RANLIB="${target}-ranlib" disallowed_modules="rndunix rndlinux rndegd" ;; *) @@ -1283,7 +1269,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:1287: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:1273: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1310,7 +1296,7 @@ fi echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:1314: checking whether build environment is sane" >&5 +echo "configure:1300: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -1349,7 +1335,7 @@ echo "$ac_t""yes" 1>&6 missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:1353: checking for working aclocal" >&5 +echo "configure:1339: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1362,7 +1348,7 @@ fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:1366: checking for working autoconf" >&5 +echo "configure:1352: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1375,7 +1361,7 @@ fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:1379: checking for working automake" >&5 +echo "configure:1365: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1388,7 +1374,7 @@ fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:1392: checking for working autoheader" >&5 +echo "configure:1378: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1400,10 +1386,23 @@ echo "$ac_t""missing" 1>&6 fi +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:1391: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1407: checking for $ac_word" >&5 +echo "configure:1406: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1433,7 +1432,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1437: checking for $ac_word" >&5 +echo "configure:1436: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1484,7 +1483,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1488: checking for $ac_word" >&5 +echo "configure:1487: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1516,7 +1515,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1520: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1519: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1527,12 +1526,12 @@ cat > conftest.$ac_ext << EOF -#line 1531 "configure" +#line 1530 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1558,12 +1557,12 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1562: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1561: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1567: checking whether we are using GNU C" >&5 +echo "configure:1566: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1572,7 +1571,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1591,7 +1590,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1595: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1594: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1623,7 +1622,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1627: checking how to run the C preprocessor" >&5 +echo "configure:1626: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1638,13 +1637,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1648: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1655,13 +1654,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1664: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1672,13 +1671,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1703,7 +1702,7 @@ echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:1707: checking for POSIXized ISC" >&5 +echo "configure:1706: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then @@ -1723,6 +1722,296 @@ ISC= fi +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + : +fi + + if test "$enable_largefile" != no; then + + echo $ac_n "checking for special C compiler options needed for large files""... $ac_c" 1>&6 +echo "configure:1735: checking for special C compiler options needed for large files" >&5 +if eval "test \"`echo '$''{'ac_cv_sys_largefile_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + +int main() { + +; return 0; } +EOF +if { (eval echo configure:1753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_save_CC="$CC" + CC="$CC -n32" + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + +int main() { + +; return 0; } +EOF +if { (eval echo configure:1771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_sys_largefile_CC=' -n32' +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + CC="$ac_save_CC" +fi +rm -f conftest* + fi +fi + +echo "$ac_t""$ac_cv_sys_largefile_CC" 1>&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC="$CC$ac_cv_sys_largefile_CC" + fi + + echo $ac_n "checking for _FILE_OFFSET_BITS value needed for large files""... $ac_c" 1>&6 +echo "configure:1791: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +if eval "test \"`echo '$''{'ac_cv_sys_file_offset_bits'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_sys_file_offset_bits=no + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + + + +int main() { + +; return 0; } +EOF +if { (eval echo configure:1808: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + + + +int main() { + +; return 0; } +EOF +if { (eval echo configure:1827: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_sys_file_offset_bits=64 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_sys_file_offset_bits" 1>&6 + if test "$ac_cv_sys_file_offset_bits" != no; then + cat >> confdefs.h <&6 +echo "configure:1847: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +if eval "test \"`echo '$''{'ac_cv_sys_largefile_source'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_sys_largefile_source=no + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + +#include + +int main() { +return !ftello; +; return 0; } +EOF +if { (eval echo configure:1864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + +#include + +int main() { +return !ftello; +; return 0; } +EOF +if { (eval echo configure:1883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_sys_largefile_source=1 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_sys_largefile_source" 1>&6 + if test "$ac_cv_sys_largefile_source" != no; then + cat >> confdefs.h <&6 +echo "configure:1903: checking for _LARGE_FILES value needed for large files" >&5 +if eval "test \"`echo '$''{'ac_cv_sys_large_files'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_sys_large_files=no + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + + + +int main() { + +; return 0; } +EOF +if { (eval echo configure:1920: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + + + +int main() { + +; return 0; } +EOF +if { (eval echo configure:1939: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_sys_large_files=1 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_sys_large_files" 1>&6 + if test "$ac_cv_sys_large_files" != no; then + cat >> confdefs.h <&6 +echo "configure:1959: checking for _XOPEN_SOURCE value needed for large files" >&5 +if eval "test \"`echo '$''{'ac_cv_sys_xopen_source'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_sys_xopen_source=no + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + +#include + +int main() { +return !ftello; +; return 0; } +EOF +if { (eval echo configure:1976: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < + int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1]; + +#include + +int main() { +return !ftello; +; return 0; } +EOF +if { (eval echo configure:1995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_sys_xopen_source=500 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_sys_xopen_source" 1>&6 + if test "$ac_cv_sys_xopen_source" != no; then + cat >> confdefs.h <&6 -echo "configure:1739: checking for a BSD compatible install" >&5 +echo "configure:2028: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1792,7 +2081,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1796: checking for $ac_word" >&5 +echo "configure:2085: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1824,7 +2113,7 @@ # Extract the first word of "docbook-to-man", so it can be a program name with args. set dummy docbook-to-man; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1828: checking for $ac_word" >&5 +echo "configure:2117: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DOCBOOK_TO_MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1861,7 +2150,7 @@ HAVE_DOCBOOK_TO_MAN_FALSE= fi echo $ac_n "checking for faqprog.pl""... $ac_c" 1>&6 -echo "configure:1865: checking for faqprog.pl" >&5 +echo "configure:2154: checking for faqprog.pl" >&5 if faqprog.pl -V 2>/dev/null | grep '^faqprog.pl ' >/dev/null 2>&1; then working_faqprog=yes FAQPROG="faqprog.pl" @@ -1881,24 +2170,63 @@ WORKING_FAQPROG_FALSE= fi - if test $working_faqprog = no; then - echo "configure: warning: -*** -*** It seems that the faqprog.pl program is not installed; -*** however it is only needed if you want to change the FAQ. -*** (faqprog.pl should be available at: -*** ftp://ftp.gnupg.org/pub/gcrypt/contrib/faqprog.pl ) -*** No need to worry about this warning. -***" 1>&2 + + + # Extract the first word of "docbook2texi", so it can be a program name with args. +set dummy docbook2texi; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2179: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_DOCBOOK_TO_TEXI'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$DOCBOOK_TO_TEXI"; then + ac_cv_prog_DOCBOOK_TO_TEXI="$DOCBOOK_TO_TEXI" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_DOCBOOK_TO_TEXI="yes" + break fi - + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_DOCBOOK_TO_TEXI" && ac_cv_prog_DOCBOOK_TO_TEXI="no" +fi +fi +DOCBOOK_TO_TEXI="$ac_cv_prog_DOCBOOK_TO_TEXI" +if test -n "$DOCBOOK_TO_TEXI"; then + echo "$ac_t""$DOCBOOK_TO_TEXI" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + echo $ac_n "checking for sgml to texi tools""... $ac_c" 1>&6 +echo "configure:2207: checking for sgml to texi tools" >&5 + working_sgmltotexi=no + if test "$ac_cv_prog_DOCBOOK_TO_TEXI" = yes; then + if sgml2xml -v /dev/null 2>&1 | grep 'SP version' >/dev/null 2>&1 ; then + working_sgmltotexi=yes + fi + fi + echo "$ac_t""$working_sgmltotexi" 1>&6 + + +if test "$working_sgmltotexi" = "yes" ; then + HAVE_DOCBOOK_TO_TEXI_TRUE= + HAVE_DOCBOOK_TO_TEXI_FALSE='#' +else + HAVE_DOCBOOK_TO_TEXI_TRUE='#' + HAVE_DOCBOOK_TO_TEXI_FALSE= +fi + MPI_OPT_FLAGS="" try_gettext=yes try_gdbm=yes -try_large_file=yes case "${target}" in *-*-mingw32*) # special stuff for Windoze NT @@ -1962,7 +2290,6 @@ if test -z "$GCC" ; then CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE" fi - try_large_file="no" ;; *-dec-osf4*) if test -z "$GCC" ; then @@ -1973,16 +2300,13 @@ ;; m68k-atari-mint) ;; - *-solaris*) - try_large_file="no" - ;; *) ;; esac echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1986: checking for BSD-compatible nm" >&5 +echo "configure:2310: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2018,7 +2342,7 @@ # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6 -echo "configure:2022: checking command to parse $NM output" >&5 +echo "configure:2346: checking command to parse $NM output" >&5 if eval "test \"`echo '$''{'ac_cv_sys_global_symbol_pipe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2081,10 +2405,10 @@ #endif int main(){nm_test_var='a';nm_test_func;return 0;} EOF -if { (eval echo configure:2085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. ac_nlist=conftest.nm - if { (eval echo configure:2088: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then + if { (eval echo configure:2412: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then # Try sorting and uniquifying the output. if sort "$ac_nlist" | uniq > "$ac_nlist"T; then @@ -2142,7 +2466,7 @@ ac_save_CFLAGS="$CFLAGS" LIBS="conftestm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo configure:2146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + if { (eval echo configure:2470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_pipe_works=yes else echo "configure: failed program was:" >&5 @@ -2193,7 +2517,7 @@ if test "$tmp_do_check" = "yes"; then echo $ac_n "checking for _ prefix in compiled symbols""... $ac_c" 1>&6 -echo "configure:2197: checking for _ prefix in compiled symbols" >&5 +echo "configure:2521: checking for _ prefix in compiled symbols" >&5 if eval "test \"`echo '$''{'ac_cv_sys_symbol_underscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2202,10 +2526,10 @@ void nm_test_func(){} int main(){nm_test_func;return 0;} EOF -if { (eval echo configure:2206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. ac_nlist=conftest.nm - if { (eval echo configure:2209: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then + if { (eval echo configure:2533: \"$NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5; } && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if egrep '^_nm_test_func' "$ac_nlist" >/dev/null; then ac_cv_sys_symbol_underscore=yes @@ -2229,7 +2553,7 @@ else echo $ac_n "checking for _ prefix in compiled symbols""... $ac_c" 1>&6 -echo "configure:2233: checking for _ prefix in compiled symbols" >&5 +echo "configure:2557: checking for _ prefix in compiled symbols" >&5 fi echo "$ac_t""$ac_cv_sys_symbol_underscore" 1>&6 if test x$ac_cv_sys_symbol_underscore = xyes; then @@ -2240,7 +2564,7 @@ fi echo $ac_n "checking for option to create PIC""... $ac_c" 1>&6 -echo "configure:2244: checking for option to create PIC" >&5 +echo "configure:2568: checking for option to create PIC" >&5 CFLAGS_PIC= NO_PIC=no if test "$cross_compiling" = yes; then @@ -2305,7 +2629,7 @@ fi echo $ac_n "checking how to specify -export-dynamic""... $ac_c" 1>&6 -echo "configure:2309: checking how to specify -export-dynamic" >&5 +echo "configure:2633: checking how to specify -export-dynamic" >&5 if test "$cross_compiling" = yes; then echo "$ac_t""assume none" 1>&6 CFLAGS_EXPORTDYNAMIC="" @@ -2315,7 +2639,7 @@ else if { ac_try='${CC-cc} $CFLAGS -Wl,--version 2>&1 | - grep "GNU ld" >/dev/null'; { (eval echo configure:2319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + grep "GNU ld" >/dev/null'; { (eval echo configure:2643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then # using gnu's linker gnupg_cv_export_dynamic="-Wl,-export-dynamic" else @@ -2418,7 +2742,7 @@ # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2422: checking for $ac_word" >&5 +echo "configure:2746: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2446,12 +2770,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2450: checking for ANSI C header files" >&5 +echo "configure:2774: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2459,7 +2783,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2787: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2476,7 +2800,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2494,7 +2818,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2515,7 +2839,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2526,7 +2850,7 @@ exit (0); } EOF -if { (eval echo configure:2530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2550,18 +2874,18 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2554: checking for working const" >&5 +echo "configure:2878: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2625,21 +2949,21 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2629: checking for inline" >&5 +echo "configure:2953: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2665,12 +2989,12 @@ esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:2669: checking for off_t" >&5 +echo "configure:2993: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2698,12 +3022,12 @@ fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2702: checking for size_t" >&5 +echo "configure:3026: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2733,19 +3057,19 @@ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:2737: checking for working alloca.h" >&5 +echo "configure:3061: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { -void *p = alloca(2 * sizeof(int)); +char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:2749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -2766,12 +3090,12 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:2770: checking for alloca" >&5 +echo "configure:3094: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -2831,12 +3155,12 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:2835: checking whether alloca needs Cray hooks" >&5 +echo "configure:3159: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:2865: checking for $ac_func" >&5 +echo "configure:3189: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2916,7 +3240,7 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2920: checking stack direction for C alloca" >&5 +echo "configure:3244: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2924,7 +3248,7 @@ ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -2968,17 +3292,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2972: checking for $ac_hdr" >&5 +echo "configure:3296: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2982: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3007,12 +3331,12 @@ for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3011: checking for $ac_func" >&5 +echo "configure:3335: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3060,7 +3384,7 @@ done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3064: checking for working mmap" >&5 +echo "configure:3388: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3068,7 +3392,7 @@ ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext < #include #include -#include -#include - -#ifdef HAVE_UNISTD_H -# include -#endif /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE +# ifdef HAVE_UNISTD_H +# include +# endif /* Assume that all systems that can run configure have sys/param.h. */ # ifndef HAVE_SYS_PARAM_H @@ -3158,7 +3479,7 @@ /* * First, make a file with some known garbage in it. */ - data = (char*)malloc(pagesize); + data = malloc(pagesize); if (!data) exit(1); for (i = 0; i < pagesize; ++i) @@ -3179,7 +3500,7 @@ fd = open("conftestmmap", O_RDWR); if (fd < 0) exit(1); - data2 = (char*)malloc(2 * pagesize); + data2 = malloc(2 * pagesize); if (!data2) exit(1); data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); @@ -3197,7 +3518,7 @@ */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; - data3 = (char*)malloc(pagesize); + data3 = malloc(pagesize); if (!data3) exit(1); if (read(fd, data3, pagesize) != pagesize) @@ -3211,7 +3532,7 @@ } EOF -if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -3239,17 +3560,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3243: checking for $ac_hdr" >&5 +echo "configure:3564: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3279,12 +3600,12 @@ strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3283: checking for $ac_func" >&5 +echo "configure:3604: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3336,12 +3657,12 @@ for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3340: checking for $ac_func" >&5 +echo "configure:3661: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3398,19 +3719,19 @@ if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3402: checking for LC_MESSAGES" >&5 +echo "configure:3723: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:3414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -3431,7 +3752,7 @@ fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3435: checking whether NLS is requested" >&5 +echo "configure:3756: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -3451,7 +3772,7 @@ EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3455: checking whether included gettext is requested" >&5 +echo "configure:3776: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -3470,17 +3791,17 @@ ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3474: checking for libintl.h" >&5 +echo "configure:3795: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3805: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3497,19 +3818,19 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:3501: checking for gettext in libc" >&5 +echo "configure:3822: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:3513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -3525,7 +3846,7 @@ if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:3529: checking for bindtextdomain in -lintl" >&5 +echo "configure:3850: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3533,7 +3854,7 @@ ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3560,12 +3881,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:3564: checking for gettext in libintl" >&5 +echo "configure:3885: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:3569: checking for gettext in -lintl" >&5 +echo "configure:3890: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3573,7 +3894,7 @@ ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3623,7 +3944,7 @@ # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3627: checking for $ac_word" >&5 +echo "configure:3948: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3657,12 +3978,12 @@ for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3661: checking for $ac_func" >&5 +echo "configure:3982: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3712,7 +4033,7 @@ # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3716: checking for $ac_word" >&5 +echo "configure:4037: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3748,7 +4069,7 @@ # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3752: checking for $ac_word" >&5 +echo "configure:4073: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3780,7 +4101,7 @@ fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -3811,7 +4132,7 @@ if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 -echo "configure:3815: checking whether catgets can be used" >&5 +echo "configure:4136: checking whether catgets can be used" >&5 # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" @@ -3824,7 +4145,7 @@ if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 -echo "configure:3828: checking for main in -li" >&5 +echo "configure:4149: checking for main in -li" >&5 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3832,14 +4153,14 @@ ac_save_LIBS="$LIBS" LIBS="-li $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3867,12 +4188,12 @@ fi echo $ac_n "checking for catgets""... $ac_c" 1>&6 -echo "configure:3871: checking for catgets" >&5 +echo "configure:4192: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else @@ -3917,7 +4238,7 @@ # Extract the first word of "gencat", so it can be a program name with args. set dummy gencat; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3921: checking for $ac_word" >&5 +echo "configure:4242: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3953,7 +4274,7 @@ # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3957: checking for $ac_word" >&5 +echo "configure:4278: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3990,7 +4311,7 @@ # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3994: checking for $ac_word" >&5 +echo "configure:4315: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4025,7 +4346,7 @@ # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4029: checking for $ac_word" >&5 +echo "configure:4350: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4083,7 +4404,7 @@ # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4087: checking for $ac_word" >&5 +echo "configure:4408: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4117,7 +4438,7 @@ # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4121: checking for $ac_word" >&5 +echo "configure:4442: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4153,7 +4474,7 @@ # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4157: checking for $ac_word" >&5 +echo "configure:4478: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4246,7 +4567,7 @@ LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4250: checking for catalogs to be installed" >&5 +echo "configure:4571: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -4274,17 +4595,17 @@ if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:4278: checking for linux/version.h" >&5 +echo "configure:4599: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4360,17 +4681,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4364: checking for $ac_hdr" >&5 +echo "configure:4685: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4695: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4398,7 +4719,7 @@ if test "$ac_cv_header_gdbm_h" = yes ; then echo $ac_n "checking for gdbm_firstkey in -lgdbm""... $ac_c" 1>&6 -echo "configure:4402: checking for gdbm_firstkey in -lgdbm" >&5 +echo "configure:4723: checking for gdbm_firstkey in -lgdbm" >&5 ac_lib_var=`echo gdbm'_'gdbm_firstkey | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4406,7 +4727,7 @@ ac_save_LIBS="$LIBS" LIBS="-lgdbm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4447,9 +4768,13 @@ fi fi - -echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:4453: checking for gethostbyname in -lnsl" >&5 +case "${target}" in + i386-univel-sysv4*) + LIBS="$LIBS -lsocket -lnsl" + ;; + *) + echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:4778: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4457,7 +4782,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4495,8 +4820,8 @@ echo "$ac_t""no" 1>&6 fi -echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:4500: checking for socket in -lsocket" >&5 + echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +echo "configure:4825: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4504,7 +4829,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4536,12 +4861,12 @@ ac_try_nsl=1 fi -if test x$ac_need_libsocket = x1; then - LIBS="$LIBS -lsocket" -fi -if test x$ac_try_nsl = x1; then - echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:4545: checking for gethostbyname in -lnsl" >&5 + if test x$ac_need_libsocket = x1; then + LIBS="$LIBS -lsocket" + fi + if test x$ac_try_nsl = x1; then + echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:4870: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4549,7 +4874,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4580,16 +4905,18 @@ echo "$ac_t""no" 1>&6 fi - if test x$ac_need_libnsl = x1 - then - LIBS="$LIBS -lnsl" - fi -fi + if test x$ac_need_libnsl = x1 + then + LIBS="$LIBS -lnsl" + fi + fi + ;; +esac if test "$try_dynload" = yes ; then echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:4593: checking for dlopen in -ldl" >&5 +echo "configure:4920: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4597,7 +4924,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4650,12 +4977,12 @@ for ac_func in dlopen do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4654: checking for $ac_func" >&5 +echo "configure:4981: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4715,7 +5042,7 @@ use_gnupg_extensions=yes else echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:4719: checking for shl_load in -ldld" >&5 +echo "configure:5046: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4723,7 +5050,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4777,7 +5104,7 @@ fi else echo $ac_n "checking for dynamic loading""... $ac_c" 1>&6 -echo "configure:4781: checking for dynamic loading" >&5 +echo "configure:5108: checking for dynamic loading" >&5 DYNLINK_LDFLAGS= DYNLINK_MOD_CFLAGS= use_gnupg_extensions=no @@ -4798,12 +5125,12 @@ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:4802: checking for ANSI C header files" >&5 +echo "configure:5129: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4811,7 +5138,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4828,7 +5155,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -4846,7 +5173,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -4867,7 +5194,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -4878,7 +5205,7 @@ exit (0); } EOF -if { (eval echo configure:4882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -4905,17 +5232,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4909: checking for $ac_hdr" >&5 +echo "configure:5236: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4944,18 +5271,18 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:4948: checking for working const" >&5 +echo "configure:5275: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -5019,21 +5346,21 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:5023: checking for inline" >&5 +echo "configure:5350: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5364: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -5059,12 +5386,12 @@ esac echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:5063: checking for size_t" >&5 +echo "configure:5390: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -5092,12 +5419,12 @@ fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:5096: checking return type of signal handlers" >&5 +echo "configure:5423: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5114,7 +5441,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:5118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -5133,12 +5460,12 @@ echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:5137: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:5464: checking for sys_siglist declaration in signal.h or unistd.h" >&5 if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5150,7 +5477,7 @@ char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:5154: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -5175,14 +5502,14 @@ echo "configure: warning: cross compiling; assuming little endianess" 1>&2 fi echo $ac_n "checking endianess""... $ac_c" 1>&6 -echo "configure:5179: checking endianess" >&5 +echo "configure:5506: checking endianess" >&5 if eval "test \"`echo '$''{'gnupg_cv_c_endian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else gnupg_cv_c_endian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -5193,11 +5520,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:5197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -5208,7 +5535,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:5212: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_c_endian=big else @@ -5229,7 +5556,7 @@ else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gnupg_cv_c_endian=little else @@ -5274,14 +5601,15 @@ echo $ac_n "checking for byte typedef""... $ac_c" 1>&6 -echo "configure:5278: checking for byte typedef" >&5 +echo "configure:5605: checking for byte typedef" >&5 if eval "test \"`echo '$''{'gnupg_cv_typedef_byte'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#define _GNU_SOURCE 1 + #include #include int main() { @@ -5290,7 +5618,7 @@ ; return 0; } EOF -if { (eval echo configure:5294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_typedef_byte=yes else @@ -5311,14 +5639,15 @@ fi echo $ac_n "checking for ushort typedef""... $ac_c" 1>&6 -echo "configure:5315: checking for ushort typedef" >&5 +echo "configure:5643: checking for ushort typedef" >&5 if eval "test \"`echo '$''{'gnupg_cv_typedef_ushort'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#define _GNU_SOURCE 1 + #include #include int main() { @@ -5327,7 +5656,7 @@ ; return 0; } EOF -if { (eval echo configure:5331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_typedef_ushort=yes else @@ -5348,14 +5677,15 @@ fi echo $ac_n "checking for ulong typedef""... $ac_c" 1>&6 -echo "configure:5352: checking for ulong typedef" >&5 +echo "configure:5681: checking for ulong typedef" >&5 if eval "test \"`echo '$''{'gnupg_cv_typedef_ulong'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#define _GNU_SOURCE 1 + #include #include int main() { @@ -5364,7 +5694,7 @@ ; return 0; } EOF -if { (eval echo configure:5368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5698: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_typedef_ulong=yes else @@ -5385,14 +5715,15 @@ fi echo $ac_n "checking for u16 typedef""... $ac_c" 1>&6 -echo "configure:5389: checking for u16 typedef" >&5 +echo "configure:5719: checking for u16 typedef" >&5 if eval "test \"`echo '$''{'gnupg_cv_typedef_u16'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#define _GNU_SOURCE 1 + #include #include int main() { @@ -5401,7 +5732,7 @@ ; return 0; } EOF -if { (eval echo configure:5405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5736: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_typedef_u16=yes else @@ -5422,14 +5753,15 @@ fi echo $ac_n "checking for u32 typedef""... $ac_c" 1>&6 -echo "configure:5426: checking for u32 typedef" >&5 +echo "configure:5757: checking for u32 typedef" >&5 if eval "test \"`echo '$''{'gnupg_cv_typedef_u32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#define _GNU_SOURCE 1 + #include #include int main() { @@ -5438,7 +5770,7 @@ ; return 0; } EOF -if { (eval echo configure:5442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_typedef_u32=yes else @@ -5460,7 +5792,7 @@ echo $ac_n "checking size of unsigned short""... $ac_c" 1>&6 -echo "configure:5464: checking size of unsigned short" >&5 +echo "configure:5796: checking size of unsigned short" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_short'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5468,9 +5800,10 @@ ac_cv_sizeof_unsigned_short=2 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -5479,7 +5812,7 @@ exit(0); } EOF -if { (eval echo configure:5483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_unsigned_short=`cat conftestval` else @@ -5499,7 +5832,7 @@ echo $ac_n "checking size of unsigned int""... $ac_c" 1>&6 -echo "configure:5503: checking size of unsigned int" >&5 +echo "configure:5836: checking size of unsigned int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5507,9 +5840,10 @@ ac_cv_sizeof_unsigned_int=4 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -5518,7 +5852,7 @@ exit(0); } EOF -if { (eval echo configure:5522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_unsigned_int=`cat conftestval` else @@ -5538,7 +5872,7 @@ echo $ac_n "checking size of unsigned long""... $ac_c" 1>&6 -echo "configure:5542: checking size of unsigned long" >&5 +echo "configure:5876: checking size of unsigned long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5546,9 +5880,10 @@ ac_cv_sizeof_unsigned_long=4 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -5557,7 +5892,7 @@ exit(0); } EOF -if { (eval echo configure:5561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_unsigned_long=`cat conftestval` else @@ -5577,7 +5912,7 @@ echo $ac_n "checking size of unsigned long long""... $ac_c" 1>&6 -echo "configure:5581: checking size of unsigned long long" >&5 +echo "configure:5916: checking size of unsigned long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5585,9 +5920,10 @@ ac_cv_sizeof_unsigned_long_long=0 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -5596,7 +5932,7 @@ exit(0); } EOF -if { (eval echo configure:5600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_unsigned_long_long=`cat conftestval` else @@ -5625,12 +5961,12 @@ echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:5629: checking for vprintf" >&5 +echo "configure:5965: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -5677,12 +6013,12 @@ if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:5681: checking for _doprnt" >&5 +echo "configure:6017: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -5732,12 +6068,12 @@ for ac_func in strerror stpcpy strlwr stricmp tcgetattr rand strtoul mmap do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5736: checking for $ac_func" >&5 +echo "configure:6072: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5787,12 +6123,12 @@ for ac_func in memmove gettimeofday getrusage gethrtime setrlimit clock_gettime do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5791: checking for $ac_func" >&5 +echo "configure:6127: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5842,12 +6178,12 @@ for ac_func in memicmp atexit raise getpagesize strftime nl_langinfo do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5846: checking for $ac_func" >&5 +echo "configure:6182: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5894,15 +6230,15 @@ fi done -for ac_func in waitpid wait4 sigaction sigprocmask +for ac_func in waitpid wait4 sigaction sigprocmask fseeko do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5901: checking for $ac_func" >&5 +echo "configure:6237: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5950,73 +6286,15 @@ done -if test $try_large_file = "yes"; then -for ac_func in fopen64 fstat64 -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5958: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:5986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -fi - for ac_func in mlock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6015: checking for $ac_func" >&5 +echo "configure:6293: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6068,17 +6346,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6072: checking for $ac_hdr" >&5 +echo "configure:6350: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6107,7 +6385,7 @@ if test "$ac_cv_header_sys_mman_h" = "yes"; then # Add librt to LIBS: echo $ac_n "checking for memlk in -lrt""... $ac_c" 1>&6 -echo "configure:6111: checking for memlk in -lrt" >&5 +echo "configure:6389: checking for memlk in -lrt" >&5 ac_lib_var=`echo rt'_'memlk | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6115,7 +6393,7 @@ ac_save_LIBS="$LIBS" LIBS="-lrt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6154,12 +6432,12 @@ fi echo $ac_n "checking whether mlock is in sys/mman.h""... $ac_c" 1>&6 -echo "configure:6158: checking whether mlock is in sys/mman.h" >&5 +echo "configure:6436: checking whether mlock is in sys/mman.h" >&5 if eval "test \"`echo '$''{'gnupg_cv_mlock_is_in_sys_mman'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6184,7 +6462,7 @@ ; return 0; } EOF -if { (eval echo configure:6188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gnupg_cv_mlock_is_in_sys_mman=yes else @@ -6207,7 +6485,7 @@ fi if test "$ac_cv_func_mlock" = "yes"; then echo $ac_n "checking whether mlock is broken""... $ac_c" 1>&6 -echo "configure:6211: checking whether mlock is broken" >&5 +echo "configure:6489: checking whether mlock is broken" >&5 if eval "test \"`echo '$''{'gnupg_cv_have_broken_mlock'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6216,7 +6494,7 @@ else cat > conftest.$ac_ext < @@ -6246,7 +6524,7 @@ EOF -if { (eval echo configure:6250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gnupg_cv_have_broken_mlock="no" else @@ -6280,17 +6558,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6284: checking for $ac_hdr" >&5 +echo "configure:6562: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6294: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6317,12 +6595,12 @@ done echo $ac_n "checking if mkdir takes one argument""... $ac_c" 1>&6 -echo "configure:6321: checking if mkdir takes one argument" >&5 +echo "configure:6599: checking if mkdir takes one argument" >&5 if eval "test \"`echo '$''{'gnupg_cv_mkdir_takes_one_arg'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6339,7 +6617,7 @@ mkdir ("foo", 0); ; return 0; } EOF -if { (eval echo configure:6343: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6621: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_mkdir_takes_one_arg=no else @@ -6366,17 +6644,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6370: checking for $ac_hdr" >&5 +echo "configure:6648: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6658: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6404,7 +6682,7 @@ if test "$ac_cv_header_sys_capability_h" = "yes" ; then echo $ac_n "checking for cap_init in -lcap""... $ac_c" 1>&6 -echo "configure:6408: checking for cap_init in -lcap" >&5 +echo "configure:6686: checking for cap_init in -lcap" >&5 ac_lib_var=`echo cap'_'cap_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6412,7 +6690,7 @@ ac_save_LIBS="$LIBS" LIBS="-lcap $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6471,17 +6749,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6475: checking for $ac_hdr" >&5 +echo "configure:6753: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6763: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6509,7 +6787,7 @@ if test "$ac_cv_header_sys_shm_h" = "yes"; then echo $ac_n "checking whether IPC_RMID allowes subsequent attaches""... $ac_c" 1>&6 -echo "configure:6513: checking whether IPC_RMID allowes subsequent attaches" >&5 +echo "configure:6791: checking whether IPC_RMID allowes subsequent attaches" >&5 if eval "test \"`echo '$''{'gnupg_cv_ipc_rmid_deferred_release'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6517,7 +6795,7 @@ gnupg_cv_ipc_rmid_deferred_release="assume-no" else cat > conftest.$ac_ext < @@ -6543,7 +6821,7 @@ } EOF -if { (eval echo configure:6547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then gnupg_cv_ipc_rmid_deferred_release="yes" else @@ -6573,12 +6851,12 @@ fi echo $ac_n "checking whether SHM_LOCK is available""... $ac_c" 1>&6 -echo "configure:6577: checking whether SHM_LOCK is available" >&5 +echo "configure:6855: checking whether SHM_LOCK is available" >&5 if eval "test \"`echo '$''{'gnupg_cv_ipc_have_shm_lock'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6590,7 +6868,7 @@ ; return 0; } EOF -if { (eval echo configure:6594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gnupg_cv_ipc_have_shm_lock="yes" else @@ -6624,7 +6902,7 @@ if test "$try_dev_random" = yes ; then echo $ac_n "checking for random device""... $ac_c" 1>&6 -echo "configure:6628: checking for random device" >&5 +echo "configure:6906: checking for random device" >&5 if eval "test \"`echo '$''{'ac_cv_have_dev_random'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6641,7 +6919,7 @@ fi else echo $ac_n "checking for random device""... $ac_c" 1>&6 -echo "configure:6645: checking for random device" >&5 +echo "configure:6923: checking for random device" >&5 ac_cv_have_dev_random=no echo "$ac_t""has been disabled" 1>&6 fi @@ -6651,17 +6929,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6655: checking for $ac_hdr" >&5 +echo "configure:6933: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6688,7 +6966,7 @@ done echo $ac_n "checking for random device ioctl""... $ac_c" 1>&6 -echo "configure:6692: checking for random device ioctl" >&5 +echo "configure:6970: checking for random device ioctl" >&5 if eval "test \"`echo '$''{'ac_cv_have_dev_random_ioctl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6842,7 +7120,7 @@ echo $ac_n "checking for mpi assembler functions""... $ac_c" 1>&6 -echo "configure:6846: checking for mpi assembler functions" >&5 +echo "configure:7124: checking for mpi assembler functions" >&5 if test -f $srcdir/mpi/config.links ; then . $srcdir/mpi/config.links if test "x$wk_link_files_src" = "x"; then @@ -6884,17 +7162,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6888: checking for $ac_hdr" >&5 +echo "configure:7166: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7176: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6922,7 +7200,7 @@ if test "$ac_cv_header_zlib_h" = yes ; then echo $ac_n "checking for deflateInit2_ in -lz""... $ac_c" 1>&6 -echo "configure:6926: checking for deflateInit2_ in -lz" >&5 +echo "configure:7204: checking for deflateInit2_ in -lz" >&5 ac_lib_var=`echo z'_'deflateInit2_ | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6930,7 +7208,7 @@ ac_save_LIBS="$LIBS" LIBS="-lz $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7046,6 +7324,17 @@ fi +# add some extra libs here so that previous tests don't fail for +# mysterious reasons - the final link step shoudl bail out. +case "${target}" in + *-*-mingw32*) + LIBS="$LIBS -lwsock32" + ;; + *) + ;; +esac + + if test "$GCC" = yes; then if test "$MAINTAINER_MODE" = "yes"; then CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes" @@ -7240,6 +7529,9 @@ s%@FAQPROG@%$FAQPROG%g s%@WORKING_FAQPROG_TRUE@%$WORKING_FAQPROG_TRUE%g s%@WORKING_FAQPROG_FALSE@%$WORKING_FAQPROG_FALSE%g +s%@DOCBOOK_TO_TEXI@%$DOCBOOK_TO_TEXI%g +s%@HAVE_DOCBOOK_TO_TEXI_TRUE@%$HAVE_DOCBOOK_TO_TEXI_TRUE%g +s%@HAVE_DOCBOOK_TO_TEXI_FALSE@%$HAVE_DOCBOOK_TO_TEXI_FALSE%g s%@MPI_OPT_FLAGS@%$MPI_OPT_FLAGS%g s%@NM@%$NM%g s%@RANLIB@%$RANLIB%g diff -urN gnupg-1.0.4/configure.in gnupg-1.0.5/configure.in --- gnupg-1.0.4/configure.in Tue Oct 17 15:29:31 2000 +++ gnupg-1.0.5/configure.in Tue Apr 17 18:20:17 2001 @@ -1,8 +1,24 @@ +dnl Configure script for GnuPG +dnl Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. dnl -dnl Configure template for GNUPG +dnl This file is part of GnuPG. +dnl +dnl GnuPG is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl GnuPG is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA dnl dnl (Process this file with autoconf to produce a configure script.) -AC_REVISION($Revision: 1.103.2.27 $)dnl +AC_REVISION($Revision: 1.103.2.33 $)dnl dnl Must reset CDPATH so that bash's cd does not print to stdout CDPATH= @@ -15,7 +31,7 @@ AM_INIT_AUTOMAKE(gnupg,`cat $srcdir/VERSION`) -ALL_LINGUAS="da de eo es_ES fr id it ja nl pl pt_BR pt_PT ru sv" +ALL_LINGUAS="da de eo es_ES et fr id it ja nl pl pt_BR pt_PT ru sv tr" static_modules="sha1 md5 rmd160" static_random_module="" @@ -81,21 +97,11 @@ try_asm_modules=$enableval, try_asm_modules=yes) AC_MSG_RESULT($try_asm_modules) -AC_MSG_CHECKING([whether memory debugging is requested]) -AC_ARG_ENABLE(m-debug, -[ --enable-m-debug enable debugging of memory allocation], -use_m_debug=$enableval, use_m_debug=no) -AC_MSG_RESULT($use_m_debug) -if test "$use_m_debug" = yes; then - AC_DEFINE(M_DEBUG) - use_m_guard=yes -else - AC_MSG_CHECKING([whether memory guard is requested]) - AC_ARG_ENABLE(m-guard, +AC_MSG_CHECKING([whether memory guard is requested]) +AC_ARG_ENABLE(m-guard, [ --enable-m-guard enable memory guard facility], use_m_guard=$enableval, use_m_guard=no) - AC_MSG_RESULT($use_m_guard) -fi +AC_MSG_RESULT($use_m_guard) if test "$use_m_guard" = yes ; then AC_DEFINE(M_GUARD) fi @@ -130,12 +136,6 @@ dnl case "${target}" in *-*-mingw32*) - # special stuff for Windoze NT - # Do we need to set cross_compiling here or is it sufficient - # to rely on AC_PROG_CC which is called later? - CC="${target}-gcc" - CPP="${target}-gcc -E" - RANLIB="${target}-ranlib" disallowed_modules="rndunix rndlinux rndegd" ;; *) @@ -151,22 +151,23 @@ AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_PROG_CC AC_PROG_CPP AC_ISC_POSIX +AC_SYS_LARGEFILE AC_PROG_INSTALL AC_PROG_AWK AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no) AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes) GNUPG_CHECK_FAQPROG +GNUPG_CHECK_DOCBOOK_TO_TEXI MPI_OPT_FLAGS="" try_gettext=yes try_gdbm=yes -try_large_file=yes case "${target}" in *-*-mingw32*) # special stuff for Windoze NT @@ -206,7 +207,6 @@ if test -z "$GCC" ; then CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE" fi - try_large_file="no" ;; *-dec-osf4*) if test -z "$GCC" ; then @@ -217,9 +217,6 @@ ;; m68k-atari-mint) ;; - *-solaris*) - try_large_file="no" - ;; *) ;; esac @@ -321,21 +318,28 @@ fi fi - dnl Solaris needs -lsocket and -lnsl. Unisys system includes dnl gethostbyname in libsocket but needs libnsl for socket. -AC_CHECK_LIB(nsl, gethostbyname) -AC_CHECK_LIB(socket, socket, ac_need_libsocket=1, ac_try_nsl=1) -if test x$ac_need_libsocket = x1; then - LIBS="$LIBS -lsocket" -fi -if test x$ac_try_nsl = x1; then - AC_CHECK_LIB(nsl, gethostbyname, ac_need_libnsl=1) - if test x$ac_need_libnsl = x1 - then - LIBS="$LIBS -lnsl" - fi -fi +dnl The test does not workfor all system, so some are hardcoded here. +case "${target}" in + i386-univel-sysv4*) + LIBS="$LIBS -lsocket -lnsl" + ;; + *) + AC_CHECK_LIB(nsl, gethostbyname) + AC_CHECK_LIB(socket, socket, ac_need_libsocket=1, ac_try_nsl=1) + if test x$ac_need_libsocket = x1; then + LIBS="$LIBS -lsocket" + fi + if test x$ac_try_nsl = x1; then + AC_CHECK_LIB(nsl, gethostbyname, ac_need_libnsl=1) + if test x$ac_need_libnsl = x1 + then + LIBS="$LIBS -lnsl" + fi + fi + ;; +esac if test "$try_dynload" = yes ; then @@ -424,11 +428,7 @@ AC_CHECK_FUNCS(strerror stpcpy strlwr stricmp tcgetattr rand strtoul mmap) AC_CHECK_FUNCS(memmove gettimeofday getrusage gethrtime setrlimit clock_gettime) AC_CHECK_FUNCS(memicmp atexit raise getpagesize strftime nl_langinfo) -AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask) - -if test $try_large_file = "yes"; then -AC_CHECK_FUNCS(fopen64 fstat64) -fi +AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask fseeko) GNUPG_CHECK_MLOCK GNUPG_FUNC_MKDIR_TAKES_ONE_ARG @@ -706,6 +706,17 @@ GNUPG_DO_LINK_FILES GNUPG_CHECK_GNUMAKE + +# add some extra libs here so that previous tests don't fail for +# mysterious reasons - the final link step shoudl bail out. +case "${target}" in + *-*-mingw32*) + LIBS="$LIBS -lwsock32" + ;; + *) + ;; +esac + if test "$GCC" = yes; then if test "$MAINTAINER_MODE" = "yes"; then diff -urN gnupg-1.0.4/debian/changelog gnupg-1.0.5/debian/changelog --- gnupg-1.0.4/debian/changelog Mon Oct 16 17:43:42 2000 +++ gnupg-1.0.5/debian/changelog Thu Mar 8 19:31:02 2001 @@ -1,3 +1,40 @@ +gnupg (1.0.4-3) unstable; urgency=medium + + * debian/rules (binary): make gpg binary suid, closes: #86433. + * debian/postinst: don't use suidregister. + * debian/postrm: removed (only called suidunregister). + * debian/control: conflict with suidmanager << 0.50. + * mpi/longlong.h: apply fix for ARM long long artimetic from Philip + Blundell , closes: #87487. + * debian/preinst: the old GnuPG debs have moved to people.debian.org. + * cipher/random.c: #include as well as + * g10/misc.c: likewise. + * debian/rules: define a strip alias which removes the .comment and + .note sections. + * debian/rules (binary-arch): use it. + * debian/lintian.override: new file; override the SUID warning from + lintian. + * debian/rules (binary-arch): install it. + + -- James Troup Sun, 25 Feb 2001 05:24:58 +0000 + +gnupg (1.0.4-2) stable unstable; urgency=high + + * Apply security fix patch from Werner. + * Apply another patch from Werner to fix bogus warning on Rijndael + usage. + * Change section to 'non-US'. + + -- James Troup Mon, 12 Feb 2001 07:47:02 +0000 + +gnupg (1.0.4-1) stable unstable; urgency=high + + * New upstream version. + * Fixes a serious bug which could lead to false signature verification + results when more than one signature is fed to gpg. + + -- James Troup Tue, 17 Oct 2000 17:26:17 +0100 + gnupg (1.0.3b-1) unstable; urgency=low * New upstream snapshot version. diff -urN gnupg-1.0.4/debian/control gnupg-1.0.5/debian/control --- gnupg-1.0.4/debian/control Mon Oct 16 17:43:42 2000 +++ gnupg-1.0.5/debian/control Thu Mar 8 19:31:02 2001 @@ -1,5 +1,5 @@ Source: gnupg -Section: utils +Section: non-US Priority: optional Maintainer: James Troup Standards-Version: 3.1.1.1 @@ -9,7 +9,7 @@ Architecture: any Depends: ${shlibs:Depends}, makedev (>= 2.3.1-13) Suggests: gnupg-doc -Conflicts: gpg-rsa, gpg-rsaref +Conflicts: gpg-rsa, gpg-rsaref, suidmanager (<< 0.50) Replaces: gpg-rsa, gpg-rsaref Provides: gpg-rsa, gpg-rsaref Description: GNU privacy guard - a free PGP replacement. diff -urN gnupg-1.0.4/debian/preinst gnupg-1.0.5/debian/preinst --- gnupg-1.0.4/debian/preinst Sat Jan 9 16:06:49 1999 +++ gnupg-1.0.5/debian/preinst Thu Mar 8 19:31:02 2001 @@ -34,7 +34,7 @@ If at any stage you need a pre-0.3.3 gnupg, you can find source and binaries for i386, m68k, alpha, powerpc and hurd-i386 at - http://james.nocrew.org/gnupg/ + http://people.debian.org/~troup/gnupg/ Press return to continue EOF diff -urN gnupg-1.0.4/debian/rules gnupg-1.0.5/debian/rules --- gnupg-1.0.4/debian/rules Mon Oct 16 17:43:42 2000 +++ gnupg-1.0.5/debian/rules Thu Mar 8 19:31:02 2001 @@ -9,6 +9,8 @@ # paternity under the Copyright, Designs and Patents Act 1988.) # This file may have to be extensively modified +STRIP=strip --remove-section=.comment --remove-section=.note + build: $(checkdir) ./configure --prefix=/usr --with-included-gettext @@ -34,11 +36,12 @@ install -d debian/tmp/DEBIAN/ install -m 755 debian/preinst debian/prerm debian/postinst debian/postrm debian/tmp/DEBIAN/ $(MAKE) prefix=`pwd`/debian/tmp/usr mandir=`pwd`/debian/tmp/usr/share/man install - strip debian/tmp/usr/bin/* + $(STRIP) debian/tmp/usr/bin/* + chmod 4755 debian/tmp/usr/bin/gpg chmod 644 debian/tmp/usr/lib/gnupg/* sed -e "s#../g10/gpg#gpg#" < tools/lspgpot > debian/tmp/usr/bin/lspgpot chmod 755 debian/tmp/usr/bin/lspgpot - strip --strip-unneeded debian/tmp/usr/lib/gnupg/* + $(STRIP) --strip-unneeded debian/tmp/usr/lib/gnupg/* # In response to #53714... no idea if it's correct, will check with upstream mv debian/tmp/usr/share/locale/es_ES debian/tmp/usr/share/locale/es sed -e "s#/usr/local/#/usr/#" < debian/tmp/usr/share/man/man1/gpg.1 \ @@ -57,6 +60,8 @@ gzip -9v debian/tmp/usr/share/doc/gnupg/* ln -s changelog.g10.gz debian/tmp/usr/share/doc/gnupg/changelog.gz install -m 644 debian/copyright debian/tmp/usr/share/doc/gnupg/ + install -d debian/tmp/usr/share/lintian/overrides/ + install -m 644 debian/lintian.override debian/tmp/usr/share/lintian/overrides/gnupg dpkg-shlibdeps g10/gpg dpkg-gencontrol -isp chown -R root.root debian/tmp diff -urN gnupg-1.0.4/doc/ChangeLog gnupg-1.0.5/doc/ChangeLog --- gnupg-1.0.4/doc/ChangeLog Sat Oct 14 18:19:16 2000 +++ gnupg-1.0.5/doc/ChangeLog Fri Apr 20 16:13:08 2001 @@ -1,3 +1,70 @@ +2001-04-20 Werner Koch + + * faq.raw (Maintained-by): Removed note that load-extension is not + available under Windoze. + + * gpg.sgml: Add new --charset UTF-8. + +2001-04-19 Werner Koch + + * faq.raw: Add a note about dates displayed as ????-??-??. + +2001-04-17 Werner Koch + + * Makefile.am (%.texi): Add rules to create .texi from .sgml. + However we can't automate this because automake does not like + .texi files as BUILT_SOURCES. + (%.dvi,%.ps): Removed these rules, because they are not needed + and get in the way of automake's dvi target + + * HACKING: Changed CVS description. + +2001-04-06 Werner Koch + + * gpg.sgml: Small typo fixes by Florian Weimer. + +2001-03-27 Werner Koch + + * gpg.sgml: Add --no-sig-cache and --no-sig-create-check. + +2001-03-23 Werner Koch + + * DETAILS: New status UNEXPECTED. + +2001-03-13 Werner Koch + + * gpg.sgml: Described --fixed-list-mode. + +2001-03-06 Werner Koch + + * gpgv.sgml: Changed some gpg to gpgv. Thanks to John A. Murdie. + +2001-03-03 Werner Koch + + * gpg.sgml: Tell something about the 0x12345678! key ID syntax. + +2001-01-18 Werner Koch + + * README.W32: Changed building instructions for MinGW32/CPD 0.3 + +2001-01-09 Werner Koch + + * DETAILS: Fixed docs for NEED_PASSPHRASE and added USERID_HINT. + +2000-11-30 Werner Koch + + * gpg.sgml: Fixed the description of --verify. Add a short note + the warnings sections. + +2000-10-19 Werner Koch + + * gpg.sgml: Fixed doc for --allow-non-selfsigned-uid. + Add entry for --ignore-crc-error. + +2000-10-18 Werner Koch + + * OpenPGP: Dropped the paragraph that RSA is not implemented. + 2000-10-14 Werner Koch * faq.raw: Add an answer to the problem of multiple signatures. @@ -88,4 +155,16 @@ * gpg.1pod: Spelling and grammar corrections (John A. Martin) * FAQ: Ditto. * DETAILS: Ditto. + + + Copyright 1998, 1999, 2000, 2001 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. + diff -urN gnupg-1.0.4/doc/DETAILS gnupg-1.0.5/doc/DETAILS --- gnupg-1.0.4/doc/DETAILS Wed Sep 6 16:26:45 2000 +++ gnupg-1.0.5/doc/DETAILS Thu Apr 19 12:01:02 2001 @@ -18,6 +18,7 @@ letter, but be prepared that additional information may follow in some future versions. (not used for secret keys) o = Unknown (this key is new to the system) + i = The key is invalid (e.g. due to a missing self-signature) d = The key has been disabled r = The key has been revoked e = The key has expired @@ -46,7 +47,17 @@ information may follow in some future versions. 10. Field: User-ID. The value is quoted like a C string to avoid control characters (the colon is quoted "\x3a"). +11. Field: Signature class +12. Field: Key capabilities: + e = encrypt + s = sign + c = certify + A key may have any combination of them. The primary key has in + addition to these letters, uppercase version of the letter to + denote the _usable_ capabilities of the entire key. +All dates are displayed in the format yyyy-mm-dd unless you use the option +--fixed-list-mode in which case they are dispplay as seconds since epoch. More fields may be added later. If field 1 has the tag "pkd", a listing looks like this: @@ -67,6 +78,9 @@ GOODSIG The signature with the keyid is good. + For each signature only one of the three codes GOODSIG, BADSIG + or ERRSIG will be emitted and they may be used as a marker for + a new signature. BADSIG The signature with the keyid has not been verified okay. @@ -82,7 +96,7 @@ VALIDSIG The signature with the keyid is good. This is the same as GOODSIG but has the fingerprint as the argument. Both - status lines ere emitted for a good signature. + status lines are emitted for a good signature. sig-timestamp is the signature creation time in seconds after the epoch. @@ -107,6 +121,11 @@ 3 - Invalid packet found, this may indicate a non OpenPGP message. You may see more than one of these status lines. + UNEXPECTED + Unexpected data has been encountered + 0 - not further specified 1 + + TRUST_UNDEFINED TRUST_NEVER TRUST_MARGINAL @@ -141,7 +160,7 @@ GET_HIDDEN GOT_IT - NEED_PASSPHRASE + NEED_PASSPHRASE Issued whenever a passphrase is needed. keytype is the numerical value of the public key algorithm or 0 if this is not applicable, keylength is the length @@ -226,6 +245,13 @@ 'S' = standard (only the first character should be checked) class: 2 hex digits with the signature class + + KEY_CREATED + A key has been created + type: 'B' = primary and subkey + 'P' = primary + 'S' = subkey + SESSION_KEY : The session key used to decrypt the message. This message will @@ -233,6 +259,21 @@ is used. The format is suitable to be passed to the option --override-session-key + NOTATION_NAME + NOTATION_DATA + name and string are %XX escaped; the data may be splitted + among several notation_data lines. + + USERID_HINT + Give a hint about the user ID for a certain keyID. + + POLICY_URL + string is %XX escaped + + BEGIN_STREAM + END_STREAM + Issued by pipemode. + Key generation ============== @@ -658,6 +699,41 @@ 1 = keyblock 2 = list of 20 byte padded fingerprints 3 = list of list fingerprints (but how to we key them?) + + + +Pipemode +======== +This mode can be used to perform multiple operations with one call to +gpg. It comes handy in cases where you have to verify a lot of +signatures. Currently we support only detached signatures. This mode +is a kludge to avoid running gpg n daemon mode and using Unix Domain +Sockets to pass the data to it. There is no easy portable way to do +this under Windows, so we use plain old pipes which do work well under +Windows. Because there is no way to signal multiple EOFs in a pipe we +have to embed control commands in the data stream: We distinguish +between a data state and a control state. Initially the system is in +data state but it won't accept any data. Instead it waits for +transition to control state which is done by sending a single '@' +character. While in control state the control command os expected and +this command is just a single byte after which the system falls back +to data state (but does not necesary accept data now). The simplest +control command is a '@' which just inserts this character into the +data stream. + +Here is the format we use for detached signatures: +"@<" - Begin of new stream +"@B" - Detached signature follows. + This emits a control packet (1,'B') + +"@t" - Signed text follows. + This emits the control packet (2, 'B') + +"@." - End of operation. The final control packet forces signature + verification +"@>" - End of stream + + diff -urN gnupg-1.0.4/doc/FAQ gnupg-1.0.5/doc/FAQ --- gnupg-1.0.4/doc/FAQ Tue Oct 17 15:16:56 2000 +++ gnupg-1.0.5/doc/FAQ Fri Apr 20 20:19:40 2001 @@ -1,9 +1,11 @@ GNUPG FREQUENTLY ASKED QUESTIONS -Version: 0.2 -Last-Modified: Oct 14, 2000 -Maintained-by: Nils Ellmenreich + +Version: 1.2 +Last-Modified: Apr 4, 2001 +Maintained-by: Nils Ellmenreich + This is the GnuPG FAQ. The latest HTML version is available here. @@ -12,10 +14,13 @@ all questions may be in the section they belong to. Suggestions about how to improve the structure of this FAQ are welcome. -Please send additions and corrections to the maintainer. Don't send -message like "This should be a FAQ - what's the answer?". If it hasn't -been asked before, it isn't a FAQ. Otherwise, please provide the answer -to be included here. +Please send additions and corrections to the maintainer. It would be +most convenient if you could provide the answer to be included +here. Your help is very much appreciated. + +Please, don't send message like "This should be a FAQ - what's the +answer?". If it hasn't been asked before, it isn't a FAQ. In that case +you could search in the mailing list archive. @@ -24,7 +29,7 @@ 1.1) What is GnuPG? 1.2) Is GnuPG compatible with PGP? - 2. SOURCES OF INFORMATION + 2. SOURCES of INFORMATION 2.1) Where can I find more information? 2.2) Where do I get GnuPG? @@ -50,26 +55,37 @@ 4.12) I can't decrypt my symmetrical only (-c) encrypted message with a new version of GnuPG. 4.13) How can I used GnuPG in an automated environment? + 4.14) Which email-client can I use with GnuPG? + 4.15) Can't we have a gpg library? 5. COMPATIBILITY ISSUES - 5.1) How can I encrypt a message so that PGP 2.x is able to decrypt it? + 5.1) How can I encrypt a message with GnuPG so that PGP is able to decrypt it? 5.2) How do I migrate from PGP 2.x to GnuPG? - 5.3) How can I conventional encrypt a message, so that PGP can decrypt - it? + 5.3) (removed) 5.4) Why is PGP 5.x not able to encrypt messages with some keys? 5.5) Why is PGP 5.x not able to verify my messages? 5.6) How do I transfer owner trust values from PGP to GnuPG? - 5.7) PGP 5.x, 6.x do not like my secret key. + 5.7) PGP does not like my secret key. 6. PROBLEMS and ERROR MESSAGES 6.1) Why do I get "gpg: Warning: using insecure memory!" - 6.2) In the edit menu the trust values is not displayed correctly after + 6.2) Large File Support doesn't work .. + 6.3) In the edit menu the trust values is not displayed correctly after signing uids - why? - 6.3) An ElGamal signature does not verify anymore since version 1.0.2 ... - 6.4) Old versions of GnuPG can't verify ElGamal signatures - 6.5) When I use --clearsign, the plain text has sometimes extra dashes + 6.4) What does "skipping pubkey 1: already loaded" mean? + 6.5) GnuPG 1.0.4 doesn't create ~/.gnupg ... + 6.6) An ElGamal signature does not verify anymore since version 1.0.2 ... + 6.7) Old versions of GnuPG can't verify ElGamal signatures + 6.8) When I use --clearsign, the plain text has sometimes extra dashes in it - why? - 6.6) What is the thing with "can't handle multiple signatures"? + 6.9) What is the thing with "can't handle multiple signatures"? + 6.10) If I submit a key to a keyserver, nothing happens ... + 6.11) I get "gpg: waiting for lock ..." + 6.12) Older gpg's (e.g., 1.0) have problems with keys from newer gpgs ... + 6.13) With 1.0.4, I get "this cipher algorithm is deprecated ..." + 6.14) Some dates are displayed as ????-??-??, why? + 6.15) I still have a problem. How do I report a bug? + 6.16) Why doesn't GnuPG support X509 certificates? 7. ADVANCED TOPICS 7.1) How does this whole thing work? @@ -79,6 +95,8 @@ 7.5) How do I interpret some of the informational outputs? 7.6) Are the header lines of a cleartext signature part of the signed material? + 7.7) What is the list of preferred algorithms? + 7.8) How do I change the list of preferred algorithms? 8. ACKNOWLEDGEMENTS @@ -101,7 +119,7 @@ the OpenPGP standard. But there are some interoperability problems. See questions 5.1ff. for details. -2. SOURCES OF INFORMATION +2. SOURCES of INFORMATION 2.1) Where can I find more information? @@ -114,19 +132,28 @@ document about how to convert from PGP 2.x to GnuPG. On - you'll find a searchable online archive of the GnuPG mailing lists. + you'll find a searchable online archive of the GnuPG mailing + lists. Most interesting should be gnupg-users for all user-related + issues and gnupg-devel if you want to get in touch with the + developers. *PLEASE:* Before posting to a list, read this FAQ and the available - documentation. This way you help people focus on topics that have - not yet been resolved. + documentation. In addition, search the list archive - maybe your + question has already been discussed. This way you help people focus + on topics that have not yet been resolved. + + The GnuPG source distribution contains a subdirectory + ./doc where some additional documentation is located + (mainly interesting for hackers, not the casual user). 2.2) Where do I get GnuPG? - You can download the GNU Privacy Guard from it's primary FTP server + You can download the GNU Privacy Guard from its primary FTP server ftp.gnupg.org or from one of the mirrors: - + The current version is 1.0.4, please upgrade to this version as it + fixes a security bug regarding the verification of multiple signatures. 3. INSTALLATION @@ -145,10 +172,14 @@ random data through /dev/random - this should be the preferred choice on these systems. Also Solaris users with the SUNWski package installed have a /dev/random. In these cases, use the configure - option --enable-static-rnd=linux. + option --enable-static-rnd=linux. In addition, there's + also the kernel random device by Andi Maier + < http://www.cosy.sbg.ac.at/~andi> + , but it's still beta. Use at + own risk! On other systems, the Entropy Gathering Daemon (EGD) is a good - choice. It is a perl-daemon that monitors system activity nad hashes + choice. It is a perl-daemon that monitors system activity and hashes it into random data. See the download page how to obtain egd. Use --enable-static-rnd=egd here. @@ -174,9 +205,6 @@ the following line to your ~/.gnupg/options: load-extension idea - The extension is not available for the Windows version of GnuPG. - - 4. USAGE 4.1) What is the recommended key size? @@ -185,9 +213,20 @@ signatures this is sufficient as the size of the hash is probably the weakest link if the key size is larger than 1024 bits. Encryption keys may have greater sizes, - but you should than check the fingerprint of this key: + but you should then check the fingerprint of this key: "gpg --fingerprint --fingerprint ". + As for the key algorithms, you should stick with the default (i.e., + DSA signature and ElGamal encryption). A ElGamal signing key has the + following disadvantages: the signature is larger, it is hard to + create such a key useful for signatures which can withstand some + real world attacks, you don't get any extra security compared to + DSA, there might be compatibility problems with certain PGP + versions. It has only been introduced because at the time it was + not clear whether there is was patent on DSA. + + + 4.2) Why does it sometimes take so long to create keys? The problem here is that we need a lot of random bytes and for that @@ -196,7 +235,7 @@ talked to Ted Ts'o and he commented that the best way to fill the buffer is to play with your keyboard. Good security has its price. What I do is to hit several times on the shift, control, alternate, - and capslock keys, because these keys do not produce output to the + and caps lock keys, because these keys do not produce output to the screen. This way you get your keys really fast (it's the same thing PGP2 does). @@ -331,8 +370,8 @@ 4.11) How can a get list of key IDs used to encrypt a message? - gpg --batch --decrypt --list-only --status-fd 1 2>/dev/null - \ | awk '/^\[GNUPG:\] ENC_TO / { print $3 }' + gpg --batch --decrypt --list-only --status-fd 1 2>/dev/null | \ + awk '/^\[GNUPG:\] ENC_TO / { print $3 }' 4.12) I can't decrypt my symmetrical only (-c) encrypted message with a new version of GnuPG. @@ -369,22 +408,74 @@ turn can revoke all the subkeys installed on that machine and install new subkeys. +4.14) Which email-client can I use with GnuPG? + Using GnuPG to encrypt email is one of the most popular + uses. Several mail clients or mail user-agents (MUA) support GnuPG + at varying degrees. Simplifying a bit, there are two ways a mail can + be encrypted with GnuPG: the "old style" ASCII armor, i.e. plain + text encryption, and RFC2015 style (previously PGP/MIME, now + OpenPGP). The latter has full MIME support. Some MUAs support only + one of them, so whichever you actually use depends on your needs as + well as the capabilities of your addressee. + + The following list is probably not exhaustive: + + OpenPGP: Mutt (Unix), Emacs/Mew, Becky2 (Windows, with plugin), + TkRat (Unix). There is effort for a Mozilla plugin and + Emacs/GNUS has support in the current CVS. + + ASCII: Emacs/{VM,GNUS}/MailCrypt, Mutt(Unix), Pine(Unix), and + probably many more. + + A good overview of PGP-support is present at + http://cryptorights.org/pgp-users/pgp-mail-clients.html. + Direct GnuPG support is not mentioned, however, it certain cases it + may be possible to use a wrapper. + + +4.15) Can't we have a gpg library? + + This has been frequently requested. However, the current viewpoint + of the GnuPG maintainers is that this would lead to several security + issues and will therefore not be implemented in the foreseeable + future. However, for some areas of areas of application gpgme could + do the trick. You'll find it at + ftp://ftp.guug.de/pub/gcrypt/alpha/gpgme 5. COMPATIBILITY ISSUES -5.1) How can I encrypt a message so that PGP 2.x is able to decrypt it? +5.1) How can I encrypt a message with GnuPG so that PGP is able to decrypt it? + + It depends on the PGP version. + + PGP 2.x You can't do that because PGP 2.x normally uses IDEA which is not - supported by GnuPG because it is patented (see 3.3), but if you + supported by GnuPG as it is patented (see 3.3), but if you have a modified version of PGP you can try this: gpg --rfc1991 --cipher-algo 3des ... - Please don't pipe the data to encrypt to gpg but give it as a + Please don't pipe the data to encrypt to gpg but provide it using a filename; otherwise, PGP 2 will not be able to handle it. + As for conventional encryption, you can't do this for PGP 2. + + + PGP 5.x and higher + + You need to provide two additional options: + --compress-algo 1 --cipher-algo cast5 + + You may also use "3des" instead of "cast5", "blowfish" does not + work with all versions of pgp5. You may also want to put + compress-algo 1 into your ~/.gnupg/options file - this does + not affect normal gnupg operation. + + This applies to conventional encryption as well. + 5.2) How do I migrate from PGP 2.x to GnuPG? PGP 2 uses the RSA and IDEA encryption algorithms. Whereas the RSA @@ -393,21 +484,12 @@ may use IDEA even today. In that case, you may refer to Question 3.3 about how to add IDEA support to GnuPG and read http://www.gnupg.org/gph/en/pgp2x.html - to perfrom the migration. - + to perform the migration. -5.3) How can I conventional encrypt a message, so that PGP can decrypt -it? - You can't do this for PGP 2. For PGP 5 you should use this: - - gpg -c --cipher-algo 3des --compress-algo 1 myfile - - You may replace "3des" by "cast5". "blowfish" does not work with all - versions of pgp5. You may also want to put compress-algo 1 - into your ~/.gnupg/options file - this does not affect - normal gnupg operation. +5.3) (removed) + (empty) 5.4) Why is PGP 5.x not able to encrypt messages with some keys? @@ -435,15 +517,31 @@ where pgpkeyring is the original keyring and not the GnuPG one you might have created in the first step. -5.7) PGP 5.x, 6.x do not like my secret key. +5.7) PGP does not like my secret key. - PGP probably bails out on some private comment packets used by + Older PGPs probably bail out on some private comment packets used by GnuPG. These packets are fully in compliance with OpenPGP; however PGP is not really OpenPGP aware. A workaround is to export the secret keys with this command: - gpg --export-secret-keys --no-comment -a your-key-id + $ gpg --export-secret-keys --no-comment -a your-key-id + + Another possibility is this: by default, GnuPG encrypts your secret + key using the Blowfish symmetric algorithm. Older PGPs will only + understand 3DES, CAST5, or IDEA symmetric algorithms. Using the + following method you can re-encrypt your secret gpg key with a + different algo: + + $ gpg --s2k-cipher-algo=CAST5 --s2k-digest-algo=SHA1 \ + --compress-algo=1 --edit-key + + Then use passwd to change the password (just change it to the same + thing, but it will encrypt the key with CAST5 this time). + Now you can export it and PGP should be able to handle it. + For PGP 6.x the following options work to export a key: + $ gpg --s2k-cipher-algo 3des --compress-algo 1 --rfc1991 \ + --export-secret-keys 6. PROBLEMS and ERROR MESSAGES @@ -451,17 +549,37 @@ On many systems this program should be installed as setuid(root). This is necessary to lock memory pages. Locking - memory pages prevents the operating system from writing memory pages + memory pages prevents the operating system from writing them to disk and thereby keeping your secret keys really secret. If you get no warning message about insecure memory your operating system supports locking without being root. The program drops root privileges as soon as locked memory is allocated. + On UnixWare 2.x and 7.x you should install GnuPG with the + 'plock' privilege to get the same effect: + filepriv -f plock /path/to/gpg + If you can't or don't want to install GnuPG setuid(root), you can use the option "--no-secmem-warning" or put - no-secmem-warning in your ~/.gnupg/options file. + no-secmem-warning in your ~/.gnupg/options file (this + disables the warning). + + On some systems (e.g., Windows) GnuPG does not lock memory pages + and older GnuPG versions (<=1.0.4) issue the warning + gpg: Please note that you don't have secure memory + This warning can't be switched off by the above option because it + was thought to be a too serious issue. However, it confused users + too much so the warning was eventually removed. + +6.2) Large File Support doesn't work .. + + LFS is correctly working in post-1.0.4 CVS. If configure doesn't + detect it correctly, try a different (i.e., better) compiler. egcs + 1.1.2 works fine, other gccs sometimes don't. BTW, several + compilation problems of GnuPG 1.0.3 and 1.0.4 on HP-UX and Solaris + were due to broken LFS support. -6.2) In the edit menu the trust values is not displayed correctly after +6.3) In the edit menu the trust values is not displayed correctly after signing uids - why? This happens because the some informations are stored immediately in @@ -469,16 +587,27 @@ save command. This is a not easy to fix design bug which will be addressed in some future release. -6.3) An ElGamal signature does not verify anymore since version 1.0.2 ... +6.4) What does "skipping pubkey 1: already loaded" mean? + + As of GnuPG 1.0.3, the RSA algorithm is included. If you still have + a "load-extension rsa" in your .options files, the above message + occurs. Just remove the load command from the .options file. + +6.5) GnuPG 1.0.4 doesn't create ~/.gnupg ... + + That's a known bug, already fixed in the CVS (and will be in the + next release, of course). + +6.6) An ElGamal signature does not verify anymore since version 1.0.2 ... Use the option --emulate-md-encode-bug. -6.4) Old versions of GnuPG can't verify ElGamal signatures +6.7) Old versions of GnuPG can't verify ElGamal signatures Update to GnuPG 1.0.2 or newer. -6.5) When I use --clearsign, the plain text has sometimes extra dashes +6.8) When I use --clearsign, the plain text has sometimes extra dashes in it - why? This is called dash-escaped text and required by OpenPGP. @@ -491,16 +620,74 @@ Good mail clients remove those extra dashes when displaying such a message. -6.6) What is the thing with "can't handle multiple signatures"? +6.9) What is the thing with "can't handle multiple signatures"? Due to different message formats GnuPG is not always able to split a - file with multiple signatures unambiguously into it's parts. This + file with multiple signatures unambiguously into its parts. This error message informs you that there is something wrong with the input. The only way to have multiple signatures in a file is by using the OpenPGP format with one-pass-signature packets (which is GnuPG's default) or the cleartext signed format. +6.10) If I submit a key to a keyserver, nothing happens ... + + You are most likely using GnuPG on Windows 1.0.2 or older. That's + feature isn't yet implemented, but it's a bug not to say it. Newer + versions issue a warning. Upgrade to 1.0.4 or newer. + +6.11) I get "gpg: waiting for lock ..." + + A previous gpg has most likely exited abnormally and left a lock + file. Go to ~/.gnupg and look for .*.lock files and remove them. + +6.12) Older gpg's (e.g., 1.0) have problems with keys from newer gpgs ... + + As of 1.0.3, keys generated with gpg are created with preferences to + TWOFISH (and AES since 1.0.4) and that also means that they have the + capability to use the new MDC encryption method. This will go into + OpenPGP soon and is also suppoted by PGP 7. This new method avoids + a (not so new) attack on all email encryption systems. + + This in turn means that pre-1.0.3 gpg's have problems with newer + key. Because of security fixes, you should keep your gpg + installation in a recent state anyway. As a workaround, you can + force gpg to use a previous default cipher algo by putting + cipher-algo cast5 into your options file. + +6.13) With 1.0.4, I get "this cipher algorithm is deprecated ..." + + If you just generated a new key and get this message while + encrypting, you've witnessed a bug in 1.0.4. It uses the new AES + cipher Rijndael that is incorrectly being referred as + "deprecated". Ignore this warning, more recent versions of gpg are + corrected. + +6.14) Some dates are displayed as ????-??-??, why? + + Due to constraints in most libc implementations, dates beyond + 2038-01-19 can't be displayed correctly. 64 bit OSes are not + affected by this problem. To avoid printing wrong dates, GnuPG + instead prints some question marks. To see the correct value, you + can use the options --with-colons and --fixed-list-mode. + +6.15) I still have a problem. How do I report a bug? + + Are you sure that it's not been mentioned somewhere on the mailing + lists? Did you have a look at the bug list (You'll find a link to + the list of reported bugs on the documentation page). If you're not + sure about it being a bug, you can send mail to the gnupg-devel + list. Otherwise, use the GUUG bug tracking system + http://bugs.guug.de/Reporting.html. + +6.16) Why doesn't GnuPG support X509 certificates? + + GnuPG, first and foremost, is an implementation of the OpenPGP + standard (RFC 2440), which is a competing infrastructure, different + from X509. + + They are both public-key cryptosystems, but how the public keys are + actually handled is different. 7. ADVANCED TOPICS @@ -664,6 +851,36 @@ algorithm to use. +7.7) What is the list of preferred algorithms? + + The list of preferred algorithms is a list of cypher, hash and + compression algorithms stored in the self-signature of a key during + key generation. When you encrypt a document, GnuPG uses this list + (which is then part of a public key) to determine which algorithms + to use. Basically it tells other people what algorithms the + recipient is able to handle and provides an order of preference. + +7.8) How do I change the list of preferred algorithms? + + Currently the default is hard-wired into the GnuPG source code. + You'll have to change g10/keygen.c and recompile. The + function you'll have to change is keygen_add_std_prefs. + The code is pretty self-explanatory. The constants used to + denote the algorithms are defined in include/cipher.h. + + After having done that, generate a new key pair (or a new encryption + subkey) with the modified executable. This new key will have the + modified preferences and can then be used with unmodified executables. + + To modify the preferences of an existing key, use a modified + executable (see above) to change the expiry date and then save the + key. The use your original expiry date and save the key again. Now + you've got the prefs changed and can use the key again with your + unmodified executable. + + Changing the list of preferences with an unmodified GnuPG + executable (possibly in the edit-key menu) is on the TODO list and + planned for future releases. 8. ACKNOWLEDGEMENTS diff -urN gnupg-1.0.4/doc/HACKING gnupg-1.0.5/doc/HACKING --- gnupg-1.0.4/doc/HACKING Wed May 17 10:52:29 2000 +++ gnupg-1.0.5/doc/HACKING Tue Apr 17 12:37:05 2001 @@ -10,12 +10,13 @@ ========== Anonymous read-only CVS access is available: - cvs -z6 -d :pserver:anonymous@cvs.guug.de:/home/koch/cvs login + cvs -z3 -d :pserver:anoncvs@cvs.gnupg.org:/cvs/gnupg login -use the password "anonymous". To check out the the complete +use the password "anoncvs". To check out the the complete archive use: - cvs -z6 -d :pserver:anonymous@cvs.guug.de:/home/koch/cvs checkout gnupg + cvs -z3 -d :pserver:anoncvs@cvs.gnupg.org:/cvs/gnupg \ + checkout -R STABLE-BRANCH-1-0 gnupg This service is provided to help you in hunting bugs and not to deliver stable snapshots; it may happen that it even does not compile, so please @@ -117,46 +118,48 @@ g10/g10.c Main module with option parsing and all the stuff you have to do on startup. Also has the exout handler and some helper functions. -g10/sign.c +g10/sign.c Create signature and optionally encrypt g10/parse-packet.c g10/build-packet.c g10/free-packet.c Parsing and creating of OpenPGP message packets. -g10/getkey.c -g10/pkclist.c -g10/skclist.c -g10/ringedit.c +g10/getkey.c Key selection code +g10/pkclist.c Build a list of public keys +g10/skclist.c Build a list of secret keys +g10/ringedit.c Keyring I/O g10/keydb.h g10/keyid.c Helper functions to get the keyid, fingerprint etc. -g10/trustdb.c +g10/trustdb.c g10/trustdb.h g10/tdbdump.c + Management of the trustdb.gpg -g10/compress.c -g10/filter.h -g10/delkey.c -g10/kbnode.c -g10/main.h -g10/mainproc.c -g10/armor.c -g10/mdfilter.c -g10/textfilter.c -g10/cipher.c -g10/misc.c -g10/options.h -g10/openfile.c -g10/tdbio.c +g10/compress.c Filter to handle compression +g10/filter.h Declarations for all filter functions +g10/delkey.c Delete a key +g10/kbnode.c Helper for the KBNODE linked list +g10/main.h Prototypes and some constants +g10/mainproc.c Message processing +g10/armor.c Ascii armor filter +g10/mdfilter.c Filter to calculate hashs +g10/textfilter.c Filter to handle CR/LF and trailing white space +g10/cipher.c En-/Decryption filter +g10/misc.c Utlity functions +g10/options.h Structure with all the command line options + and related constants +g10/openfile.c Create/Open Files +g10/tdbio.c I/O handling for the trustdb.gpg g10/tdbio.h -g10/hkp.h +g10/hkp.h Keyserver access g10/hkp.c -g10/packet.h -g10/passphrase.c -g10/pubkey-enc.c +g10/packet.h Defintion of OpenPGP structures. +g10/passphrase.c Passphrase handling code +g10/pubkey-enc.c g10/seckey-cert.c g10/seskey.c g10/import.c diff -urN gnupg-1.0.4/doc/Makefile.am gnupg-1.0.5/doc/Makefile.am --- gnupg-1.0.4/doc/Makefile.am Wed Oct 4 15:32:33 2000 +++ gnupg-1.0.5/doc/Makefile.am Tue Apr 17 18:21:48 2001 @@ -1,16 +1,59 @@ +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + ## Process this file with automake to create Makefile.in +AUTOMAKE_OPTIONS = no-texinfo.tex + EXTRA_DIST = DETAILS gpg.sgml gpg.1 gpgv.sgml gpgv.1 faq.raw FAQ faq.html \ HACKING OpenPGP README.W32 man_MANS = gpg.1 gpgv.1 +info_TEXINFOS = gpg.texi gpgv.texi + +# Need this to avoid building of dvis with automake 1.4 +DVIS = + pkgdata_DATA = FAQ faq.html -BUILT_SOURCES = FAQ faq.html +BUILT_SOURCES = FAQ faq.html +# we can't add gpg.texi gpgv.texi here because automake does not like them to +# be built files. -CLEANFILES = faq.raw.xref +CLEANFILES = faq.raw.xref gpg.xml gpgv.xml + + +%.texi : %.xml +if HAVE_DOCBOOK_TO_TEXI + docbook2texi $< | sed 's,--,---,' >$@ +else + : Warning: missing docbook to texinfo tools, cannot make $@ + touch $@ +endif +%.xml : %.sgml +if HAVE_DOCBOOK_TO_TEXI + sgml2xml -x lower $< >$@ +else + : Warning: missing docbook to texinfo tools, cannot make $@ + touch $@ +endif %.1 : %.sgml @@ -28,16 +71,6 @@ faq.html : faq.raw $(FAQPROG) -h -f $< $@ 2>&1 || $(FAQPROG) -h -f $< $@ - -%.dvi: %.sgml - db2dvi $< - -%.ps: %.dvi - dvips -o $@ $< - -%/%.html: %.sgml - -db2html $< - dist-hook: @if test `wc -c < gpg.1` -lt 200; then \ diff -urN gnupg-1.0.4/doc/Makefile.in gnupg-1.0.5/doc/Makefile.in --- gnupg-1.0.4/doc/Makefile.in Tue Oct 17 15:40:48 2000 +++ gnupg-1.0.5/doc/Makefile.in Sun Apr 29 16:39:42 2001 @@ -10,6 +10,24 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +# +# This file is part of GnuPG. +# +# GnuPG is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GnuPG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + SHELL = @SHELL@ @@ -72,6 +90,7 @@ DATADIRNAME = @DATADIRNAME@ DLLTOOL = @DLLTOOL@ DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOCBOOK_TO_TEXI = @DOCBOOK_TO_TEXI@ DYNAMIC_CIPHER_MODS = @DYNAMIC_CIPHER_MODS@ DYNLINK_LDFLAGS = @DYNLINK_LDFLAGS@ DYNLINK_MOD_CFLAGS = @DYNLINK_MOD_CFLAGS@ @@ -106,19 +125,32 @@ ZLIBS = @ZLIBS@ l = @l@ +AUTOMAKE_OPTIONS = no-texinfo.tex + EXTRA_DIST = DETAILS gpg.sgml gpg.1 gpgv.sgml gpgv.1 faq.raw FAQ faq.html HACKING OpenPGP README.W32 man_MANS = gpg.1 gpgv.1 +info_TEXINFOS = gpg.texi gpgv.texi + +# Need this to avoid building of dvis with automake 1.4 +DVIS = + pkgdata_DATA = FAQ faq.html -BUILT_SOURCES = FAQ faq.html +BUILT_SOURCES = FAQ faq.html +# we can't add gpg.texi gpgv.texi here because automake does not like them to +# be built files. -CLEANFILES = faq.raw.xref +CLEANFILES = faq.raw.xref gpg.xml gpgv.xml mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = +TEXI2DVI = texi2dvi +TEXINFO_TEX = $(top_srcdir)/scripts/texinfo.tex +INFO_DEPS = gpg.info gpgv.info +TEXINFOS = gpg.texi gpgv.texi man1dir = $(mandir)/man1 MANS = $(man_MANS) @@ -134,6 +166,7 @@ GZIP_ENV = --best all: all-redirect .SUFFIXES: +.SUFFIXES: .dvi .info .ps .texi .texinfo .txi $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile @@ -142,6 +175,129 @@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status +gpg.info: gpg.texi +gpg.dvi: gpg.texi + + +gpgv.info: gpgv.texi +gpgv.dvi: gpgv.texi + + +DVIPS = dvips + +.texi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texi.dvi: + TEXINPUTS=$(top_srcdir)/scripts/texinfo.tex:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.texi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.texinfo.dvi: + TEXINPUTS=$(top_srcdir)/scripts/texinfo.tex:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.txi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` + +.txi.dvi: + TEXINPUTS=$(top_srcdir)/scripts/texinfo.tex:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.txi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) `echo $< | sed 's,.*/,,'` +.dvi.ps: + $(DVIPS) $< -o $@ + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(infodir) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + d=$(srcdir); \ + for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$d/$$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \ + else : ; fi; \ + done; \ + done + @$(POST_INSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ + install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ + done; \ + else : ; fi + +uninstall-info: + $(PRE_UNINSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + ii=yes; \ + else ii=; fi; \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + test -z "$ii" \ + || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ + done + @$(NORMAL_UNINSTALL) + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ + done + +dist-info: $(INFO_DEPS) + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + d=$(srcdir); \ + for file in `cd $$d && eval echo $$base*`; do \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done; \ + done + +mostlyclean-aminfo: + -rm -f gpg.aux gpg.cp gpg.cps gpg.dvi gpg.fn gpg.fns gpg.ky gpg.kys \ + gpg.ps gpg.log gpg.pg gpg.toc gpg.tp gpg.tps gpg.vr gpg.vrs \ + gpg.op gpg.tr gpg.cv gpg.cn gpgv.aux gpgv.cp gpgv.cps \ + gpgv.dvi gpgv.fn gpgv.fns gpgv.ky gpgv.kys gpgv.ps gpgv.log \ + gpgv.pg gpgv.toc gpgv.tp gpgv.tps gpgv.vr gpgv.vrs gpgv.op \ + gpgv.tr gpgv.cv gpgv.cn + +clean-aminfo: + +distclean-aminfo: + +maintainer-clean-aminfo: + cd $(srcdir) && for i in $(INFO_DEPS); do \ + rm -f $$i; \ + if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ + rm -f $$i-[0-9]*; \ + fi; \ + done + install-man1: $(mkinstalldirs) $(DESTDIR)$(man1dir) @list='$(man1_MANS)'; \ @@ -218,10 +374,11 @@ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done + $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook -info-am: +info-am: $(INFO_DEPS) info: info-am -dvi-am: +dvi-am: $(DVIS) dvi: dvi-am check-am: all-am check: check-am @@ -230,20 +387,21 @@ install-exec-am: install-exec: install-exec-am -install-data-am: install-man install-pkgdataDATA +install-data-am: install-info-am install-man install-pkgdataDATA install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am -uninstall-am: uninstall-man uninstall-pkgdataDATA +uninstall-am: uninstall-info uninstall-man uninstall-pkgdataDATA uninstall: uninstall-am -all-am: Makefile $(MANS) $(DATA) +all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: - $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(pkgdatadir) + $(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(mandir)/man1 \ + $(DESTDIR)$(pkgdatadir) mostlyclean-generic: @@ -257,32 +415,45 @@ maintainer-clean-generic: -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean-am: mostlyclean-generic +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean: mostlyclean-am -clean-am: clean-generic mostlyclean-am +clean-am: clean-aminfo clean-generic mostlyclean-am clean: clean-am -distclean-am: distclean-generic clean-am +distclean-am: distclean-aminfo distclean-generic clean-am distclean: distclean-am -maintainer-clean-am: maintainer-clean-generic distclean-am +maintainer-clean-am: maintainer-clean-aminfo maintainer-clean-generic \ + distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am -.PHONY: install-man1 uninstall-man1 install-man uninstall-man \ -uninstall-pkgdataDATA install-pkgdataDATA tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ -install-exec install-data-am install-data install-am install \ -uninstall-am uninstall all-redirect all-am all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - +.PHONY: install-info-am uninstall-info mostlyclean-aminfo \ +distclean-aminfo clean-aminfo maintainer-clean-aminfo install-man1 \ +uninstall-man1 install-man uninstall-man uninstall-pkgdataDATA \ +install-pkgdataDATA tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +%.texi : %.xml +@HAVE_DOCBOOK_TO_TEXI_TRUE@ docbook2texi $< | sed 's,--,---,' >$@ +@HAVE_DOCBOOK_TO_TEXI_FALSE@ : Warning: missing docbook to texinfo tools, cannot make $@ +@HAVE_DOCBOOK_TO_TEXI_FALSE@ touch $@ + +%.xml : %.sgml +@HAVE_DOCBOOK_TO_TEXI_TRUE@ sgml2xml -x lower $< >$@ +@HAVE_DOCBOOK_TO_TEXI_FALSE@ : Warning: missing docbook to texinfo tools, cannot make $@ +@HAVE_DOCBOOK_TO_TEXI_FALSE@ touch $@ %.1 : %.sgml @HAVE_DOCBOOK_TO_MAN_TRUE@ docbook-to-man $< >$@ @@ -295,15 +466,6 @@ faq.html : faq.raw $(FAQPROG) -h -f $< $@ 2>&1 || $(FAQPROG) -h -f $< $@ - -%.dvi: %.sgml - db2dvi $< - -%.ps: %.dvi - dvips -o $@ $< - -%/%.html: %.sgml - -db2html $< dist-hook: @if test `wc -c < gpg.1` -lt 200; then \ diff -urN gnupg-1.0.4/doc/OpenPGP gnupg-1.0.5/doc/OpenPGP --- gnupg-1.0.4/doc/OpenPGP Fri Jan 14 18:25:57 2000 +++ gnupg-1.0.5/doc/OpenPGP Wed Oct 18 18:45:31 2000 @@ -8,11 +8,7 @@ Compatibility Notes =================== - GnuPG (>0.4.5) is in compliance with RFC2440 despite these exceptions: - - * (9.1) states that RSA SHOULD be implemented. This is not done - (except with an extension, usable outside the U.S.) due to - patent problems. + GnuPG (>=1.0.3) is in compliance with RFC2440 despite these exceptions: * (9.2) states that IDEA SHOULD be implemented. This is not done due to patent problems. @@ -21,7 +17,7 @@ All MAY features are implemented with this exception: * multi-part armored messages are not supported. - MIME should be used instead. + MIME (rfc2015) should be used instead. Most of the OPTIONAL stuff is implemented. diff -urN gnupg-1.0.4/doc/README.W32 gnupg-1.0.5/doc/README.W32 --- gnupg-1.0.4/doc/README.W32 Wed Jul 12 12:56:44 2000 +++ gnupg-1.0.5/doc/README.W32 Mon Apr 23 19:02:44 2001 @@ -55,29 +55,32 @@ First get the source: It is available at - ftp://ftp.gnupg.org/pub/gcrypt/gnupg/gnupg-1.0.n.tar.gz + ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.0.n.tar.gz or for snapshots (with a letter appended to the version number) - ftp://ftp.gnupg.org/pub/gcrypt/devel/gnupg-1.0.nx.tar.gz + ftp://ftp.gnupg.org/gcrypt/devel/gnupg-1.0.nx.tar.gz -this is the same source as for the Unix version. +this is the same source as for the Unix version. If your binary +version of GnuPG is called something like gnupg-w32-1.0.4-1.zip, you +should find a patch file named gnupg-w32-1.0.4-1.0.4-1.diff.gz at the +same location, which has to ne applied to the stock gpg source file. +Instructions are at the top of this file. To build it, you need the MingW32/CPD kit, which is available at - ftp://ftp.openit.de/pub/cpd/mingw32-cpd-0.2.4.tar.gz - ftp://ftp.openit.de/pub/cpd/gcc-core-2.95.2.tar.gz - ftp://ftp.openit.de/pub/cpd/binutils-2.9.1.tar.gz - ftp://ftp.openit.de/pub/cpd/windows32api-0.1.2.tar.gz + ftp://ftp.gnupg.org/people/werner/cpd/mingw32-cpd-0.3.0.tar.gz + ftp://ftp.gnupg.org/people/werner/cpd/gcc-core-2.95.2.tar.gz + ftp://ftp.gnupg.org/people/werner/cpd/binutils-2.9.1.tar.gz -gcc, binutils and windows32api are stock GNU source which are available -at every GNU mirror. +gcc and binutils are stock GNU source which are available +at every GNU mirror. After you have installed this environment you should be able to do this: - $ ./configure --target=i386--mingw32 + $ scripts/autogen.sh --build-w32 $ make - $ i386--mingw32-strip g10/gpg + $ mingw32 strip g10/gpg $ cp g10/gpg /some_windows_drive/gpg.exe And everything hopefully works. @@ -89,4 +92,6 @@ Be the source always with you. Werner + + diff -urN gnupg-1.0.4/doc/faq.html gnupg-1.0.5/doc/faq.html --- gnupg-1.0.4/doc/faq.html Tue Oct 17 15:16:57 2000 +++ gnupg-1.0.5/doc/faq.html Fri Apr 20 20:19:40 2001 @@ -5,11 +5,11 @@

GNUPG FREQUENTLY ASKED QUESTIONS

-

-Version: 0.2
-Last-Modified: Oct 14, 2000
-Maintained-by: Nils Ellmenreich <nils 'at' infosun.fmi.uni-passau.de>
-
+

+Version: 1.2

+Last-Modified: Apr 4, 2001

+Maintained-by: Nils Ellmenreich <nils 'at' gnupg.org> +

This is the GnuPG FAQ. The latest HTML version is available here. @@ -18,10 +18,13 @@ all questions may be in the section they belong to. Suggestions about how to improve the structure of this FAQ are welcome.

-Please send additions and corrections to the maintainer. Don't send -message like "This should be a FAQ - what's the answer?". If it hasn't -been asked before, it isn't a FAQ. Otherwise, please provide the answer -to be included here. +Please send additions and corrections to the maintainer. It would be +most convenient if you could provide the answer to be included +here. Your help is very much appreciated. +

+Please, don't send message like "This should be a FAQ - what's the +answer?". If it hasn't been asked before, it isn't a FAQ. In that case +you could search in the mailing list archive.


@@ -33,7 +36,7 @@
  • 1.2) Is GnuPG compatible with PGP? -

    2. SOURCES OF INFORMATION +

    2. SOURCES of INFORMATION

  • 2.1) Where can I find more information? @@ -78,14 +81,17 @@
  • 4.13) How can I used GnuPG in an automated environment? +
  • 4.14) Which email-client can I use with GnuPG? + +
  • 4.15) Can't we have a gpg library? +

    5. COMPATIBILITY ISSUES

    -
  • 5.1) How can I encrypt a message so that PGP 2.x is able to decrypt it? +
  • 5.1) How can I encrypt a message with GnuPG so that PGP is able to decrypt it?
  • 5.2) How do I migrate from PGP 2.x to GnuPG? -
  • 5.3) How can I conventional encrypt a message, so that PGP can decrypt -it? +
  • 5.3) (removed)
  • 5.4) Why is PGP 5.x not able to encrypt messages with some keys? @@ -93,23 +99,43 @@
  • 5.6) How do I transfer owner trust values from PGP to GnuPG? -
  • 5.7) PGP 5.x, 6.x do not like my secret key. +
  • 5.7) PGP does not like my secret key.

    6. PROBLEMS and ERROR MESSAGES

  • 6.1) Why do I get "gpg: Warning: using insecure memory!" -
  • 6.2) In the edit menu the trust values is not displayed correctly after +
  • 6.2) Large File Support doesn't work .. + +
  • 6.3) In the edit menu the trust values is not displayed correctly after signing uids - why? -
  • 6.3) An ElGamal signature does not verify anymore since version 1.0.2 ... +
  • 6.4) What does "skipping pubkey 1: already loaded" mean? + +
  • 6.5) GnuPG 1.0.4 doesn't create ~/.gnupg ... -
  • 6.4) Old versions of GnuPG can't verify ElGamal signatures +
  • 6.6) An ElGamal signature does not verify anymore since version 1.0.2 ... -
  • 6.5) When I use --clearsign, the plain text has sometimes extra dashes +
  • 6.7) Old versions of GnuPG can't verify ElGamal signatures + +
  • 6.8) When I use --clearsign, the plain text has sometimes extra dashes in it - why? -
  • 6.6) What is the thing with "can't handle multiple signatures"? +
  • 6.9) What is the thing with "can't handle multiple signatures"? + +
  • 6.10) If I submit a key to a keyserver, nothing happens ... + +
  • 6.11) I get "gpg: waiting for lock ..." + +
  • 6.12) Older gpg's (e.g., 1.0) have problems with keys from newer gpgs ... + +
  • 6.13) With 1.0.4, I get "this cipher algorithm is deprecated ..." + +
  • 6.14) Some dates are displayed as ????-??-??, why? + +
  • 6.15) I still have a problem. How do I report a bug? + +
  • 6.16) Why doesn't GnuPG support X509 certificates?

    7. ADVANCED TOPICS

    @@ -126,6 +152,10 @@
  • 7.6) Are the header lines of a cleartext signature part of the signed material? +
  • 7.7) What is the list of preferred algorithms? + +
  • 7.8) How do I change the list of preferred algorithms? +

    8. ACKNOWLEDGEMENTS

    @@ -157,7 +187,7 @@ problems. See questions 5.1ff. for details.

    -2. SOURCES OF INFORMATION +2. SOURCES of INFORMATION

    @@ -173,22 +203,31 @@ document about how to convert from PGP 2.x to GnuPG.

  • On <http://lists.gnupg.org> -you'll find a searchable online archive of the GnuPG mailing lists. +you'll find a searchable online archive of the GnuPG mailing +lists. Most interesting should be gnupg-users for all user-related +issues and gnupg-devel if you want to get in touch with the +developers.

    PLEASE: Before posting to a list, read this FAQ and the available -documentation. This way you help people focus on topics that have -not yet been resolved. +documentation. In addition, search the list archive - maybe your +question has already been discussed. This way you help people focus +on topics that have not yet been resolved. +

    +

  • The GnuPG source distribution contains a subdirectory +
    ./doc
    where some additional documentation is located +(mainly interesting for hackers, not the casual user).

    2.2) Where do I get GnuPG?

    -You can download the GNU Privacy Guard from it's primary FTP server +You can download the GNU Privacy Guard from its primary FTP server ftp.gnupg.org or from one of the mirrors: <http://www.gnupg.org/mirror.html> -

    +The current version is 1.0.4, please upgrade to this version as it +fixes a security bug regarding the verification of multiple signatures.

    @@ -201,7 +240,7 @@

    It should run on most Unices as well as Windows 95 and Windows NT. A list of OSes reported to be OK is presented at - + http://www.gnupg.org/gnupg.html#supsys .

    @@ -214,10 +253,13 @@ random data through /dev/random - this should be the preferred choice on these systems. Also Solaris users with the SUNWski package installed have a /dev/random. In these cases, use the configure -option
    --enable-static-rnd=linux
    . +option
    --enable-static-rnd=linux
    . In addition, there's +also the kernel random device by Andi Maier +<http://www.cosy.sbg.ac.at/~andi>, but it's still beta. Use at +own risk!

    On other systems, the Entropy Gathering Daemon (EGD) is a good -choice. It is a perl-daemon that monitors system activity nad hashes +choice. It is a perl-daemon that monitors system activity and hashes it into random data. See the download page <http://www.gnupg.org/download.html> how to obtain egd. Use

    --enable-static-rnd=egd
    here.

    @@ -246,9 +288,6 @@ load-extension idea

    -The extension is not available for the Windows version of GnuPG. -

    -

    4. USAGE

    @@ -261,9 +300,20 @@ signatures this is sufficient as the size of the hash is probably the weakest link if the key size is larger than 1024 bits. Encryption keys may have greater sizes, -but you should than check the fingerprint of this key: +but you should then check the fingerprint of this key: "gpg --fingerprint --fingerprint <user ID>".

    +As for the key algorithms, you should stick with the default (i.e., +DSA signature and ElGamal encryption). A ElGamal signing key has the +following disadvantages: the signature is larger, it is hard to +create such a key useful for signatures which can withstand some +real world attacks, you don't get any extra security compared to +DSA, there might be compatibility problems with certain PGP +versions. It has only been introduced because at the time it was +not clear whether there is was patent on DSA. +

    +

    +

    4.2) Why does it sometimes take so long to create keys?

    @@ -274,7 +324,7 @@ talked to Ted Ts'o and he commented that the best way to fill the buffer is to play with your keyboard. Good security has its price. What I do is to hit several times on the shift, control, alternate, -and capslock keys, because these keys do not produce output to the +and caps lock keys, because these keys do not produce output to the screen. This way you get your keys really fast (it's the same thing PGP2 does).

    @@ -439,8 +489,8 @@ 4.11) How can a get list of key IDs used to encrypt a message?

  • -

     gpg --batch --decrypt --list-only --status-fd 1 2>/dev/null
    -\ | awk '/^\[GNUPG:\] ENC_TO / { print $3 }' 
    +
     gpg --batch --decrypt --list-only --status-fd 1 2>/dev/null | \
    +awk '/^\[GNUPG:\] ENC_TO / { print $3 }' 

    4.12) I can't decrypt my symmetrical only (-c) encrypted message with @@ -481,7 +531,44 @@ turn can revoke all the subkeys installed on that machine and install new subkeys.

    +

    +4.14) Which email-client can I use with GnuPG? +

    +

    +Using GnuPG to encrypt email is one of the most popular +uses. Several mail clients or mail user-agents (MUA) support GnuPG +at varying degrees. Simplifying a bit, there are two ways a mail can +be encrypted with GnuPG: the "old style" ASCII armor, i.e. plain +text encryption, and RFC2015 style (previously PGP/MIME, now +OpenPGP). The latter has full MIME support. Some MUAs support only +one of them, so whichever you actually use depends on your needs as +well as the capabilities of your addressee. +

    +The following list is probably not exhaustive: +

    +OpenPGP: Mutt (Unix), Emacs/Mew, Becky2 (Windows, with plugin), + TkRat (Unix). There is effort for a Mozilla plugin and + Emacs/GNUS has support in the current CVS.

    +ASCII: Emacs/{VM,GNUS}/MailCrypt, Mutt(Unix), Pine(Unix), and + probably many more. +

    +A good overview of PGP-support is present at +http://cryptorights.org/pgp-users/pgp-mail-clients.html. +Direct GnuPG support is not mentioned, however, it certain cases it +may be possible to use a wrapper. +

    +

    +

    +4.15) Can't we have a gpg library? +

    +

    +This has been frequently requested. However, the current viewpoint +of the GnuPG maintainers is that this would lead to several security +issues and will therefore not be implemented in the foreseeable +future. However, for some areas of areas of application gpgme could +do the trick. You'll find it at +ftp://ftp.guug.de/pub/gcrypt/alpha/gpgme

    5. COMPATIBILITY ISSUES @@ -489,18 +576,38 @@

    -5.1) How can I encrypt a message so that PGP 2.x is able to decrypt it? +5.1) How can I encrypt a message with GnuPG so that PGP is able to decrypt it?

    +It depends on the PGP version.

      +

      +

    • PGP 2.x +

      You can't do that because PGP 2.x normally uses IDEA which is not -supported by GnuPG because it is patented (see 3.3), but if you +supported by GnuPG as it is patented (see 3.3), but if you have a modified version of PGP you can try this:

       gpg --rfc1991 --cipher-algo 3des ...  

      -Please don't pipe the data to encrypt to gpg but give it as a +Please don't pipe the data to encrypt to gpg but provide it using a filename; otherwise, PGP 2 will not be able to handle it.

      +As for conventional encryption, you can't do this for PGP 2. +

      +

      +

    • PGP 5.x and higher +

      +You need to provide two additional options: +

      --compress-algo 1 --cipher-algo cast5 
      +

      +You may also use "3des" instead of "cast5", "blowfish" does not +work with all versions of pgp5. You may also want to put

      +compress-algo 1 
      into your ~/.gnupg/options file - this does +not affect normal gnupg operation. +

      +This applies to conventional encryption as well. +

    +

    5.2) How do I migrate from PGP 2.x to GnuPG?

    @@ -511,25 +618,14 @@ may use IDEA even today. In that case, you may refer to Question 3.3 about how to add IDEA support to GnuPG and read http://www.gnupg.org/gph/en/pgp2x.html -to perfrom the migration. +to perform the migration.

    -5.3) How can I conventional encrypt a message, so that PGP can decrypt -it? +5.3) (removed)

    -You can't do this for PGP 2. For PGP 5 you should use this: -

    -

    -gpg -c --cipher-algo 3des --compress-algo 1 myfile 
    -
    -

    -You may replace "3des" by "cast5". "blowfish" does not work with all -versions of pgp5. You may also want to put

     compress-algo 1
    -
    into your ~/.gnupg/options file - this does not affect -normal gnupg operation. -

    +(empty)

    5.4) Why is PGP 5.x not able to encrypt messages with some keys? @@ -566,16 +662,36 @@ might have created in the first step.

    -5.7) PGP 5.x, 6.x do not like my secret key. +5.7) PGP does not like my secret key.

    -PGP probably bails out on some private comment packets used by +Older PGPs probably bail out on some private comment packets used by GnuPG. These packets are fully in compliance with OpenPGP; however PGP is not really OpenPGP aware. A workaround is to export the secret keys with this command: -

     gpg --export-secret-keys --no-comment -a your-key-id 
    +
     $ gpg --export-secret-keys --no-comment -a your-key-id 
    +

    +Another possibility is this: by default, GnuPG encrypts your secret +key using the Blowfish symmetric algorithm. Older PGPs will only +understand 3DES, CAST5, or IDEA symmetric algorithms. Using the +following method you can re-encrypt your secret gpg key with a +different algo:

    +

    + $ gpg --s2k-cipher-algo=CAST5 --s2k-digest-algo=SHA1 \
    +      --compress-algo=1  --edit-key <username>
    +

    +Then use passwd to change the password (just change it to the same +thing, but it will encrypt the key with CAST5 this time). +

    +Now you can export it and PGP should be able to handle it. +

    +For PGP 6.x the following options work to export a key: +

    + $ gpg --s2k-cipher-algo 3des --compress-algo 1 --rfc1991 \
    +       --export-secret-keys <Key-ID>
    +

    6. PROBLEMS and ERROR MESSAGES @@ -587,18 +703,44 @@

    On many systems this program should be installed as setuid(root). This is necessary to lock memory pages. Locking -memory pages prevents the operating system from writing memory pages +memory pages prevents the operating system from writing them to disk and thereby keeping your secret keys really secret. If you get no warning message about insecure memory your operating system supports locking without being root. The program drops root privileges as soon as locked memory is allocated.

    +On UnixWare 2.x and 7.x you should install GnuPG with the +'plock' privilege to get the same effect: +

    +	filepriv -f plock /path/to/gpg
    +
    +

    If you can't or don't want to install GnuPG setuid(root), you can use the option "--no-secmem-warning" or put

    -no-secmem-warning 
    in your ~/.gnupg/options file. +no-secmem-warning in your ~/.gnupg/options file (this +disables the warning). +

    +On some systems (e.g., Windows) GnuPG does not lock memory pages +and older GnuPG versions (<=1.0.4) issue the warning +

    +gpg: Please note that you don't have secure memory
    +
    +This warning can't be switched off by the above option because it +was thought to be a too serious issue. However, it confused users +too much so the warning was eventually removed. +

    +

    +6.2) Large File Support doesn't work .. +

    +

    +LFS is correctly working in post-1.0.4 CVS. If configure doesn't +detect it correctly, try a different (i.e., better) compiler. egcs +1.1.2 works fine, other gccs sometimes don't. BTW, several +compilation problems of GnuPG 1.0.3 and 1.0.4 on HP-UX and Solaris +were due to broken LFS support.

    -6.2) In the edit menu the trust values is not displayed correctly after +6.3) In the edit menu the trust values is not displayed correctly after signing uids - why?

    @@ -608,20 +750,35 @@ addressed in some future release.

    -6.3) An ElGamal signature does not verify anymore since version 1.0.2 ... +6.4) What does "skipping pubkey 1: already loaded" mean? +

    +

    +As of GnuPG 1.0.3, the RSA algorithm is included. If you still have +a "load-extension rsa" in your .options files, the above message +occurs. Just remove the load command from the .options file. +

    +

    +6.5) GnuPG 1.0.4 doesn't create ~/.gnupg ... +

    +

    +That's a known bug, already fixed in the CVS (and will be in the +next release, of course). +

    +

    +6.6) An ElGamal signature does not verify anymore since version 1.0.2 ...

    Use the option --emulate-md-encode-bug.

    -6.4) Old versions of GnuPG can't verify ElGamal signatures +6.7) Old versions of GnuPG can't verify ElGamal signatures

    Update to GnuPG 1.0.2 or newer.

    -6.5) When I use --clearsign, the plain text has sometimes extra dashes +6.8) When I use --clearsign, the plain text has sometimes extra dashes in it - why?

    @@ -636,17 +793,90 @@ message.

    -6.6) What is the thing with "can't handle multiple signatures"? +6.9) What is the thing with "can't handle multiple signatures"?

    Due to different message formats GnuPG is not always able to split a -file with multiple signatures unambiguously into it's parts. This +file with multiple signatures unambiguously into its parts. This error message informs you that there is something wrong with the input.

    The only way to have multiple signatures in a file is by using the OpenPGP format with one-pass-signature packets (which is GnuPG's default) or the cleartext signed format.

    +

    +6.10) If I submit a key to a keyserver, nothing happens ... +

    +

    +You are most likely using GnuPG on Windows 1.0.2 or older. That's +feature isn't yet implemented, but it's a bug not to say it. Newer +versions issue a warning. Upgrade to 1.0.4 or newer. +

    +

    +6.11) I get "gpg: waiting for lock ..." +

    +

    +A previous gpg has most likely exited abnormally and left a lock +file. Go to ~/.gnupg and look for .*.lock files and remove them. +

    +

    +6.12) Older gpg's (e.g., 1.0) have problems with keys from newer gpgs ... +

    +

    +As of 1.0.3, keys generated with gpg are created with preferences to +TWOFISH (and AES since 1.0.4) and that also means that they have the +capability to use the new MDC encryption method. This will go into +OpenPGP soon and is also suppoted by PGP 7. This new method avoids +a (not so new) attack on all email encryption systems. +

    +This in turn means that pre-1.0.3 gpg's have problems with newer +key. Because of security fixes, you should keep your gpg +installation in a recent state anyway. As a workaround, you can +force gpg to use a previous default cipher algo by putting +

    cipher-algo cast5
    into your options file. +

    +

    +6.13) With 1.0.4, I get "this cipher algorithm is deprecated ..." +

    +

    +If you just generated a new key and get this message while +encrypting, you've witnessed a bug in 1.0.4. It uses the new AES +cipher Rijndael that is incorrectly being referred as +"deprecated". Ignore this warning, more recent versions of gpg are +corrected. +

    +

    +6.14) Some dates are displayed as ????-??-??, why? +

    +

    +Due to constraints in most libc implementations, dates beyond +2038-01-19 can't be displayed correctly. 64 bit OSes are not +affected by this problem. To avoid printing wrong dates, GnuPG +instead prints some question marks. To see the correct value, you +can use the options --with-colons and --fixed-list-mode. +

    +

    +6.15) I still have a problem. How do I report a bug? +

    +

    +Are you sure that it's not been mentioned somewhere on the mailing +lists? Did you have a look at the bug list (You'll find a link to +the list of reported bugs on the documentation page). If you're not +sure about it being a bug, you can send mail to the gnupg-devel +list. Otherwise, use the GUUG bug tracking system + +http://bugs.guug.de/Reporting.html. +

    +

    +6.16) Why doesn't GnuPG support X509 certificates? +

    +

    +GnuPG, first and foremost, is an implementation of the OpenPGP +standard (RFC 2440), which is a competing infrastructure, different +from X509. +

    +They are both public-key cryptosystems, but how the public keys are +actually handled is different.

    7. ADVANCED TOPICS @@ -830,6 +1060,40 @@ algorithm to use.

    +

    +7.7) What is the list of preferred algorithms? +

    +

    +The list of preferred algorithms is a list of cypher, hash and +compression algorithms stored in the self-signature of a key during +key generation. When you encrypt a document, GnuPG uses this list +(which is then part of a public key) to determine which algorithms +to use. Basically it tells other people what algorithms the +recipient is able to handle and provides an order of preference. +

    +

    +7.8) How do I change the list of preferred algorithms? +

    +

    +Currently the default is hard-wired into the GnuPG source code. +You'll have to change

    g10/keygen.c
    and recompile. The +function you'll have to change is
    keygen_add_std_prefs
    . +The code is pretty self-explanatory. The constants used to +denote the algorithms are defined in
    include/cipher.h
    . +

    +After having done that, generate a new key pair (or a new encryption +subkey) with the modified executable. This new key will have the +modified preferences and can then be used with unmodified executables. +

    +To modify the preferences of an existing key, use a modified +executable (see above) to change the expiry date and then save the +key. The use your original expiry date and save the key again. Now +you've got the prefs changed and can use the key again with your +unmodified executable. +

    +Changing the list of preferences with an unmodified GnuPG +executable (possibly in the edit-key menu) is on the TODO list and +planned for future releases.

    diff -urN gnupg-1.0.4/doc/faq.raw gnupg-1.0.5/doc/faq.raw --- gnupg-1.0.4/doc/faq.raw Tue Oct 17 15:16:22 2000 +++ gnupg-1.0.5/doc/faq.raw Fri Apr 20 16:13:17 2001 @@ -6,17 +6,17 @@ ] [$usenetheader= ] -[$maintainer=Nils Ellmenreich ] +[$maintainer=Nils Ellmenreich ] [$hGPG=http://www.gnupg.org] [H body bgcolor=#ffffff text=#000000 link=#1f00ff alink=#ff0000 vlink=#9900dd] [H H1]GNUPG FREQUENTLY ASKED QUESTIONS[H /H1] -[H pre] -Version: 0.2 -Last-Modified: Oct 14, 2000 + +Version: 1.2[H p] +Last-Modified: Apr 4, 2001[H p] Maintained-by: [$maintainer] -[H/pre] + This is the GnuPG FAQ. The latest HTML version is available [H a href=[$hGPG]/faq.html] here[H/a]. @@ -25,10 +25,13 @@ all questions may be in the section they belong to. Suggestions about how to improve the structure of this FAQ are welcome. -Please send additions and corrections to the maintainer. Don't send -message like "This should be a FAQ - what's the answer?". If it hasn't -been asked before, it isn't a FAQ. Otherwise, please provide the answer -to be included here. +Please send additions and corrections to the maintainer. It would be +most convenient if you could provide the answer to be included +here. Your help is very much appreciated. + +Please, don't send message like "This should be a FAQ - what's the +answer?". If it hasn't been asked before, it isn't a FAQ. In that case +you could search in the mailing list archive. [H HR] @@ -55,7 +58,7 @@ the OpenPGP standard. But there are some interoperability problems. See questions ff. for details. - SOURCES OF INFORMATION + SOURCES of INFORMATION Where can I find more information? @@ -68,20 +71,29 @@ document about how to convert from PGP 2.x to GnuPG. [H LI] On [H a href=http://lists.gnupg.org][H/a] - you'll find a searchable online archive of the GnuPG mailing lists. + you'll find a searchable online archive of the GnuPG mailing + lists. Most interesting should be gnupg-users for all user-related + issues and gnupg-devel if you want to get in touch with the + developers. [H B]PLEASE:[H/B] Before posting to a list, read this FAQ and the available - documentation. This way you help people focus on topics that have - not yet been resolved. + documentation. In addition, search the list archive - maybe your + question has already been discussed. This way you help people focus + on topics that have not yet been resolved. + + [H LI] The GnuPG source distribution contains a subdirectory + [H PRE]./doc[H /PRE] where some additional documentation is located + (mainly interesting for hackers, not the casual user). [H /UL] Where do I get GnuPG? - You can download the GNU Privacy Guard from it's primary FTP server + You can download the GNU Privacy Guard from its primary FTP server [H a href=ftp://ftp.gnupg.org/pub/gcrypt]ftp.gnupg.org[H /a] or from one of the mirrors: [H a href=[$hGPG]/mirrors.html]<[$hGPG]/mirror.html>[H /a] - + The current version is 1.0.4, please upgrade to this version as it + fixes a security bug regarding the verification of multiple signatures. INSTALLATION @@ -90,7 +102,7 @@ It should run on most Unices as well as Windows 95 and Windows NT. A list of OSes reported to be OK is presented at - [H a href=http://www.gnupg.org/gnupg.html#supsys] + [H a href=http://www.gnupg.org/backend.html#supsys] http://www.gnupg.org/gnupg.html#supsys [H /a]. Which random gatherer should I use? @@ -101,10 +113,13 @@ random data through /dev/random - this should be the preferred choice on these systems. Also Solaris users with the SUNWski package installed have a /dev/random. In these cases, use the configure - option [H pre]--enable-static-rnd=linux[H/pre]. + option [H pre]--enable-static-rnd=linux[H/pre]. In addition, there's + also the kernel random device by Andi Maier [H a href= http://www.cosy.sbg.ac.at/~andi] + [H /a], but it's still beta. Use at + own risk! On other systems, the Entropy Gathering Daemon (EGD) is a good - choice. It is a perl-daemon that monitors system activity nad hashes + choice. It is a perl-daemon that monitors system activity and hashes it into random data. See the download page [H a href=http://www.gnupg.org/download.html][H /a] how to obtain egd. Use [H pre]--enable-static-rnd=egd[H/pre] here. @@ -132,9 +147,6 @@ load-extension idea [H /pre] - The extension is not available for the Windows version of GnuPG. - - USAGE What is the recommended key size? @@ -143,9 +155,20 @@ signatures this is sufficient as the size of the hash is probably the weakest link if the key size is larger than 1024 bits. Encryption keys may have greater sizes, - but you should than check the fingerprint of this key: + but you should then check the fingerprint of this key: "gpg --fingerprint --fingerprint ". + As for the key algorithms, you should stick with the default (i.e., + DSA signature and ElGamal encryption). A ElGamal signing key has the + following disadvantages: the signature is larger, it is hard to + create such a key useful for signatures which can withstand some + real world attacks, you don't get any extra security compared to + DSA, there might be compatibility problems with certain PGP + versions. It has only been introduced because at the time it was + not clear whether there is was patent on DSA. + + + Why does it sometimes take so long to create keys? The problem here is that we need a lot of random bytes and for that @@ -154,7 +177,7 @@ talked to Ted Ts'o and he commented that the best way to fill the buffer is to play with your keyboard. Good security has its price. What I do is to hit several times on the shift, control, alternate, - and capslock keys, because these keys do not produce output to the + and caps lock keys, because these keys do not produce output to the screen. This way you get your keys really fast (it's the same thing PGP2 does). @@ -301,8 +324,8 @@ How can a get list of key IDs used to encrypt a message? - [H pre] gpg --batch --decrypt --list-only --status-fd 1 2>/dev/null - \ | awk '/^\[GNUPG:\] ENC_TO / { print $3 }' [H /pre] + [H pre] gpg --batch --decrypt --list-only --status-fd 1 2>/dev/null | \ + awk '/^\[GNUPG:\] ENC_TO / { print $3 }' [H /pre] I can't decrypt my symmetrical only (-c) encrypted message with a new version of GnuPG. @@ -339,23 +362,76 @@ turn can revoke all the subkeys installed on that machine and install new subkeys. [H /OL] + Which email-client can I use with GnuPG? + + Using GnuPG to encrypt email is one of the most popular + uses. Several mail clients or mail user-agents (MUA) support GnuPG + at varying degrees. Simplifying a bit, there are two ways a mail can + be encrypted with GnuPG: the "old style" ASCII armor, i.e. plain + text encryption, and RFC2015 style (previously PGP/MIME, now + OpenPGP). The latter has full MIME support. Some MUAs support only + one of them, so whichever you actually use depends on your needs as + well as the capabilities of your addressee. + + The following list is probably not exhaustive: + + OpenPGP: Mutt (Unix), Emacs/Mew, Becky2 (Windows, with plugin), + TkRat (Unix). There is effort for a Mozilla plugin and + Emacs/GNUS has support in the current CVS. + + ASCII: Emacs/{VM,GNUS}/MailCrypt, Mutt(Unix), Pine(Unix), and + probably many more. + A good overview of PGP-support is present at + [H a href=http://cryptorights.org/pgp-users/pgp-mail-clients.html]http://cryptorights.org/pgp-users/pgp-mail-clients.html[H /a]. + Direct GnuPG support is not mentioned, however, it certain cases it + may be possible to use a wrapper. + + + Can't we have a gpg library? + + This has been frequently requested. However, the current viewpoint + of the GnuPG maintainers is that this would lead to several security + issues and will therefore not be implemented in the foreseeable + future. However, for some areas of areas of application gpgme could + do the trick. You'll find it at + [H a href=ftp://ftp.guug.de/pub/gcrypt/alpha/gpgme]ftp://ftp.guug.de/pub/gcrypt/alpha/gpgme[H /a] COMPATIBILITY ISSUES - How can I encrypt a message so that PGP 2.x is able to decrypt it? + How can I encrypt a message with GnuPG so that PGP is able to decrypt it? + + It depends on the PGP version.[H UL] + + [H LI] PGP 2.x You can't do that because PGP 2.x normally uses IDEA which is not - supported by GnuPG because it is patented (see ), but if you + supported by GnuPG as it is patented (see ), but if you have a modified version of PGP you can try this: [H pre] gpg --rfc1991 --cipher-algo 3des ... [H/pre] - Please don't pipe the data to encrypt to gpg but give it as a + Please don't pipe the data to encrypt to gpg but provide it using a filename; otherwise, PGP 2 will not be able to handle it. + As for conventional encryption, you can't do this for PGP 2. + + + [H LI] PGP 5.x and higher + + You need to provide two additional options: + [H pre]--compress-algo 1 --cipher-algo cast5 [H/pre] + + You may also use "3des" instead of "cast5", "blowfish" does not + work with all versions of pgp5. You may also want to put [H pre] + compress-algo 1 [H/pre] into your ~/.gnupg/options file - this does + not affect normal gnupg operation. + + This applies to conventional encryption as well. + [H /UL] + How do I migrate from PGP 2.x to GnuPG? PGP 2 uses the RSA and IDEA encryption algorithms. Whereas the RSA @@ -364,23 +440,12 @@ may use IDEA even today. In that case, you may refer to Question about how to add IDEA support to GnuPG and read [H a href=http://www.gnupg.org/gph/en/pgp2x.html]http://www.gnupg.org/gph/en/pgp2x.html[H /a] - to perfrom the migration. + to perform the migration. - How can I conventional encrypt a message, so that PGP can decrypt -it? - - You can't do this for PGP 2. For PGP 5 you should use this: - - [H pre] - gpg -c --cipher-algo 3des --compress-algo 1 myfile - [H/pre] - - You may replace "3des" by "cast5". "blowfish" does not work with all - versions of pgp5. You may also want to put [H pre] compress-algo 1 - [H/pre] into your ~/.gnupg/options file - this does not affect - normal gnupg operation. + (removed) + (empty) Why is PGP 5.x not able to encrypt messages with some keys? @@ -410,15 +475,35 @@ where pgpkeyring is the original keyring and not the GnuPG one you might have created in the first step. - PGP 5.x, 6.x do not like my secret key. + PGP does not like my secret key. - PGP probably bails out on some private comment packets used by + Older PGPs probably bail out on some private comment packets used by GnuPG. These packets are fully in compliance with OpenPGP; however PGP is not really OpenPGP aware. A workaround is to export the secret keys with this command: - [H pre] gpg --export-secret-keys --no-comment -a your-key-id [H /pre] + [H pre] $ gpg --export-secret-keys --no-comment -a your-key-id [H /pre] + Another possibility is this: by default, GnuPG encrypts your secret + key using the Blowfish symmetric algorithm. Older PGPs will only + understand 3DES, CAST5, or IDEA symmetric algorithms. Using the + following method you can re-encrypt your secret gpg key with a + different algo: + [H pre] + $ gpg --s2k-cipher-algo=CAST5 --s2k-digest-algo=SHA1 \ + --compress-algo=1 --edit-key + [H /pre] + + Then use passwd to change the password (just change it to the same + thing, but it will encrypt the key with CAST5 this time). + + Now you can export it and PGP should be able to handle it. + + For PGP 6.x the following options work to export a key: + [H pre] + $ gpg --s2k-cipher-algo 3des --compress-algo 1 --rfc1991 \ + --export-secret-keys + [H /pre] PROBLEMS and ERROR MESSAGES @@ -426,15 +511,39 @@ On many systems this program should be installed as setuid(root). This is necessary to lock memory pages. Locking - memory pages prevents the operating system from writing memory pages + memory pages prevents the operating system from writing them to disk and thereby keeping your secret keys really secret. If you get no warning message about insecure memory your operating system supports locking without being root. The program drops root privileges as soon as locked memory is allocated. + On UnixWare 2.x and 7.x you should install GnuPG with the + 'plock' privilege to get the same effect: + [H pre] + filepriv -f plock /path/to/gpg + [H /pre] + If you can't or don't want to install GnuPG setuid(root), you can use the option "--no-secmem-warning" or put [H pre] - no-secmem-warning [H /pre] in your ~/.gnupg/options file. + no-secmem-warning [H /pre] in your ~/.gnupg/options file (this + disables the warning). + + On some systems (e.g., Windows) GnuPG does not lock memory pages + and older GnuPG versions (<=1.0.4) issue the warning + [H pre] + gpg: Please note that you don't have secure memory + [H /pre] + This warning can't be switched off by the above option because it + was thought to be a too serious issue. However, it confused users + too much so the warning was eventually removed. + + Large File Support doesn't work .. + + LFS is correctly working in post-1.0.4 CVS. If configure doesn't + detect it correctly, try a different (i.e., better) compiler. egcs + 1.1.2 works fine, other gccs sometimes don't. BTW, several + compilation problems of GnuPG 1.0.3 and 1.0.4 on HP-UX and Solaris + were due to broken LFS support. In the edit menu the trust values is not displayed correctly after signing uids - why? @@ -444,6 +553,17 @@ save command. This is a not easy to fix design bug which will be addressed in some future release. + What does "skipping pubkey 1: already loaded" mean? + + As of GnuPG 1.0.3, the RSA algorithm is included. If you still have + a "load-extension rsa" in your .options files, the above message + occurs. Just remove the load command from the .options file. + + GnuPG 1.0.4 doesn't create ~/.gnupg ... + + That's a known bug, already fixed in the CVS (and will be in the + next release, of course). + An ElGamal signature does not verify anymore since version 1.0.2 ... Use the option --emulate-md-encode-bug. @@ -469,13 +589,72 @@ What is the thing with "can't handle multiple signatures"? Due to different message formats GnuPG is not always able to split a - file with multiple signatures unambiguously into it's parts. This + file with multiple signatures unambiguously into its parts. This error message informs you that there is something wrong with the input. The only way to have multiple signatures in a file is by using the OpenPGP format with one-pass-signature packets (which is GnuPG's default) or the cleartext signed format. + If I submit a key to a keyserver, nothing happens ... + + You are most likely using GnuPG on Windows 1.0.2 or older. That's + feature isn't yet implemented, but it's a bug not to say it. Newer + versions issue a warning. Upgrade to 1.0.4 or newer. + + I get "gpg: waiting for lock ..." + + A previous gpg has most likely exited abnormally and left a lock + file. Go to ~/.gnupg and look for .*.lock files and remove them. + + Older gpg's (e.g., 1.0) have problems with keys from newer gpgs ... + + As of 1.0.3, keys generated with gpg are created with preferences to + TWOFISH (and AES since 1.0.4) and that also means that they have the + capability to use the new MDC encryption method. This will go into + OpenPGP soon and is also suppoted by PGP 7. This new method avoids + a (not so new) attack on all email encryption systems. + + This in turn means that pre-1.0.3 gpg's have problems with newer + key. Because of security fixes, you should keep your gpg + installation in a recent state anyway. As a workaround, you can + force gpg to use a previous default cipher algo by putting + [H pre]cipher-algo cast5[H /pre] into your options file. + + With 1.0.4, I get "this cipher algorithm is deprecated ..." + + If you just generated a new key and get this message while + encrypting, you've witnessed a bug in 1.0.4. It uses the new AES + cipher Rijndael that is incorrectly being referred as + "deprecated". Ignore this warning, more recent versions of gpg are + corrected. + + Some dates are displayed as ????-??-??, why? + + Due to constraints in most libc implementations, dates beyond + 2038-01-19 can't be displayed correctly. 64 bit OSes are not + affected by this problem. To avoid printing wrong dates, GnuPG + instead prints some question marks. To see the correct value, you + can use the options --with-colons and --fixed-list-mode. + + I still have a problem. How do I report a bug? + + Are you sure that it's not been mentioned somewhere on the mailing + lists? Did you have a look at the bug list (You'll find a link to + the list of reported bugs on the documentation page). If you're not + sure about it being a bug, you can send mail to the gnupg-devel + list. Otherwise, use the GUUG bug tracking system + [H a href=http://bugs.guug.de/Reporting.html] + http://bugs.guug.de/Reporting.html[H /a]. + + Why doesn't GnuPG support X509 certificates? + + GnuPG, first and foremost, is an implementation of the OpenPGP + standard (RFC 2440), which is a competing infrastructure, different + from X509. + + They are both public-key cryptosystems, but how the public keys are + actually handled is different. ADVANCED TOPICS @@ -645,6 +824,36 @@ algorithm to use. + What is the list of preferred algorithms? + + The list of preferred algorithms is a list of cypher, hash and + compression algorithms stored in the self-signature of a key during + key generation. When you encrypt a document, GnuPG uses this list + (which is then part of a public key) to determine which algorithms + to use. Basically it tells other people what algorithms the + recipient is able to handle and provides an order of preference. + + How do I change the list of preferred algorithms? + + Currently the default is hard-wired into the GnuPG source code. + You'll have to change [H pre]g10/keygen.c[H/pre] and recompile. The + function you'll have to change is [H pre]keygen_add_std_prefs[H /pre]. + The code is pretty self-explanatory. The constants used to + denote the algorithms are defined in [H pre]include/cipher.h[H /pre]. + + After having done that, generate a new key pair (or a new encryption + subkey) with the modified executable. This new key will have the + modified preferences and can then be used with unmodified executables. + + To modify the preferences of an existing key, use a modified + executable (see above) to change the expiry date and then save the + key. The use your original expiry date and save the key again. Now + you've got the prefs changed and can use the key again with your + unmodified executable. + + Changing the list of preferences with an unmodified GnuPG + executable (possibly in the edit-key menu) is on the TODO list and + planned for future releases. ACKNOWLEDGEMENTS diff -urN gnupg-1.0.4/doc/gpg.1 gnupg-1.0.5/doc/gpg.1 --- gnupg-1.0.4/doc/gpg.1 Wed Sep 6 16:38:47 2000 +++ gnupg-1.0.5/doc/gpg.1 Sat Apr 28 20:43:45 2001 @@ -67,7 +67,7 @@ \fBgpg\fP is the main program for the GnuPG system. .PP -This man page does only list the commands and options available. +This man page only lists the commands and options available. For a more verbose documentation get the GNU Privacy Handbook (GPH), which is available at http://www.gnupg.org/gph/ . You will find a list of HOWTO documents at http://www.gnupg.org/docs.html . @@ -84,7 +84,7 @@ .IP "-e, --encrypt" 10 Encrypt data. This option may be combined with --sign. .IP "-c, --symmetric" 10 -Encrypt with symmetric cipher only +Encrypt with symmetric cipher only. This command asks for a passphrase. .IP "--store" 10 Store only (make a simple RFC1991 packet). @@ -100,20 +100,21 @@ .IP "--verify [[\fBsigfile\fR] [\fBsigned-files\fR]]" 10 Assume that \fBsigfile\fR is a signature and verify it without generating any output. With no arguments, -the signature packet is read from stdin (it may be a -detached signature when not used in batch mode). If +the signature packet is read from stdin. If only a sigfile is given, it may be a complete signature or a detached signature, in which case the signed stuff is expected in a file without the -".sig" or ".asc" extension (if such a file does -not exist it is expected at stdin; use a single dash ("-") as -filename to force a read from stdin). With more than +".sig" or ".asc" extension. +With more than 1 argument, the first should be a detached signature -and the remaining files are the signed stuff. +and the remaining files are the signed stuff. To read the signed +stuff from stdin, use \fB-\fP as the second filename. +For security reasons a detached signature cannot read the signed +material from stdin without denoting it in the above way. .IP "--verify-files [\fBfiles\fR]" 10 This is a special version of the --verify command which does not work with -detached signatures. The command expects the files to bee verified either -on the commandline or reads the filenames from stdin; each anem muts be on +detached signatures. The command expects the files to be verified either +on the command line or reads the filenames from stdin; each name must be on separate line. The command is intended for quick checking of many files. .IP "--list-keys [\fBnames\fR]" 10 .IP "--list-public-keys [\fBnames\fR]" 10 @@ -138,9 +139,9 @@ useful for debugging. .IP "--gen-key" 10 Generate a new key pair. This command is normally only used -interactive. +interactively. .IP "" 10 -There is an experimental feature which allows to create keys +There is an experimental feature which allows you to create keys in batch mode. See the file \fBdoc/DETAILS\fP in the source distribution on how to use this. .IP "--edit-key \fBname\fR" 10 Present a menu which enables you to do all key @@ -174,7 +175,7 @@ .IP "adduid" 10 Create an alternate user id. .IP "deluid" 10 -Delete an user id. +Delete a user id. .IP "addkey" 10 Add a subkey to this key. .IP "delkey" 10 @@ -198,6 +199,8 @@ Check all selected user ids. .IP "pref" 10 List preferences. +.IP "showpref" 10 +More verbose preferences listing. .IP "toggle" 10 Toggle between public and secret key listing. .IP "save" 10 @@ -217,7 +220,8 @@ .IP "-" 10 No ownertrust assigned / not yet calculated. .IP "e" 10 -Trust calculation has failed. +Trust +calculation has failed; probably due to an expired key. .IP "q" 10 Not enough information for calculation. .IP "n" 10 @@ -230,22 +234,24 @@ Ultimately trusted. .RE .IP "--sign-key \fBname\fR" 10 -Sign a public key with you secret key. This is a shortcut version +Sign a public key with your secret key. This is a shortcut version of the subcommand "sign" from --edit. .IP "--lsign-key \fBname\fR" 10 -Sign a public key with you secret key but mark it as non-exportable. +Sign a public key with your secret key but mark it as non-exportable. This is a shortcut version of the subcommand "lsign" from --edit. .IP "--trusted-key \fBlong key ID\fR" 10 Assume that the specified key (which must be given as a full 8 byte key ID) is as trustworthy as one of your own secret keys. This option is useful if you don't want to keep your secret keys (or one of them) -online but still be able to check the validity of a given +online but still want to be able to check the validity of a given recipient's or signator's key. .IP "--delete-key \fBname\fR" 10 Remove key from the public keyring .IP "--delete-secret-key \fBname\fR" 10 Remove key from the secret and public keyring +.IP "--delete-secret-and-public-key \fBname\fR" 10 +Same as --delete-key, but if a secret key exists, it will be removed first. .IP "--gen-revoke" 10 Generate a revocation certificate for the complete key. To revoke a subkey or a signature, use the --edit command. @@ -263,16 +269,16 @@ to a keyserver - select only those keys which are new or changed by you. .IP "--export-all [\fBnames\fR]" 10 -Same as --export, but does also export keys which -are not compatible to OpenPGP. +Same as --export, but also exports keys which +are not compatible with OpenPGP. .IP "--export-secret-keys [\fBnames\fR]" 10 .IP "--export-secret-subkeys [\fBnames\fR]" 10 -Same as --export, but does export the secret keys. +Same as --export, but exports the secret keys instead. This is normally not very useful and a security risk. -the second form of the command has the special property to +The second form of the command has the special property to render the secret part of the primary key useless; this is a GNU extension to OpenPGP and other implementations can -not be expected to successful import such a key. +not be expected to successfully import such a key. .IP "--import [\fBfiles\fR]" 10 .IP "--fast-import [\fBfiles\fR]" 10 Import/merge keys. This adds the given keys to the @@ -282,15 +288,16 @@ command --update-trustdb. .IP "" 10 There are a few other options which control how this command works. -Most notable here is the --merge-only options which does not insert new keys +Most notable here is the --merge-only option which does not insert new keys but does only the merging of new signatures, user-IDs and subkeys. +See also the option --allow-secret-key-import. .IP "--recv-keys \fBkey IDs\fR" 10 Import the keys with the given key IDs from a HKP keyserver. Option --keyserver must be used to give the name of this keyserver. .IP "--export-ownertrust" 10 List the assigned ownertrust values in ASCII format -for backup purposes +for backup purposes. .IP "--import-ownertrust [\fBfiles\fR]" 10 Update the trustdb with the ownertrust values stored in \fBfiles\fR (or stdin if not given); existing @@ -302,7 +309,7 @@ .IP "--gen-random \fB0|1|2\fR [\fBcount\fR]" 10 Emit COUNT random bytes of the given quality level. If count is not given or zero, an endless sequence of random bytes will be emitted. -PLEASE, don't use this command unless you know what you are doing, it may +PLEASE, don't use this command unless you know what you are doing; it may remove precious entropy from the system! .IP "--gen-prime \fBmode\fR \fBbits\fR [\fBqbits\fR]" 10 Use the source, Luke :-). The output format is still subject to change. @@ -312,8 +319,8 @@ .IP "--warranty" 10 Print warranty information. .IP "-h, --help" 10 -Print usage information. This is a really long list even it does list -not all options. +Print usage information. This is a really long list even though it doesn't list +all options. .SH "OPTIONS" .PP Long options can be put in an options file (default "~/.gnupg/options"). @@ -341,7 +348,7 @@ specified, GnuPG asks for the user-id unless --default-recipient is given .IP "--default-recipient \fBname\fR" 10 Use \fBname\fR as default recipient if option --recipient is not used and -don't ask if this is a valid one. \fBname\fR must be a non empty. +don't ask if this is a valid one. \fBname\fR must be non-empty. .IP "--default-recipient-self" 10 Use the default key as default recipient if option --recipient is not used and don't ask if this is a valid one. The default key is the first one from the @@ -349,9 +356,9 @@ .IP "--no-default-recipient" 10 Reset --default-recipient and --default-recipient-self. .IP "--encrypt-to \fBname\fR" 10 -Same as --recipient but this one is intended for -in the options file and may be used together with -an own user-id as an "encrypt-to-self". These keys +Same as --recipient but this one is intended for use +in the options file and may be used with +your own user-id as an "encrypt-to-self". These keys are only used when there are other recipients given either by use of --recipient or by the asked user id. No trust checking is performed for these user ids and @@ -383,7 +390,7 @@ .IP "--no-tty" 10 Make sure that the TTY (terminal) is never used for any output. This option is needed in some cases because GnuPG sometimes prints -warnings to the TTY if if --batch is used. +warnings to the TTY if --batch is used. .IP "--no-batch" 10 Disable batch mode. This may be of use if --batch is enabled from an options file. @@ -409,8 +416,8 @@ that you get different key servers. .IP "--no-auto-key-retrieve" 10 This option disables the automatic retrieving of keys from a keyserver -while verifying signatures. This option allows to keep a keyserver in -the options file or the --send-keys and --recv-keys commands. +while verifying signatures. This option allows you to keep a keyserver in +the options file for the --send-keys and --recv-keys commands. .IP "--honor-http-proxy" 10 Try to access the keyserver over the proxy set with the variable "http_proxy". @@ -446,14 +453,17 @@ The Latin 2 set. .IP "koi8-r" 10 The usual Russian set (rfc1489). +.IP "utf-8" 10 +Bypass all translations and assume +that the OS uses native UTF-8 encoding. .RE .IP "--utf8-strings" 10 .IP "--no-utf8-strings" 10 Assume that the arguments are already given as UTF8 strings. The default (--no-utf8-strings) is to assume that arguments are encoded in the character set as specified -by --charset. These options effects all following arguments. Both options may -used multiple times. +by --charset. These options affect all following arguments. Both options may +be used multiple times. .IP "--options \fBfile\fR" 10 Read options from \fBfile\fR and do not try to read them from the default options file in the homedir @@ -495,10 +505,10 @@ --no-version from a config file. .IP "-N, --notation-data \fBname=value\fR" 10 Put the name value pair into the signature as notation data. -\fBname\fR must consists only of alphanumeric characters, digits +\fBname\fR must consist only of alphanumeric characters, digits or the underscore; the first character must not be a digit. -\fBvalue\fR may be any printable string; it will encoded in UTF8, -so sou should have check that your --charset is set right. +\fBvalue\fR may be any printable string; it will be encoded in UTF8, +so you should check that your --charset is set correctly. If you prefix \fBname\fR with an exclamation mark, the notation data will be flagged as critical (rfc2440:5.2.3.15). .IP "--set-policy-url \fBstring\fR" 10 @@ -564,6 +574,20 @@ Never allow the use of \fBname\fR as public key algorithm. The given name will not be checked so that a later loaded algorithm will still get disabled. +.IP "--no-sig-cache" 10 +Do not cache the verification status of key signatures. +Caching gives a much better performance in key listings. However, if +you suspect that your public keyring is not save against write +modifications, you can use this option to disable the caching. It +probably does not make sense to disable it because all kind of damage +can be done if someone else has write access to your public keyring. +.IP "--no-sig-create-check" 10 +GnuPG normally verifies each signature right after creation to protect +against bugs and hardware malfunctions which could leak out bits from +the secret key. This extra verification needs some time (about 115% +for DSA keys), and so this option can be used to disable it. +However, due to the fact that the signature creation needs manual +interaction, this performance penalty does not matter in most settings. .IP "--throw-keyid" 10 Do not put the keyid into encrypted packets. This option hides the receiver of the message and is a countermeasure @@ -589,11 +613,15 @@ can only be used if only one passphrase is supplied. Don't use this option if you can avoid it. .IP "--command-fd \fBn\fR" 10 -This is a replacement for the depreciated shared-memory IPC mode. +This is a replacement for the deprecated shared-memory IPC mode. If this option is enabled, user input on questions is not expected from the TTY but from the given file descriptor. It should be used together with --status-fd. See the file doc/DETAILS in the source distribution for details on how to use it. +.IP "--use-agent" 10 +Try to use the GnuPG-Agent. Please note that this agent is still under +development. With this option, GnuPG first tries to connect to the +agent before it asks for a passphrase. .IP "--rfc1991" 10 Try to be more RFC1991 (PGP 2.x) compliant. .IP "--openpgp" 10 @@ -606,16 +634,17 @@ .IP "--force-v3-sigs" 10 OpenPGP states that an implementation should generate v4 signatures but PGP 5.x recognizes v4 signatures only -on key material. This options forces v3 signatures for +on key material. This option forces v3 signatures for signatures on data. .IP "--force-mdc" 10 Force the use of encryption with appended manipulation -code. This is always used with the newer cipher (those +code. This is always used with the newer ciphers (those with a blocksize greater than 64 bit). This option might not be implemented yet. .IP "--allow-non-selfsigned-uid" 10 -Allow the import of keys with user IDs which are not self-signed. -This is only allows the import - key validation will fail and you +Allow the import of keys with user IDs which are not self-signed, but +have at least one signature. +This only allows the import - key validation will fail and you have to check the validity of the key my other means. This hack is needed for some German keys generated with pgp 2.6.3in. You should really avoid using it, because OpenPGP has better mechanics to do separate signing @@ -629,6 +658,13 @@ signatures have plausible values. However, sometimes a signature seems to be older than the key due to clock problems. This option makes these checks just a warning. +.IP "--ignore-crc-error" 10 +The ASCII armor used by OpenPG is protected by a CRC checksum against +transmission errors. Sometimes it happens that the CRC gets mangled +somewhere on the transmission channel +but the actual content (which is anyway protected by +the OpenPGP protocol) is still okay. This option will let gpg ignore +CRC errors. .IP "--lock-once" 10 Lock the databases the first time a lock is requested and do not release the lock until the process @@ -640,13 +676,13 @@ .IP "--lock-never" 10 Disable locking entirely. This option should be used only in very special environments, where it can be assured that only one process -is accessing those files. A bootable floppy with a standalone +is accessing those files. A bootable floppy with a stand-alone encryption system will probably use this. Improper usage of this option may lead to data and key corruption. .IP "--no-random-seed-file" 10 -GnuPG uses a file to store it's internal random pool over invocations. +GnuPG uses a file to store its internal random pool over invocations. This makes random generation faster; however sometimes write operations -are not desired. This option can be used to achive that with the cost of +are not desired. This option can be used to achieve that with the cost of slower random generation. .IP "--no-verbose" 10 Reset verbose level to 0. @@ -675,19 +711,22 @@ Changes the output of the list commands to work faster; this is achieved by leaving some parts empty. Some applications don't need the user ID and the trust information given in the listings. By using this options they -can get a faster listing. The excact behaviour of this option may change +can get a faster listing. The exact behaviour of this option may change in future versions. +.IP "--fixed-list-mode" 10 +Do not merge user ID and primary key in --with-colon listing mode and +print all timestamps as seconds since 1970-01-01. .IP "--list-only" 10 Changes the behaviour of some commands. This is like --dry-run but different in some cases. The semantic of this command may be extended in -the future. Currently it does only skip the actual decryption pass and +the future. Currently it only skips the actual decryption pass and therefore enables a fast listing of the encryption keys. .IP "--no-literal" 10 This is not for normal use. Use the source to see for what it might be useful. .IP "--set-filesize" 10 This is not for normal use. Use the source to see for what it might be useful. .IP "--emulate-md-encode-bug" 10 -GnuPG versions prior to 1.0.2 had a bug in the way a signature was encode. +GnuPG versions prior to 1.0.2 had a bug in the way a signature was encoded. This options enables a workaround by checking faulty signatures again with the encoding used in old versions. This may only happen for ElGamal signatures which are not widely used. @@ -707,18 +746,27 @@ handing out the secret key. .IP "--merge-only" 10 Don't insert new keys into the keyrings while doing an import. +.IP "--allow-secret-key-import" 10 +Allow import of secret keys. The import command normally skips secret +keys because a secret key can otherwise be used to attack the trust +calculation. .IP "--try-all-secrets" 10 Don't look at the key ID as stored in the message but try all secret keys in turn to find the right decryption key. This option forces the behaviour as used by anonymous recipients (created by using --throw-keyid) and might come handy in case where an encrypted message contains a bogus key ID. +.IP "--enable-special-filenames" 10 +This options enables a mode in which filenames of the form +\fB-&n\fP, where n is a non-negative decimal number, +refer to the file descriptor n and not to a file with that name. +.IP "--no-expensive-trust-checks" 10 +Experimental use only. .SH "How to specify a user ID" .PP There are different ways on how to specify a user ID to GnuPG; here are some examples: .IP "" 10 -Used to locate the default home directory. .IP "234567C4" 10 .IP "0F34E556E" 10 .IP "01347A56A" 10 @@ -753,8 +801,14 @@ .IP "Heine" 10 .IP "*Heine" 10 By case insensitive substring matching. This is the default mode but -applications may want to explicitely indicate this by putting the asterisk +applications may want to explicitly indicate this by putting the asterisk in front. +.PP +Note that you can append an exclamation mark to key IDs or +fingerprints. This flag which tells GnuPG to use exactly +that primary or secondary key and don't try to figure out which +secondary or primary key to use. + .SH "RETURN VALUE" .PP The program returns 0 if everything was fine, 1 if at least @@ -817,12 +871,16 @@ .PP Keep in mind that, if this program is used over a network (telnet), it is *very* easy to spy out your passphrase! +.PP +If you are going to verify detached signatures, make sure that the +program nows about it; either be giving both filenames on the +commandline or using \fB-\fP to specify stdin. .SH "BUGS" .PP On many systems this program should be installed as setuid(root). This is necessary to lock memory pages. Locking memory pages prevents the operating system from writing memory pages to disk. If you get no -warning message about insecure memory 3our operating system supports +warning message about insecure memory your operating system supports locking without being root. The program drops root privileges as soon as locked memory is allocated. -...\" created by instant / docbook-to-man, Wed 06 Sep 2000, 16:38 +...\" created by instant / docbook-to-man, Sat 28 Apr 2001, 20:43 diff -urN gnupg-1.0.4/doc/gpg.info gnupg-1.0.5/doc/gpg.info --- gnupg-1.0.4/doc/gpg.info Thu Jan 1 01:00:00 1970 +++ gnupg-1.0.5/doc/gpg.info Sat Apr 28 20:45:54 2001 @@ -0,0 +1,1024 @@ +This is gpg.info, produced by makeinfo version 4.0 from gpg.texi. + + +File: gpg.info, Node: Top, Up: (dir) + +gpg +*** + +* Menu: + +Name +**** + + gpg --- encryption and signing tool + +Synopsis +******** + +DESCRIPTION +*********** + + `gpg' is the main program for the GnuPG system. + + This man page only lists the commands and options available. For a +more verbose documentation get the GNU Privacy Handbook (GPH), which is +available at http://www.gnupg.org/gph/ . You will find a list of HOWTO +documents at http://www.gnupg.org/docs.html . + +COMMANDS +******** + + `gpg' recognizes these commands: + +-s, --sign + Make a signature. This command may be combined with --encrypt. + +--clearsign + Make a clear text signature. + +-b, --detach-sign + Make a detached signature. + +-e, --encrypt + Encrypt data. This option may be combined with --sign. + +-c, --symmetric + Encrypt with symmetric cipher only. This command asks for a + passphrase. + +--store + Store only (make a simple RFC1991 packet). + +--decrypt `file' + Decrypt `file' (or stdin if no file is specified) and write it to + stdout (or the file specified with --output). If the decrypted + file is signed, the signature is also verified. This command + differs from the default operation, as it never writes to the + filename which is included in the file and it rejects files which + don't begin with an encrypted message. + +--verify `sigfile' `signed-files' + Assume that `sigfile' is a signature and verify it without + generating any output. With no arguments, the signature packet is + read from stdin. If only a sigfile is given, it may be a complete + signature or a detached signature, in which case the signed stuff + is expected in a file without the ".sig" or ".asc" extension. + With more than 1 argument, the first should be a detached signature + and the remaining files are the signed stuff. To read the signed + stuff from stdin, use `-' as the second filename. For security + reasons a detached signature cannot read the signed material from + stdin without denoting it in the above way. + +--verify-files `files' + This is a special version of the --verify command which does not + work with detached signatures. The command expects the files to be + verified either on the command line or reads the filenames from + stdin; each name must be on separate line. The command is intended + for quick checking of many files. + +--list-keys `names' +--list-public-keys `names' + List all keys from the public keyrings, or just the ones given on + the command line. + +--list-secret-keys `names' + List all keys from the secret keyrings, or just the ones given on + the command line. + +--list-sigs `names' + Same as --list-keys, but the signatures are listed too. + +--check-sigs `names' + Same as --list-sigs, but the signatures are verified. + +--fingerprint `names' + List all keys with their fingerprints. This is the same output as + --list-keys but with the additional output of a line with the + fingerprint. May also be combined with --list-sigs or -check-sigs. + If this command is given twice, the fingerprints of all secondary + keys are listed too. + +--list-packets + List only the sequence of packets. This is mainly useful for + debugging. + +--gen-key + Generate a new key pair. This command is normally only used + interactively. + + There is an experimental feature which allows you to create keys + in batch mode. See the file `doc/DETAILS' in the source + distribution on how to use this. + +--edit-key `name' + Present a menu which enables you to do all key related tasks: + + sign + Make a signature on key of user `name' If the key is not yet + signed by the default user (or the users given with -u), the + program displays the information of the key again, together + with its fingerprint and asks whether it should be signed. + This question is repeated for all users specified with -u. + + lsign + Same as --sign but the signature is marked as non-exportable + and will therefore never be used by others. This may be used + to make keys valid only in the local environment. + + revsig + Revoke a signature. GnuPG asks for every signature which has + been done by one of the secret keys, whether a revocation + certificate should be generated. + + trust + Change the owner trust value. This updates the trust-db + immediately and no save is required. + + disable + enable + Disable or enable an entire key. A disabled key can normally + not be used for encryption. + + adduid + Create an alternate user id. + + deluid + Delete a user id. + + addkey + Add a subkey to this key. + + delkey + Remove a subkey. + + revkey + Revoke a subkey. + + expire + Change the key expiration time. If a key is selected, the + time of this key will be changed. With no selection the key + expiration of the primary key is changed. + + passwd + Change the passphrase of the secret key. + + uid `n' + Toggle selection of user id with index `n'. Use 0 to + deselect all. + + key `n' + Toggle selection of subkey with index `n'. Use 0 to deselect + all. + + check + Check all selected user ids. + + pref + List preferences. + + showpref + More verbose preferences listing. + + toggle + Toggle between public and secret key listing. + + save + Save all changes to the key rings and quit. + + quit + Quit the program without updating the key rings. + + The listing shows you the key with its secondary keys and all user + ids. Selected keys or user ids are indicated by an asterisk. The + trust value is displayed with the primary key: the first is the + assigned owner trust and the second is the calculated trust value. + Letters are used for the values: + + - + No ownertrust assigned / not yet calculated. + + e + Trust calculation has failed; probably due to an expired key. + + q + Not enough information for calculation. + + n + Never trust this key. + + m + Marginally trusted. + + f + Fully trusted. + + u + Ultimately trusted. + +--sign-key `name' + Sign a public key with your secret key. This is a shortcut version + of the subcommand "sign" from --edit. + +--lsign-key `name' + Sign a public key with your secret key but mark it as + non-exportable. This is a shortcut version of the subcommand + "lsign" from --edit. + +--trusted-key `long key ID' + Assume that the specified key (which must be given as a full 8 + byte key ID) is as trustworthy as one of your own secret keys. + This option is useful if you don't want to keep your secret keys + (or one of them) online but still want to be able to check the + validity of a given recipient's or signator's key. + +--delete-key `name' + Remove key from the public keyring + +--delete-secret-key `name' + Remove key from the secret and public keyring + +--delete-secret-and-public-key `name' + Same as --delete-key, but if a secret key exists, it will be + removed first. + +--gen-revoke + Generate a revocation certificate for the complete key. To revoke + a subkey or a signature, use the --edit command. + +--export `names' + Either export all keys from all keyrings (default keyrings and + those registered via option --keyring), or if at least one name is + given, those of the given name. The new keyring is written to + stdout or to the file given with option "output". Use together + with --armor to mail those keys. + +--send-keys `names' + Same as --export but sends the keys to a keyserver. Option + --keyserver must be used to give the name of this keyserver. Don't + send your complete keyring to a keyserver - select only those keys + which are new or changed by you. + +--export-all `names' + Same as --export, but also exports keys which are not compatible + with OpenPGP. + +--export-secret-keys `names' +--export-secret-subkeys `names' + Same as --export, but exports the secret keys instead. This is + normally not very useful and a security risk. The second form of + the command has the special property to render the secret part of + the primary key useless; this is a GNU extension to OpenPGP and + other implementations can not be expected to successfully import + such a key. + +--import `files' +--fast-import `files' + Import/merge keys. This adds the given keys to the keyring. The + fast version does not build the trustdb; this can be done at any + time with the command --update-trustdb. + + There are a few other options which control how this command works. + Most notable here is the --merge-only option which does not insert + new keys but does only the merging of new signatures, user-IDs and + subkeys. See also the option --allow-secret-key-import. + +--recv-keys `key IDs' + Import the keys with the given key IDs from a HKP keyserver. + Option --keyserver must be used to give the name of this keyserver. + +--export-ownertrust + List the assigned ownertrust values in ASCII format for backup + purposes. + +--import-ownertrust `files' + Update the trustdb with the ownertrust values stored in `files' + (or stdin if not given); existing values will be overwritten. + +--print-md `algo' `files' + Print message digest of algorithm ALGO for all given files of + stdin. If "*" is used for the algorithm, digests for all + available algorithms are printed. + +--gen-random `0|1|2' `count' + Emit COUNT random bytes of the given quality level. If count is + not given or zero, an endless sequence of random bytes will be + emitted. PLEASE, don't use this command unless you know what you + are doing; it may remove precious entropy from the system! + +--gen-prime `mode' `bits' `qbits' + Use the source, Luke :-). The output format is still subject to + change. + +--version + Print version information along with a list of supported + algorithms. + +--warranty + Print warranty information. + +-h, --help + Print usage information. This is a really long list even though it + doesn't list all options. + +OPTIONS +******* + + Long options can be put in an options file (default +"~/.gnupg/options"). Do not write the 2 dashes, but simply the name of +the option and any required arguments. Lines with a hash as the first +non-white-space character are ignored. Commands may be put in this file +too, but that does not make sense. + + `gpg' recognizes these options: + +-a, --armor + Create ASCII armored output. + +-o, --output `file' + Write output to `file'. + +-u, --local-user `name' + Use `name' as the user ID to sign. This option is silently + ignored for the list commands, so that it can be used in an + options file. + +--default-key `name' + Use `name' as default user ID for signatures. If this is not used + the default user ID is the first user ID found in the secret + keyring. + +-r, --recipient `name' + + Encrypt for user id `name'. If this option is not specified, GnuPG + asks for the user-id unless --default-recipient is given + +--default-recipient `name' + Use `name' as default recipient if option --recipient is not used + and don't ask if this is a valid one. `name' must be non-empty. + +--default-recipient-self + Use the default key as default recipient if option --recipient is + not used and don't ask if this is a valid one. The default key is + the first one from the secret keyring or the one set with + --default-key. + +--no-default-recipient + Reset --default-recipient and -default-recipient-self. + +--encrypt-to `name' + Same as --recipient but this one is intended for use in the + options file and may be used with your own user-id as an + "encrypt-to-self". These keys are only used when there are other + recipients given either by use of --recipient or by the asked user + id. No trust checking is performed for these user ids and even + disabled keys can be used. + +--no-encrypt-to + Disable the use of all --encrypt-to keys. + +-v, --verbose + Give more information during processing. If used twice, the input + data is listed in detail. + +-q, --quiet + Try to be as quiet as possible. + +-z `n' + Set compression level to `n'. A value of 0 for `n' disables + compression. Default is to use the default compression level of + zlib (normally 6). + +-t, --textmode + Use canonical text mode. If -t (but not --textmode) is used + together with armoring and signing, this enables clearsigned + messages. This kludge is needed for PGP compatibility; normally + you would use --sign or -clearsign to selected the type of the + signature. + +-n, --dry-run + Don't make any changes (this is not completely implemented). + +-i, --interactive + Prompt before overwriting any files. + +--batch + Use batch mode. Never ask, do not allow interactive commands. + +--no-tty + Make sure that the TTY (terminal) is never used for any output. + This option is needed in some cases because GnuPG sometimes prints + warnings to the TTY if --batch is used. + +--no-batch + Disable batch mode. This may be of use if --batch is enabled from + an options file. + +--yes + Assume "yes" on most questions. + +--no + Assume "no" on most questions. + +--always-trust + Skip key validation and assume that used keys are always fully + trusted. You won't use this unless you have installed some + external validation scheme. + +--keyserver `name' + Use `name' to lookup keys which are not yet in your keyring. This + is only done while verifying messages with signatures. The option + is also required for the command --send-keys to specify the + keyserver to where the keys should be send. All keyservers + synchronize with each other - so there is no need to send keys to + more than one server. Using the command "host -l pgp.net | grep + wwwkeys" gives you a list of keyservers. Because there is load + balancing using round-robin DNS you may notice that you get + different key servers. + +--no-auto-key-retrieve + This option disables the automatic retrieving of keys from a + keyserver while verifying signatures. This option allows you to + keep a keyserver in the options file for the --send-keys and + -recv-keys commands. + +--honor-http-proxy + Try to access the keyserver over the proxy set with the variable + "http_proxy". + +--keyring `file' + Add `file' to the list of keyrings. If `file' begins with a tilde + and a slash, these are replaced by the HOME directory. If the + filename does not contain a slash, it is assumed to be in the + home-directory ("~/.gnupg" if --homedir is not used). The + filename may be prefixed with a scheme: + + "gnupg-ring:" is the default one. + + "gnupg-gdbm:" may be used for a GDBM ring. Note that GDBM is + experimental and likely to be removed in future versions. + + It might make sense to use it together with --no-default-keyring. + +--secret-keyring `file' + Same as --keyring but for the secret keyrings. + +--homedir `directory' + Set the name of the home directory to `directory' If this option + is not used it defaults to "~/.gnupg". It does not make sense to + use this in a options file. This also overrides the environment + variable "GNUPGHOME". + +--charset `name' + Set the name of the native character set. This is used to convert + some strings to proper UTF-8 encoding. Valid values for `name' + are: + + iso-8859-1 + This is the default Latin 1 set. + + iso-8859-2 + The Latin 2 set. + + koi8-r + The usual Russian set (rfc1489). + + utf-8 + Bypass all translations and assume that the OS uses native + UTF-8 encoding. + +--utf8-strings +--no-utf8-strings + Assume that the arguments are already given as UTF8 strings. The + default (--no-utf8-strings) is to assume that arguments are + encoded in the character set as specified by --charset. These + options affect all following arguments. Both options may be used + multiple times. + +--options `file' + Read options from `file' and do not try to read them from the + default options file in the homedir (see --homedir). This option + is ignored if used in an options file. + +--no-options + Shortcut for "--options /dev/null". This option is detected before + an attempt to open an option file. + +--load-extension `name' + Load an extension module. If `name' does not contain a slash it is + searched in "/usr/local/lib/gnupg" See the manual for more + information about extensions. + +--debug `flags' + Set debugging flags. All flags are or-ed and `flags' may be given + in C syntax (e.g. 0x0042). + +--debug-all + Set all useful debugging flags. + +--status-fd `n' + Write special status strings to the file descriptor `n'. See the + file DETAILS in the documentation for a listing of them. + +--logger-fd `n' + Write log output to file descriptor `n' and not to stderr. + +--no-comment + Do not write comment packets. This option affects only the + generation of secret keys. Please note, that this has nothing to + do with the comments in clear text signatures. + +--comment `string' + Use `string' as comment string in clear text signatures. To + suppress those comment strings entirely, use an empty string here. + +--default-comment + Force to write the standard comment string in clear text + signatures. Use this to overwrite a --comment from a config file. + +--no-version + Omit the version string in clear text signatures. + +--emit-version + Force to write the version string in clear text signatures. Use + this to overwrite a previous --no-version from a config file. + +-N, --notation-data `name=value' + Put the name value pair into the signature as notation data. + `name' must consist only of alphanumeric characters, digits or the + underscore; the first character must not be a digit. `value' may + be any printable string; it will be encoded in UTF8, so you should + check that your --charset is set correctly. If you prefix `name' + with an exclamation mark, the notation data will be flagged as + critical (rfc2440:5.2.3.15). + +--set-policy-url `string' + Use `string' as Policy URL for signatures (rfc2440:5.2.3.19). If + you prefix it with an exclamation mark, the policy URL packet will + be flagged as critical. + +--set-filename `string' + Use `string' as the name of file which is stored in messages. + +--use-embedded-filename + Try to create a file with a name as embedded in the data. This + can be a dangerous option as it allows to overwrite files. + +--completes-needed `n' + Number of completely trusted users to introduce a new key signer + (defaults to 1). + +--marginals-needed `n' + Number of marginally trusted users to introduce a new key signer + (defaults to 3) + +--max-cert-depth `n' + Maximum depth of a certification chain (default is 5). + +--cipher-algo `name' + Use `name' as cipher algorithm. Running the program with the + command --version yields a list of supported algorithms. If this + is not used the cipher algorithm is selected from the preferences + stored with the key. + +--digest-algo `name' + Use `name' as message digest algorithm. Running the program with + the command --version yields a list of supported algorithms. + Please note that using this option may violate the OpenPGP + requirement, that a 160 bit hash is to be used for DSA. + +--s2k-cipher-algo `name' + Use `name' as the cipher algorithm used to protect secret keys. + The default cipher is BLOWFISH. This cipher is also used for + conventional encryption if --cipher-algo is not given. + +--s2k-digest-algo `name' + Use `name' as the digest algorithm used to mangle the passphrases. + The default algorithm is RIPE-MD-160. This digest algorithm is + also used for conventional encryption if --digest-algo is not + given. + +--s2k-mode `n' + Selects how passphrases are mangled. If `n' is 0 a plain + passphrase (which is not recommended) will be used, a 1 (default) + adds a salt to the passphrase and a 3 iterates the whole process a + couple of times. Unless --rfc1991 is used, this mode is also used + for conventional encryption. + +--compress-algo `n' + Use compress algorithm `n'. Default is 2 which is RFC1950 + compression. You may use 1 to use the old zlib version (RFC1951) + which is used by PGP. The default algorithm may give better + results because the window size is not limited to 8K. If this is + not used the OpenPGP behavior is used, i.e. the compression + algorithm is selected from the preferences; note, that this can't + be done if you do not encrypt the data. + +--disable-cipher-algo `name' + Never allow the use of `name' as cipher algorithm. The given name + will not be checked so that a later loaded algorithm will still + get disabled. + +--disable-pubkey-algo `name' + Never allow the use of `name' as public key algorithm. The given + name will not be checked so that a later loaded algorithm will + still get disabled. + +--no-sig-cache + Do not cache the verification status of key signatures. Caching + gives a much better performance in key listings. However, if you + suspect that your public keyring is not save against write + modifications, you can use this option to disable the caching. It + probably does not make sense to disable it because all kind of + damage can be done if someone else has write access to your public + keyring. + +--no-sig-create-check + GnuPG normally verifies each signature right after creation to + protect against bugs and hardware malfunctions which could leak + out bits from the secret key. This extra verification needs some + time (about 115% for DSA keys), and so this option can be used to + disable it. However, due to the fact that the signature creation + needs manual interaction, this performance penalty does not matter + in most settings. + +--throw-keyid + Do not put the keyid into encrypted packets. This option hides the + receiver of the message and is a countermeasure against traffic + analysis. It may slow down the decryption process because all + available secret keys are tried. + +--not-dash-escaped + This option changes the behavior of cleartext signatures so that + they can be used for patch files. You should not send such an + armored file via email because all spaces and line endings are + hashed too. You can not use this option for data which has 5 + dashes at the beginning of a line, patch files don't have this. A + special armor header line tells GnuPG about this cleartext + signature option. + +--escape-from-lines + Because some mailers change lines starting with "From " to " + Using an exact to match string. The equal sign indicates this. + + + Using the email address part which must match exactly. The left + angle bracket indicates this email address mode. + ++Heinrich Heine duesseldorf + All words must match exactly (not case sensitive) but can appear in + any order in the user ID. Words are any sequences of letters, + digits, the underscore and all characters with bit 7 set. + +#34 + Using the Local ID. This is a very low level method and should + only be used by applications which really need it. The hash + character indicates this method. An application should not assume + that this is only a number. + +Heine +*Heine + By case insensitive substring matching. This is the default mode + but applications may want to explicitly indicate this by putting + the asterisk in front. + + Note that you can append an exclamation mark to key IDs or +fingerprints. This flag which tells GnuPG to use exactly that primary +or secondary key and don't try to figure out which secondary or primary +key to use. + +RETURN VALUE +************ + + The program returns 0 if everything was fine, 1 if at least a +signature was bad, and other error codes for fatal errors. + +EXAMPLES +******** + +gpg -se -r `Bob' `file' + sign and encrypt for user Bob + +gpg --clearsign `file' + make a clear text signature + +gpg -sb `file' + make a detached signature + +gpg --list-keys `user_ID' + show keys + +gpg --fingerprint `user_ID' + show fingerprint + +gpg --verify `pgpfile' +gpg --verify `sigfile' `files' + Verify the signature of the file but do not output the data. The + second form is used for detached signatures, where `sigfile' is + the detached signature (either ASCII armored of binary) and + `files' are the signed data; if this is not given the name of the + file holding the signed data is constructed by cutting off the + extension (".asc" or ".sig") of `sigfile' or by asking the user + for the filename. + +ENVIRONMENT +*********** + +HOME + Used to locate the default home directory. + +GNUPGHOME + If set directory used instead of "~/.gnupg". + +http_proxy + Only honored when the option --honor-http-proxy is set. + +FILES +***** + +~/.gnupg/secring.gpg + The secret keyring + +~/.gnupg/secring.gpg.lock + and the lock file + +~/.gnupg/pubring.gpg + The public keyring + +~/.gnupg/pubring.gpg.lock + and the lock file + +~/.gnupg/trustdb.gpg + The trust database + +~/.gnupg/trustdb.gpg.lock + and the lock file + +~/.gnupg/random_seed + used to preserve the internal random pool + +~/.gnupg/options + May contain options + +/usr[/local]/share/gnupg/options.skel + Skeleton options file + +/usr[/local]/lib/gnupg/ + Default location for extensions + +WARNINGS +******** + + Use a *good* password for your user account and a *good* passphrase +to protect your secret key. This passphrase is the weakest part of the +whole system. Programs to do dictionary attacks on your secret keyring +are very easy to write and so you should protect your "~/.gnupg/" +directory very well. + + Keep in mind that, if this program is used over a network (telnet), +it is *very* easy to spy out your passphrase! + + If you are going to verify detached signatures, make sure that the +program nows about it; either be giving both filenames on the +commandline or using `-' to specify stdin. + +BUGS +**** + + On many systems this program should be installed as setuid(root). +This is necessary to lock memory pages. Locking memory pages prevents +the operating system from writing memory pages to disk. If you get no +warning message about insecure memory your operating system supports +locking without being root. The program drops root privileges as soon +as locked memory is allocated. + + + +Tag Table: +Node: Top67 + +End Tag Table diff -urN gnupg-1.0.4/doc/gpg.sgml gnupg-1.0.5/doc/gpg.sgml --- gnupg-1.0.4/doc/gpg.sgml Wed Sep 6 13:57:34 2000 +++ gnupg-1.0.5/doc/gpg.sgml Sat Apr 28 20:43:18 2001 @@ -1,5 +1,5 @@