From 2b95cb78b556d6b4b5b168336e121fc27449b199 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 30 Aug 2002 16:36:08 +0000 Subject: [PATCH] * configure.ac (random_modules): Reworked the code to select the random module. Define USE_ALL_RANDOM_MODULES for value all. --- ChangeLog | 5 ++ NEWS | 9 +++- README | 4 +- THANKS | 1 + TODO | 21 -------- configure.ac | 132 ++++++++++++++++++++++++++++++--------------------- 6 files changed, 93 insertions(+), 79 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a3fc0e06..6805558aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-08-29 Werner Koch + + * configure.ac (random_modules): Reworked the code to select the + random module. Define USE_ALL_RANDOM_MODULES for value all. + 2002-08-27 David Shaw * configure.ac: Check type of mode_t. diff --git a/NEWS b/NEWS index 8e0163ca8..7a565e749 100644 --- a/NEWS +++ b/NEWS @@ -28,8 +28,13 @@ Noteworthy changes in version 1.1.92 * The default configuration file is now ~/.gnupg/gpg.conf. If an old ~/.gnupg/options is found it will still be used. This - change is required to have more consistent naming scheme with - forthcoming tool. + change is required to have a more consistent naming scheme with + forthcoming tools. + + * The configure option --with-static-rnd=auto allows to build gpg + with all available entropy gathering modules included. At + runtime the best usable one will be selected from the list + linux, egd, unix. Noteworthy changes in version 1.1.91 (2002-08-04) diff --git a/README b/README index 53f746879..624e49de1 100644 --- a/README +++ b/README @@ -469,7 +469,9 @@ linux - Use the module which accesses /dev/random. This is the first choice and the default one for GNU/Linux or *BSD. - + auto - Compile linux, egd and unix in and + automagically select at runtime. + --with-egd-socket= This is only used when EGD is used as random gatherer. GnuPG uses by default "~/.gnupg/entropy" diff --git a/THANKS b/THANKS index 54a9058c5..5b8fbe9c7 100644 --- a/THANKS +++ b/THANKS @@ -36,6 +36,7 @@ Daniel Resare daniel@resare.com Dave Dykstra dwd@bell-labs.com David C Niemi niemi@tuxers.net David Champion dgc@uchicago.edu +David D. Scribner dscribner@bigfoot.com David Ellement ellement@sdd.hp.com David Hallinan hallinan@rtd.com David Hollenberg dhollen@ISI.EDU diff --git a/TODO b/TODO index eca520090..8ce3aaa8f 100644 --- a/TODO +++ b/TODO @@ -5,9 +5,6 @@ * Check for consistent spelling of user ID, key ID etc. Replace "user id not found" in getkey.c by "no valid user ID found". - * Add remarks to the man page about OpenPGP OPTIONAL algorithms and - issue warnings when such an algorithm is used (disabled by expert modus?) - * Return status information even when an imported key is already stored. This is useful for GPGME's detailed info function. @@ -29,9 +26,6 @@ * Check the changes to the gpg random gatherer on all W32 platforms. - * Put a note into readme.w32 that there is a man page and a options - file; write the registry stuff in regedit format. - * Show more info does not work from edit->trust * set default charset from nl_langinfo. @@ -43,8 +37,6 @@ it's end and allow for multiple signature for one message. And add a real grammar to the code in mainproc.c - * Option to warn when a non MDC message is decrypted? - * If there is no secure memory, allocate more memory for the secure memory block or do it in all cases. @@ -67,21 +59,13 @@ * Add option to put the list of recipients (from the encryption layer) into the signatures notation data. - * With option -i prompt before adding a key to the keyring and show some - info what we are about to add. - * --disable-asm should still assemble _udiv_qrnnd when needed * Get new assembler stuff from gmp 3.1 - * Use new-format headers for compressed packets. - The advantage is that a garbled zip files can be better detected. - * use DEL and ^H for erasing the previous character (util/ttyio.c). or better readline. - * preferences of hash algorithms are not yet used. - * add test cases for invalid data (scrambled armor or other random data) * add checking of armor trailers. Try to detect garbled header lines. @@ -112,11 +96,6 @@ * cat foo | gpg --sign | gpg --list-packets Does not list the signature packet. - * Replace wording "It is NOT certain that the key belongs to its owner..." - with "It is NOT certain that the key belongs to the person named in the - user ID..." (or similar but clearer message). - - Things we won't do ------------------ diff --git a/configure.ac b/configure.ac index 11193baa7..2dd48bd7d 100644 --- a/configure.ac +++ b/configure.ac @@ -50,7 +50,7 @@ dnl Check for random module options dnl AC_MSG_CHECKING([which random module to use]) AC_ARG_ENABLE(static-rnd, - [ --enable-static-rnd=[egd|unix|linux] ], + [ --enable-static-rnd=[egd|unix|linux|auto] ], [use_static_rnd=$enableval], [use_static_rnd=default] ) if test "$use_static_rnd" = no; then @@ -61,6 +61,9 @@ case "$use_static_rnd" in egd | linux | unix | default ) AC_MSG_RESULT($use_static_rnd) ;; + auto ) + AC_MSG_RESULT(automagically selected at runtime) + ;; * ) AC_MSG_RESULT(invalid argument) AC_MSG_ERROR(there is no random module rnd$use_static_rnd) @@ -636,67 +639,64 @@ fi dnl dnl Figure out the default random module. dnl -static_random_module="" +random_modules="" if test "$use_static_rnd" = default; then - if test "$ac_cv_have_dev_random" = yes; then - static_random_module="rndlinux" + if test "$ac_cv_have_dev_random" = yes; then + random_modules="rndlinux" + else + case "${target}" in + *-*-mingw32*|*-*-cygwin*) + random_modules="rndw32" + ;; + i?86-emx-os2|i?86-*-os2*emx) + random_modules="rndos2" + ;; + m68k-atari-mint) + random_modules="rndatari" + ;; + i?86-*-msdosdjgpp*) + : + ;; + *) + random_modules="rndunix" + ;; + esac + fi +else + if test "$use_static_rnd" = auto; then + random_modules="rndlinux rndegd rndunix" + AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, + [Allow to select random modules at runtime.]) else - case "${target}" in - *-*-mingw32*|*-*-cygwin*) - static_random_module="rndw32" - ;; - i?86-emx-os2|i?86-*-os2*emx) - static_random_module="rndos2" - ;; - m68k-atari-mint) - static_random_module="rndatari" - ;; - i?86-*-msdosdjgpp*) - : - ;; - *) - static_random_module="rndunix" - ;; - esac + random_modules="rnd$use_static_rnd"; fi fi -case "$static_random_module" in - rndlinux) - AC_DEFINE(USE_RNDLINUX,1, - [Defined if the /dev/random based RNG shoudl be used.]) - ;; - rndunix) - AC_DEFINE(USE_RNDUNIX,1, + +if test -z "$random_modules"; then + AC_MSG_ERROR(no random module available) +fi +print_egd_warning=no +for rndmod in $random_modules "" ; do + case "$rndmod" in + rndlinux) + AC_DEFINE(USE_RNDLINUX,1, + [Defined if the /dev/random based RNG should be used.]) + ;; + rndunix) + AC_DEFINE(USE_RNDUNIX,1, [Defined if the default Unix RNG should be used.]) - AC_MSG_WARN([[ -*** -*** The performance of the UNIX random gatherer module is not very good -*** and it does not keep the entropy pool over multiple invocations of -*** GnuPG. The suggested way to overcome this problem is to use the -*** -*** Entropy Gathering Daemon (EGD) -*** -*** which provides a entropy source for the whole system. It is written -*** in Perl and available at the GnuPG FTP servers. For more information -*** consult the GnuPG webpages: -*** -*** http://www.gnupg.org/download.html#egd -*** -*** You may want to run ./configure with --enable-static-rnd=egd to use it. -***]]) - ;; - rndegd) - AC_DEFINE(USE_RNDEGD,1, - [Defined if the EGD based RNG shoudl be used.]) - ;; - rndw32) - AC_DEFINE(USE_RNDW32,1, + print_egd_warning=yes + ;; + rndegd) + AC_DEFINE(USE_RNDEGD,1, + [Defined if the EGD based RNG should be used.]) + ;; + rndw32) + AC_DEFINE(USE_RNDW32,1, [Defined if the Windows specific RNG should be used.]) ;; - *) - AC_MSG_ERROR(no random module available) - ;; -esac + esac +done dnl setup assembler stuff AC_MSG_CHECKING(for mpi assembler functions) @@ -800,6 +800,28 @@ fi AC_SUBST(NETLIBS) + +if test "$print_egd_warning" = yes; then + AC_MSG_WARN([[ +*** +*** The performance of the UNIX random gatherer module is not very good +*** and it does not keep the entropy pool over multiple invocations of +*** GnuPG. The suggested way to overcome this problem is to use the +*** +*** Entropy Gathering Daemon (EGD) +*** +*** which provides a entropy source for the whole system. It is written +*** in Perl and available at the GnuPG FTP servers. For more information +*** consult the GnuPG webpages: +*** +*** http://www.gnupg.org/download.html#egd +*** +*** You may want to run ./configure with --enable-static-rnd=egd to use it. +***]]) +fi + + + # Note the \\\\ for backslashes. Autoconf eats one layer, leaving \\ AC_SUBST(GNUPG_LIBEXECDIR,"${libexecdir}/gnupg")