mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
See ChangeLog: Thu Dec 10 20:15:36 CET 1998 Werner Koch
This commit is contained in:
parent
a45f824150
commit
af6e96e4f9
5
AUTHORS
5
AUTHORS
@ -55,6 +55,11 @@ pt_BR.po
|
||||
|
||||
Other notes:
|
||||
============
|
||||
This program uses the zlib compression library written by
|
||||
Jean-loup Gailly and Mark Adler.
|
||||
|
||||
Most of the stuff in mpi has been taken from the GMP library.
|
||||
|
||||
The file cipher/rndunix.c is heavily based on Peter Gutmann's
|
||||
rndunix.c from cryptlib. - He promised to add the GPL as an alternative
|
||||
license to this and some other files. We don't have a dissclaimer for
|
||||
|
@ -1,3 +1,8 @@
|
||||
Thu Dec 10 20:15:36 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* acinclude.m (GNUPG_CHECK_PIC): New
|
||||
* configure.in, acinclude.m4: Renamed all WK_ to GNUPG_
|
||||
|
||||
Tue Dec 8 15:09:29 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* VERSION: Set to 0.4.5
|
||||
|
9
NEWS
9
NEWS
@ -1,3 +1,12 @@
|
||||
|
||||
* --export does now only exports rfc2440 compatible keys; the
|
||||
old behavious is available with --export-all.
|
||||
Generation of v3 ElGamal (sign and encrypt) keys is not longer
|
||||
supported.
|
||||
|
||||
* Fixed the uncompress bug.
|
||||
|
||||
|
||||
Noteworthy changes in version 0.4.5
|
||||
-----------------------------------
|
||||
|
||||
|
1
THANKS
1
THANKS
@ -50,6 +50,7 @@ Michael Sobolev mss@despair.transas.com
|
||||
Nicolas Graner Nicolas.Graner@cri.u-psud.fr
|
||||
Niklas Hernaeus [Please don't spam him]
|
||||
Nimrod Zimerman zimerman@forfree.at
|
||||
N J Doye nic@niss.ac.uk
|
||||
Oskari Jääskeläinen f33003a@cc.hut.fi
|
||||
Paul D. Smith psmith@baynetworks.com
|
||||
Peter Gutmann pgut001@cs.auckland.ac.nz
|
||||
|
19
TODO
19
TODO
@ -11,20 +11,11 @@
|
||||
a next pointer ro more records - check wehther the reuse code really
|
||||
works. Maybe this is the reason for the "Hmmm public key lost"
|
||||
|
||||
* use zlib 1.1.13 to avoid a bug with 13 bit windows
|
||||
but there are more problems with large files
|
||||
|
||||
* FreeBSD:
|
||||
#define USE_DYNAMIC_LINKING
|
||||
#define HAVE_DL_DLOPEN
|
||||
and the ld option -export-dynamic.
|
||||
Why does autoconf not figure that out?
|
||||
|
||||
* clearsig: keep lineendings as they are. Remember that trailings
|
||||
blanks are not hashed.
|
||||
|
||||
* OpenBSD: dynamic loading with dlopen works on OpenBSD, but:
|
||||
OpenBSD binaries are a.out, so every symbol begins with "_"
|
||||
OpenBSD binaries are a.out, so every symbol begins with "_"
|
||||
|
||||
* should we flush the getkey.c caches while doing an import?
|
||||
|
||||
@ -40,8 +31,6 @@
|
||||
|
||||
* new menu to delete signatures and list signature in menu
|
||||
|
||||
* -rdynamic auf Solaris Problem
|
||||
|
||||
* Replace the SIGUSR1 stuff by semaphores to avoid loss of a signal.
|
||||
|
||||
* add test cases for invalid data (scrambled armor or other random data)
|
||||
@ -66,3 +55,9 @@
|
||||
|
||||
* Use "user ID", "trustdb", "NOTE" and "WARNING".
|
||||
|
||||
* Replace Blowfish by Twofish
|
||||
|
||||
* Print a warning when a experimental algorithm is used.
|
||||
|
||||
* Remove ElGamal signatures.
|
||||
|
||||
|
224
acinclude.m4
224
acinclude.m4
@ -1,41 +1,41 @@
|
||||
dnl macros to configure g10
|
||||
|
||||
|
||||
dnl WK_MSG_PRINT(STRING)
|
||||
dnl GNUPG_MSG_PRINT(STRING)
|
||||
dnl print a message
|
||||
dnl
|
||||
define(WK_MSG_PRINT,
|
||||
define(GNUPG_MSG_PRINT,
|
||||
[ echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG
|
||||
])
|
||||
|
||||
|
||||
dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
|
||||
dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
|
||||
dnl Check whether a typedef exists and create a #define $2 if it exists
|
||||
dnl
|
||||
AC_DEFUN(WK_CHECK_TYPEDEF,
|
||||
AC_DEFUN(GNUPG_CHECK_TYPEDEF,
|
||||
[ AC_MSG_CHECKING(for $1 typedef)
|
||||
AC_CACHE_VAL(wk_cv_typedef_$1,
|
||||
AC_CACHE_VAL(gnupg_cv_typedef_$1,
|
||||
[AC_TRY_COMPILE([#include <stdlib.h>
|
||||
#include <sys/types.h>], [
|
||||
#undef $1
|
||||
int a = sizeof($1);
|
||||
], wk_cv_typedef_$1=yes, wk_cv_typedef_$1=no )])
|
||||
AC_MSG_RESULT($wk_cv_typedef_$1)
|
||||
if test "$wk_cv_typedef_$1" = yes; then
|
||||
], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
|
||||
AC_MSG_RESULT($gnupg_cv_typedef_$1)
|
||||
if test "$gnupg_cv_typedef_$1" = yes; then
|
||||
AC_DEFINE($2)
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
|
||||
dnl WK_LINK_FILES( SRC, DEST )
|
||||
dnl GNUPG_LINK_FILES( SRC, DEST )
|
||||
dnl same as AC_LINK_FILES, but collect the files to link in
|
||||
dnl some special variables and do the link
|
||||
dnl when WK_DO_LINK_FILES is called
|
||||
dnl when GNUPG_DO_LINK_FILES is called
|
||||
dnl This is a workaround for AC_LINK_FILES, because it does not work
|
||||
dnl correct when using a caching scheme
|
||||
dnl
|
||||
define(WK_LINK_FILES,
|
||||
define(GNUPG_LINK_FILES,
|
||||
[ if test "x$wk_link_files_src" = "x"; then
|
||||
wk_link_files_src="$1"
|
||||
wk_link_files_dst="$2"
|
||||
@ -44,21 +44,21 @@ define(WK_LINK_FILES,
|
||||
wk_link_files_dst="$wk_link_files_dst $2"
|
||||
fi
|
||||
])
|
||||
define(WK_DO_LINK_FILES,
|
||||
define(GNUPG_DO_LINK_FILES,
|
||||
[ AC_LINK_FILES( $wk_link_files_src, $wk_link_files_dst )
|
||||
])
|
||||
|
||||
|
||||
dnl WK_CHECK_ENDIAN
|
||||
dnl GNUPG_CHECK_ENDIAN
|
||||
dnl define either LITTLE_ENDIAN_HOST or BIG_ENDIAN_HOST
|
||||
dnl
|
||||
define(WK_CHECK_ENDIAN,
|
||||
define(GNUPG_CHECK_ENDIAN,
|
||||
[ if test "$cross_compiling" = yes; then
|
||||
AC_MSG_WARN(cross compiling; assuming little endianess)
|
||||
fi
|
||||
AC_MSG_CHECKING(endianess)
|
||||
AC_CACHE_VAL(wk_cv_c_endian,
|
||||
[ wk_cv_c_endian=unknown
|
||||
AC_CACHE_VAL(gnupg_cv_c_endian,
|
||||
[ gnupg_cv_c_endian=unknown
|
||||
# See if sys/param.h defines the BYTE_ORDER macro.
|
||||
AC_TRY_COMPILE([#include <sys/types.h>
|
||||
#include <sys/param.h>], [
|
||||
@ -69,8 +69,8 @@ define(WK_CHECK_ENDIAN,
|
||||
#include <sys/param.h>], [
|
||||
#if BYTE_ORDER != BIG_ENDIAN
|
||||
not big endian
|
||||
#endif], wk_cv_c_endian=big, wk_cv_c_endian=little)])
|
||||
if test "$wk_cv_c_endian" = unknown; then
|
||||
#endif], gnupg_cv_c_endian=big, gnupg_cv_c_endian=little)])
|
||||
if test "$gnupg_cv_c_endian" = unknown; then
|
||||
AC_TRY_RUN([main () {
|
||||
/* Are we little or big endian? From Harbison&Steele. */
|
||||
union
|
||||
@ -81,27 +81,27 @@ define(WK_CHECK_ENDIAN,
|
||||
u.l = 1;
|
||||
exit (u.c[sizeof (long) - 1] == 1);
|
||||
}],
|
||||
wk_cv_c_endian=little,
|
||||
wk_cv_c_endian=big,
|
||||
wk_cv_c_endian=little
|
||||
gnupg_cv_c_endian=little,
|
||||
gnupg_cv_c_endian=big,
|
||||
gnupg_cv_c_endian=little
|
||||
)
|
||||
fi
|
||||
])
|
||||
AC_MSG_RESULT([$wk_cv_c_endian])
|
||||
if test "$wk_cv_c_endian" = little; then
|
||||
AC_MSG_RESULT([$gnupg_cv_c_endian])
|
||||
if test "$gnupg_cv_c_endian" = little; then
|
||||
AC_DEFINE(LITTLE_ENDIAN_HOST)
|
||||
else
|
||||
AC_DEFINE(BIG_ENDIAN_HOST)
|
||||
fi
|
||||
])
|
||||
|
||||
dnl WK_CHECK_CACHE
|
||||
dnl GNUPG_CHECK_CACHE
|
||||
dnl
|
||||
define(WK_CHECK_CACHE,
|
||||
define(GNUPG_CHECK_CACHE,
|
||||
[ AC_MSG_CHECKING(cached information)
|
||||
wk_hostcheck="$target"
|
||||
AC_CACHE_VAL(wk_cv_hostcheck, [ wk_cv_hostcheck="$wk_hostcheck" ])
|
||||
if test "$wk_cv_hostcheck" != "$wk_hostcheck"; then
|
||||
gnupg_hostcheck="$target"
|
||||
AC_CACHE_VAL(gnupg_cv_hostcheck, [ gnupg_cv_hostcheck="$gnupg_hostcheck" ])
|
||||
if test "$gnupg_cv_hostcheck" != "$gnupg_hostcheck"; then
|
||||
AC_MSG_RESULT(changed)
|
||||
AC_MSG_WARN(config.cache exists!)
|
||||
AC_MSG_ERROR(you must do 'make distclean' first to compile for
|
||||
@ -112,65 +112,138 @@ define(WK_CHECK_CACHE,
|
||||
])
|
||||
|
||||
|
||||
|
||||
|
||||
######################################################################
|
||||
# Check for SysV IPC (from GIMP)
|
||||
# And see whether we have a SHM_LOCK (FreeBSD does not have it).
|
||||
# Check for -fPIC etc (taken from libtool)
|
||||
# This sets CFLAGS_PIC to the required flags
|
||||
# NO_PIC to yes if it is not possible to
|
||||
# generate PIC
|
||||
######################################################################
|
||||
dnl WK_CHECK_IPC
|
||||
dnl GNUPG_CHECK_PIC
|
||||
dnl
|
||||
define(WK_CHECK_IPC,
|
||||
[ AC_CHECK_HEADERS(sys/ipc.h sys/shm.h)
|
||||
if test "$ac_cv_header_sys_shm_h" = "yes"; then
|
||||
AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
int main()
|
||||
{
|
||||
int id;
|
||||
char *shmaddr;
|
||||
id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0777);
|
||||
if (id == -1)
|
||||
exit (2);
|
||||
shmaddr = shmat (id, 0, 0);
|
||||
shmctl (id, IPC_RMID, 0);
|
||||
if ((char*) shmat (id, 0, 0) == (char*) -1)
|
||||
{
|
||||
shmdt (shmaddr);
|
||||
exit (1);
|
||||
}
|
||||
shmdt (shmaddr);
|
||||
shmdt (shmaddr);
|
||||
exit (0);
|
||||
}
|
||||
],
|
||||
AC_DEFINE(IPC_RMID_DEFERRED_RELEASE)
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no),
|
||||
AC_MSG_RESULT(assuming no))
|
||||
AC_MSG_CHECKING(whether SHM_LOCK is available)
|
||||
AC_TRY_COMPILE([#include <sys/types.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>],[
|
||||
int foo( int shm_id ) { shmctl(shm_id, SHM_LOCK, 0); }
|
||||
],
|
||||
AC_DEFINE(IPC_HAVE_SHM_LOCK)
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no))
|
||||
define(GNUPG_CHECK_PIC,
|
||||
[ AC_MSG_CHECKING(for option to create PIC)
|
||||
CFLAGS_PIC=
|
||||
NO_PIC=no
|
||||
if test "$cross_compiling" = yes; then
|
||||
AC_MSG_RESULT(assume none)
|
||||
else
|
||||
if test "$GCC" = yes; then
|
||||
CFLAGS_PIC="-fPIC"
|
||||
else
|
||||
case "$host_os" in
|
||||
aix3* | aix4*)
|
||||
# All rs/6000 code is PIC
|
||||
# but is there any non-rs/6000 AIX platform?
|
||||
;;
|
||||
|
||||
hpux9* | hpux10*)
|
||||
CFLAGS_PIC="+Z"
|
||||
;;
|
||||
|
||||
irix5* | irix6*)
|
||||
# PIC (with -KPIC) is the default.
|
||||
;;
|
||||
|
||||
osf3* | osf4*)
|
||||
# FIXME - pic_flag is probably required for
|
||||
# hppa*-osf* and i860-osf*
|
||||
;;
|
||||
|
||||
sco3.2v5*)
|
||||
CFLAGS_PIC='-Kpic'
|
||||
;;
|
||||
|
||||
solaris2* | solaris7* )
|
||||
CFLAGS_PIC='-KPIC'
|
||||
;;
|
||||
|
||||
sunos4*)
|
||||
CFLAGS_PIC='-PIC'
|
||||
;;
|
||||
|
||||
*)
|
||||
NO_PIC=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$host_cpu" in
|
||||
rs6000 | powerpc | powerpcle)
|
||||
# Yippee! All RS/6000 and PowerPC code is position-independent.
|
||||
CFLAGS_PIC=""
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$NO_PIC" = yes; then
|
||||
AC_MSG_RESULT(not possible)
|
||||
else
|
||||
if test -z "$CFLAGS_PIC"; then
|
||||
AC_MSG_RESULT(none)
|
||||
else
|
||||
AC_MSG_RESULT($CFLAGS_PIC)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Check for SysV IPC (from GIMP)
|
||||
# And see whether we have a SHM_LOCK (FreeBSD does not have it).
|
||||
#####################################################################
|
||||
dnl GNUPG_CHECK_IPC
|
||||
dnl
|
||||
define(GNUPG_CHECK_IPC,
|
||||
[ AC_CHECK_HEADERS(sys/ipc.h sys/shm.h)
|
||||
if test "$ac_cv_header_sys_shm_h" = "yes"; then
|
||||
AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
int main()
|
||||
{
|
||||
int id;
|
||||
char *shmaddr;
|
||||
id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0777);
|
||||
if (id == -1)
|
||||
exit (2);
|
||||
shmaddr = shmat (id, 0, 0);
|
||||
shmctl (id, IPC_RMID, 0);
|
||||
if ((char*) shmat (id, 0, 0) == (char*) -1)
|
||||
{
|
||||
shmdt (shmaddr);
|
||||
exit (1);
|
||||
}
|
||||
shmdt (shmaddr);
|
||||
shmdt (shmaddr);
|
||||
exit (0);
|
||||
}
|
||||
],
|
||||
AC_DEFINE(IPC_RMID_DEFERRED_RELEASE)
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no),
|
||||
AC_MSG_RESULT(assuming no))
|
||||
AC_MSG_CHECKING(whether SHM_LOCK is available)
|
||||
AC_TRY_COMPILE([#include <sys/types.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>],[
|
||||
int foo( int shm_id ) { shmctl(shm_id, SHM_LOCK, 0); }
|
||||
],
|
||||
AC_DEFINE(IPC_HAVE_SHM_LOCK)
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no))
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
######################################################################
|
||||
# Check whether mlock is broken (hpux 10.20 raises a SIGBUS if mlock
|
||||
# is not called from uid 0 (not tested whether uid 0 works)
|
||||
######################################################################
|
||||
dnl WK_CHECK_MLOCK
|
||||
dnl GNUPG_CHECK_MLOCK
|
||||
dnl
|
||||
define(WK_CHECK_MLOCK,
|
||||
define(GNUPG_CHECK_MLOCK,
|
||||
[ AC_CHECK_FUNCS(mlock)
|
||||
if test "$ac_cv_func_mlock" = "yes"; then
|
||||
AC_MSG_CHECKING(whether mlock is broken)
|
||||
@ -533,3 +606,4 @@ strdup __argz_count __argz_stringify __argz_next])
|
||||
< $srcdir/po/POTFILES.in > po/POTFILES
|
||||
])
|
||||
|
||||
dnl *-*wedit:notab*-* Please keep this as the last line.
|
||||
|
@ -13,18 +13,16 @@ fi
|
||||
LANG=
|
||||
LANGUAGE=
|
||||
|
||||
|
||||
expect - <<EOF
|
||||
#set timeout -1
|
||||
set timeout 8
|
||||
match_max 100000
|
||||
spawn ../g10/gpg --no-batch --quick-random --homedir . --gen-key
|
||||
expect {
|
||||
expect {
|
||||
-exact "Please select what kind of key you want:\r
|
||||
(1) DSA and ElGamal (default)\r
|
||||
(2) ElGamal (sign and encrypt)\r
|
||||
(4) DSA (sign only)\r
|
||||
(5) ElGamal in a v3 packet\r
|
||||
(2) DSA (sign only)\r
|
||||
(4) ElGamal (sign and encrypt)\r
|
||||
Your selection? " { send -- "1\r" }
|
||||
timeout { exit 1 } }
|
||||
expect {
|
||||
@ -51,7 +49,7 @@ expect {
|
||||
-exact "1\r
|
||||
\r \rKey expires at " { }
|
||||
timeout { exit 1 } }
|
||||
expect {
|
||||
expect {
|
||||
-re "(.*)\r
|
||||
" {}
|
||||
timeout { exit 1 } }
|
||||
@ -91,7 +89,7 @@ Enter passphrase: " { sleep 1; send -- "abc\r" }
|
||||
expect {
|
||||
-ex "\r \rRepeat passphrase: " { sleep 1; send -- "abc\r" }
|
||||
timeout { exit 1 } }
|
||||
expect {
|
||||
expect {
|
||||
-ex "\r \rWe need to generate a lot of random bytes. It is a good idea to perform\r
|
||||
some other action (work in another window, move the mouse, utilize the\r
|
||||
network and the disks) during the prime generation; this gives the random\r
|
||||
@ -105,3 +103,4 @@ expect {
|
||||
exit 1
|
||||
EOF
|
||||
|
||||
#*-*wedit:notab*-*
|
||||
|
@ -1,3 +1,15 @@
|
||||
Thu Dec 10 20:15:36 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* dynload.c (load_extension): increased needed verbosity level.
|
||||
|
||||
* random.c (fast_random_poll): Fallback to a default fast random
|
||||
poll function.
|
||||
(read_random_source): Always use the faked entroy gatherer if no
|
||||
gather module is available.
|
||||
* rndlinux.c (fast_poll): Removed.
|
||||
* rndunix.c (fast_poll): Removed.
|
||||
|
||||
|
||||
Wed Nov 25 12:33:41 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* rand-*.c: Removed.
|
||||
|
@ -231,7 +231,7 @@ load_extension( EXTLIST el )
|
||||
name = (char**)addr;
|
||||
#endif
|
||||
|
||||
if( g10_opt_verbose )
|
||||
if( g10_opt_verbose > 1 )
|
||||
log_info("%s: %s%s%s%s\n", el->name, *name,
|
||||
el->hintstr? " (":"",
|
||||
el->hintstr? el->hintstr:"",
|
||||
@ -262,7 +262,7 @@ load_extension( EXTLIST el )
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DL_DLOPEN
|
||||
if( g10_opt_verbose > 1 ) {
|
||||
if( g10_opt_verbose > 2 ) {
|
||||
/* list the contents of the module */
|
||||
while( (sym = (*el->enumfunc)(0, &seq, &class, &vers)) ) {
|
||||
if( vers != 1 ) {
|
||||
|
@ -32,6 +32,18 @@
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#ifdef HAVE_GETHRTIME
|
||||
#include <sys/times.h>
|
||||
#endif
|
||||
#ifdef HAVE_GETTIMEOFDAY
|
||||
#include <sys/times.h>
|
||||
#endif
|
||||
#ifdef HAVE_GETRUSAGE
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
#include "util.h"
|
||||
#include "rmd.h"
|
||||
#include "ttyio.h"
|
||||
@ -83,9 +95,7 @@ static void read_pool( byte *buffer, size_t length, int level );
|
||||
static void add_randomness( const void *buffer, size_t length, int source );
|
||||
static void random_poll(void);
|
||||
static void read_random_source( byte *buffer, size_t length, int level );
|
||||
#ifndef HAVE_DEV_RANDOM
|
||||
static int gather_faked( byte *buffer, size_t *r_length, int level );
|
||||
#endif
|
||||
|
||||
|
||||
static void
|
||||
@ -329,11 +339,39 @@ fast_random_poll()
|
||||
initialize();
|
||||
initialized = 1;
|
||||
fnc = dynload_getfnc_fast_random_poll();
|
||||
if( !fnc )
|
||||
log_info("Ooops: No fast random poll function\n");
|
||||
}
|
||||
if( fnc )
|
||||
if( fnc ) {
|
||||
(*fnc)( add_randomness );
|
||||
return;
|
||||
}
|
||||
|
||||
/* fall back to the generic function */
|
||||
#if HAVE_GETHRTIME
|
||||
{ hrtime_t tv;
|
||||
tv = gethrtime();
|
||||
add_randomness( &tv, sizeof(tv), 1 );
|
||||
}
|
||||
#elif HAVE_GETTIMEOFDAY
|
||||
{ struct timeval tv;
|
||||
if( gettimeofday( &tv, NULL ) )
|
||||
BUG();
|
||||
add_randomness( &tv.tv_sec, sizeof(tv.tv_sec), 1 );
|
||||
add_randomness( &tv.tv_usec, sizeof(tv.tv_usec), 1 );
|
||||
}
|
||||
#else /* use times */
|
||||
{ struct tms buf;
|
||||
times( &buf );
|
||||
add_randomness( &buf, sizeof buf, 1 );
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_GETRUSAGE
|
||||
{ struct rusage buf;
|
||||
if( getrusage( RUSAGE_SELF, &buf ) )
|
||||
BUG();
|
||||
add_randomness( &buf, sizeof buf, 1 );
|
||||
memset( &buf, 0, sizeof buf );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -351,11 +389,7 @@ read_random_source( byte *buffer, size_t length, int level )
|
||||
fnc = dynload_getfnc_gather_random();
|
||||
if( !fnc ) {
|
||||
faked_rng = 1;
|
||||
#ifndef HAVE_DEV_RANDOM
|
||||
fnc = gather_faked;
|
||||
#else
|
||||
BUG();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
while( length ) {
|
||||
@ -368,7 +402,6 @@ read_random_source( byte *buffer, size_t length, int level )
|
||||
}
|
||||
|
||||
|
||||
#ifndef HAVE_DEV_RANDOM
|
||||
static int
|
||||
gather_faked( byte *buffer, size_t *r_length, int level )
|
||||
{
|
||||
@ -378,7 +411,7 @@ gather_faked( byte *buffer, size_t *r_length, int level )
|
||||
if( !initialized ) {
|
||||
log_info(_("WARNING: using insecure random number generator!!\n"));
|
||||
tty_printf(_("The random number generator is only a kludge to let\n"
|
||||
"it compile - it is in no way a strong RNG!\n\n"
|
||||
"it run - it is in no way a strong RNG!\n\n"
|
||||
"DON'T USE ANY DATA GENERATED BY THIS PROGRAM!!\n\n"));
|
||||
initialized=1;
|
||||
#ifdef HAVE_RAND
|
||||
@ -398,5 +431,3 @@ gather_faked( byte *buffer, size_t *r_length, int level )
|
||||
return 100; /* We really fake it ;-) */
|
||||
}
|
||||
|
||||
#endif /* ! HAVE_DEV_RANDOM */
|
||||
|
||||
|
@ -27,15 +27,9 @@
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#ifdef HAVE_GETHRTIME
|
||||
#include <sys/times.h>
|
||||
#endif
|
||||
#ifdef HAVE_GETTIMEOFDAY
|
||||
#include <sys/times.h>
|
||||
#endif
|
||||
#ifdef HAVE_GETRUSAGE
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
@ -61,38 +55,6 @@ static void tty_printf(const char *fmt, ... )
|
||||
#endif
|
||||
|
||||
|
||||
static void
|
||||
fast_poll( void (*add)(const void*, size_t, int) )
|
||||
{
|
||||
#if HAVE_GETHRTIME
|
||||
{ hrtime_t tv;
|
||||
tv = gethrtime();
|
||||
(*add)( &tv, sizeof(tv), 1 );
|
||||
}
|
||||
#elif HAVE_GETTIMEOFDAY
|
||||
{ struct timeval tv;
|
||||
if( gettimeofday( &tv, NULL ) )
|
||||
BUG();
|
||||
(*add)( &tv.tv_sec, sizeof(tv.tv_sec), 1 );
|
||||
(*add)( &tv.tv_usec, sizeof(tv.tv_usec), 1 );
|
||||
}
|
||||
#else /* use times */
|
||||
{ struct tms buf;
|
||||
times( &buf );
|
||||
(*add)( &buf, sizeof buf, 1 );
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_GETRUSAGE
|
||||
{ struct rusage buf;
|
||||
if( getrusage( RUSAGE_SELF, &buf ) )
|
||||
BUG();
|
||||
(*add)( &buf, sizeof buf, 1 );
|
||||
memset( &buf, 0, sizeof buf );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************
|
||||
* Used to open the Linux and xBSD /dev/random devices
|
||||
@ -192,7 +154,6 @@ static struct {
|
||||
void *func;
|
||||
} func_table[] = {
|
||||
{ 40, 1, gather_random },
|
||||
{ 41, 1, fast_poll },
|
||||
};
|
||||
|
||||
|
||||
|
@ -617,38 +617,6 @@ slowPoll(void)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
fast_poll( void (*add)(const void*, size_t, int) )
|
||||
{
|
||||
#if HAVE_GETHRTIME
|
||||
{ hrtime_t tv;
|
||||
tv = gethrtime();
|
||||
(*add)( &tv, sizeof(tv), 1 );
|
||||
}
|
||||
#elif HAVE_GETTIMEOFDAY
|
||||
{ struct timeval tv;
|
||||
if( gettimeofday( &tv, NULL ) )
|
||||
BUG();
|
||||
(*add)( &tv.tv_sec, sizeof(tv.tv_sec), 1 );
|
||||
(*add)( &tv.tv_usec, sizeof(tv.tv_usec), 1 );
|
||||
}
|
||||
#else /* use times */
|
||||
{ struct tms buf;
|
||||
times( &buf );
|
||||
(*add)( &buf, sizeof buf, 1 );
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_GETRUSAGE
|
||||
{ struct rusage buf;
|
||||
if( getrusage( RUSAGE_SELF, &buf ) )
|
||||
BUG();
|
||||
(*add)( &buf, sizeof buf, 1 );
|
||||
memset( &buf, 0, sizeof buf );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
gather_random( byte *buffer, size_t *r_length, int level )
|
||||
@ -698,7 +666,6 @@ static struct {
|
||||
void *func;
|
||||
} func_table[] = {
|
||||
{ 40, 1, gather_random },
|
||||
{ 41, 1, fast_poll },
|
||||
};
|
||||
|
||||
/****************
|
||||
|
55
configure.in
55
configure.in
@ -55,9 +55,13 @@ else
|
||||
fi
|
||||
if test "$use_m_guard" = yes ; then
|
||||
AC_DEFINE(M_GUARD)
|
||||
CFLAGS="$CFLAGS -g -Wall"
|
||||
CFLAGS="$CFLAGS -g"
|
||||
else
|
||||
CFLAGS="$CFLAGS -O2 -Wall"
|
||||
CFLAGS="$CFLAGS -O2"
|
||||
fi
|
||||
|
||||
if test "$GCC" = yes; then
|
||||
CFLAGS="$CFLAGS -Wall"
|
||||
fi
|
||||
|
||||
|
||||
@ -87,7 +91,6 @@ AC_PROG_INSTALL
|
||||
AM_CYGWIN32
|
||||
|
||||
|
||||
|
||||
case "${target}" in
|
||||
i386--mingw32)
|
||||
# special stuff for Windoze NT
|
||||
@ -108,6 +111,13 @@ case "${target}" in
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
GNUPG_CHECK_PIC
|
||||
if test "$NO_PIC" = yes; then
|
||||
try_dynload=no
|
||||
fi
|
||||
|
||||
|
||||
case "${target}" in
|
||||
i386--mingw32)
|
||||
PRINTABLE_OS_NAME="MingW32"
|
||||
@ -131,7 +141,7 @@ case "${target}" in
|
||||
*)
|
||||
NAME_OF_DEV_RANDOM="/dev/random"
|
||||
NAME_OF_DEV_URANDOM="/dev/urandom"
|
||||
DYNLINK_MOD_CFLAGS="-shared -fPIC -lc"
|
||||
DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC -lc"
|
||||
;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM")
|
||||
@ -144,19 +154,20 @@ AM_GNU_GETTEXT
|
||||
|
||||
AC_CHECK_LIB(gdbm,gdbm_firstkey)
|
||||
|
||||
|
||||
if test "$try_dynload" = yes ; then
|
||||
AC_CHECK_LIB(dl,dlopen)
|
||||
if test "$ac_cv_lib_dl_dlopen" = "yes"; then
|
||||
AC_DEFINE(USE_DYNAMIC_LINKING)
|
||||
AC_DEFINE(HAVE_DL_DLOPEN)
|
||||
DYNLINK_LDFLAGS=-rdynamic
|
||||
DYNLINK_LDFLAGS="-Wl,-export-dynamic"
|
||||
use_gnupg_extensions=yes
|
||||
else
|
||||
AC_CHECK_LIB(dld,dld_link)
|
||||
if test "$ac_cv_lib_dld_dld_link" = "yes"; then
|
||||
AC_DEFINE(USE_DYNAMIC_LINKING)
|
||||
AC_DEFINE(HAVE_DLD_DLD_LINK)
|
||||
DYNLINK_LDFLAGS=-rdynamic
|
||||
DYNLINK_LDFLAGS="-Wl,-export-dynamic"
|
||||
use_gnupg_extensions=yes
|
||||
fi
|
||||
fi
|
||||
@ -185,14 +196,14 @@ AC_TYPE_SIZE_T
|
||||
AC_TYPE_SIGNAL
|
||||
AC_DECL_SYS_SIGLIST
|
||||
|
||||
WK_CHECK_ENDIAN
|
||||
GNUPG_CHECK_ENDIAN
|
||||
|
||||
|
||||
WK_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
|
||||
WK_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
|
||||
WK_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
|
||||
WK_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
|
||||
WK_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
|
||||
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
|
||||
|
||||
AC_CHECK_SIZEOF(unsigned short, 2)
|
||||
AC_CHECK_SIZEOF(unsigned int, 4)
|
||||
@ -212,9 +223,9 @@ AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr rand strtoul mmap)
|
||||
AC_CHECK_FUNCS(memmove gettimeofday getrusage gethrtime setrlimit)
|
||||
AC_CHECK_FUNCS(memicmp atexit raise getpagesize strftime)
|
||||
|
||||
WK_CHECK_MLOCK
|
||||
GNUPG_CHECK_MLOCK
|
||||
|
||||
WK_CHECK_IPC
|
||||
GNUPG_CHECK_IPC
|
||||
if test "$ac_cv_header_sys_shm_h" = "yes"; then
|
||||
AC_DEFINE(USE_SHM_COPROCESSING)
|
||||
fi
|
||||
@ -239,7 +250,7 @@ dnl setup assembler stuff
|
||||
AC_MSG_CHECKING(for mpi assembler functions)
|
||||
if test -f $srcdir/mpi/config.links ; then
|
||||
. $srcdir/mpi/config.links
|
||||
WK_LINK_FILES($mpi_ln_src, $mpi_ln_dst)
|
||||
GNUPG_LINK_FILES($mpi_ln_src, $mpi_ln_dst)
|
||||
ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
|
||||
ac_cv_mpi_sflags="$mpi_sflags"
|
||||
ac_cv_mpi_config_done="yes"
|
||||
@ -250,9 +261,9 @@ else
|
||||
fi
|
||||
MPI_EXTRA_ASM_OBJS=""
|
||||
if test "$ac_cv_mpi_extra_asm_modules" != ""; then
|
||||
WK_MSG_PRINT([mpi extra asm functions:])
|
||||
GNUPG_MSG_PRINT([mpi extra asm functions:])
|
||||
for i in $ac_cv_mpi_extra_asm_modules; do
|
||||
WK_MSG_PRINT([$i])
|
||||
GNUPG_MSG_PRINT([$i])
|
||||
MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
|
||||
done
|
||||
AC_MSG_RESULT()
|
||||
@ -266,8 +277,8 @@ dnl when compiling a conftest (due to the "-lz" from LIBS).
|
||||
if test "$g10_force_zlib" = "yes"; then
|
||||
ZLIBS="../zlib/libzlib.a"
|
||||
AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
|
||||
WK_LINK_FILES(zlib/zlib.h, zlib.h )
|
||||
WK_LINK_FILES(zlib/zconf.h, zconf.h )
|
||||
GNUPG_LINK_FILES(zlib/zlib.h, zlib.h )
|
||||
GNUPG_LINK_FILES(zlib/zconf.h, zconf.h )
|
||||
else
|
||||
AC_CHECK_HEADERS(zlib.h)
|
||||
if test "$ac_cv_header_zlib_h" = yes ; then
|
||||
@ -277,13 +288,13 @@ if test "$ac_cv_header_zlib_h" = yes ; then
|
||||
else
|
||||
ZLIBS="../zlib/libzlib.a"
|
||||
AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
|
||||
WK_LINK_FILES(zlib/zlib.h, zlib.h )
|
||||
WK_LINK_FILES(zlib/zconf.h, zconf.h )
|
||||
GNUPG_LINK_FILES(zlib/zlib.h, zlib.h )
|
||||
GNUPG_LINK_FILES(zlib/zconf.h, zconf.h )
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(ZLIBS)
|
||||
|
||||
WK_DO_LINK_FILES
|
||||
GNUPG_DO_LINK_FILES
|
||||
|
||||
|
||||
AC_OUTPUT([
|
||||
|
@ -1,3 +1,35 @@
|
||||
Thu Dec 10 20:15:36 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* ringedit.c (gdbm_store): Fix for inserts
|
||||
|
||||
* g10.c (main): New option --export-all
|
||||
* export.c (export_pubkeys): New arg.
|
||||
(do_export): Now may skip old keys.
|
||||
|
||||
* status.c: Minor patches for Sun's cc
|
||||
|
||||
* keygen.c (ask_algo): Disabled v3 ElGamal choice, rearranged
|
||||
the numbers. Add a warning question when a sign+encrypt key
|
||||
is selected.
|
||||
|
||||
* g10.c (do_not_use_RSA): Removed.
|
||||
* misc.c (print_pubkey_algo_note): New as replacement for the
|
||||
do_not_use_RSA() and chnaged all callers.
|
||||
(print_cipher_algo_note): New.
|
||||
(print_hash_algo_note): New.
|
||||
|
||||
* cipher.c (write_header): Add a call to print_cipher_algo_note.
|
||||
* seckey-cert.c (protect_secret_key): Ditto
|
||||
* sign.c (do_sign): Add a call to print_digest_algo_note.
|
||||
|
||||
* getkey.c (get_long_user_id_string): New.
|
||||
* mainproc.c (check_sig_and_print): Changed the format of the
|
||||
status output.
|
||||
|
||||
* encrypt.c (write_pubkey_enc_from_list): print used symmetric cipher.
|
||||
|
||||
* pkclist.c (do_we_trust): Changed a message.
|
||||
|
||||
Wed Dec 9 13:41:06 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* misc.c (trap_unaligned) [ALPHA]: Only if UAC_SIGBUS is defined.
|
||||
|
@ -59,6 +59,7 @@ write_header( cipher_filter_context_t *cfx, IOBUF a )
|
||||
randomize_buffer( temp, blocksize, 1 );
|
||||
temp[blocksize] = temp[blocksize-2];
|
||||
temp[blocksize+1] = temp[blocksize-1];
|
||||
print_cipher_algo_note( cfx->dek->algo );
|
||||
cfx->cipher_hd = cipher_open( cfx->dek->algo, CIPHER_MODE_AUTO_CFB, 1 );
|
||||
cipher_setkey( cfx->cipher_hd, cfx->dek->key, cfx->dek->keylen );
|
||||
cipher_setiv( cfx->cipher_hd, NULL );
|
||||
|
@ -379,8 +379,8 @@ write_pubkey_enc_from_list( PK_LIST pk_list, DEK *dek, IOBUF out )
|
||||
MPI frame;
|
||||
|
||||
pk = pk_list->pk;
|
||||
if( is_RSA(pk->pubkey_algo) )
|
||||
do_not_use_RSA();
|
||||
|
||||
print_pubkey_algo_note( pk->pubkey_algo );
|
||||
enc = m_alloc_clear( sizeof *enc );
|
||||
enc->pubkey_algo = pk->pubkey_algo;
|
||||
keyid_from_pk( pk, enc->keyid );
|
||||
@ -394,8 +394,9 @@ write_pubkey_enc_from_list( PK_LIST pk_list, DEK *dek, IOBUF out )
|
||||
else {
|
||||
if( opt.verbose ) {
|
||||
char *ustr = get_user_id_string( enc->keyid );
|
||||
log_info(_("%s encrypted for: %s\n"),
|
||||
pubkey_algo_to_string(enc->pubkey_algo), ustr );
|
||||
log_info(_("%s/%s encrypted for: %s\n"),
|
||||
pubkey_algo_to_string(enc->pubkey_algo),
|
||||
cipher_algo_to_string(dek->algo), ustr );
|
||||
m_free(ustr);
|
||||
}
|
||||
/* and write it */
|
||||
|
26
g10/export.c
26
g10/export.c
@ -34,27 +34,28 @@
|
||||
#include "main.h"
|
||||
#include "i18n.h"
|
||||
|
||||
static int do_export( STRLIST users, int secret );
|
||||
static int do_export( STRLIST users, int secret, int onlyrfc );
|
||||
|
||||
/****************
|
||||
* Export the public keys (to standard out or --output).
|
||||
* Depending on opt.armor the output is armored.
|
||||
* If onlyrfc is True only RFC24404 compatible keys are exported.
|
||||
* If USERS is NULL, the complete ring will be exported.
|
||||
*/
|
||||
int
|
||||
export_pubkeys( STRLIST users )
|
||||
export_pubkeys( STRLIST users, int onlyrfc )
|
||||
{
|
||||
return do_export( users, 0 );
|
||||
return do_export( users, 0, onlyrfc );
|
||||
}
|
||||
|
||||
int
|
||||
export_seckeys( STRLIST users )
|
||||
{
|
||||
return do_export( users, 1 );
|
||||
return do_export( users, 1, 0 );
|
||||
}
|
||||
|
||||
static int
|
||||
do_export( STRLIST users, int secret )
|
||||
do_export( STRLIST users, int secret, int onlyrfc )
|
||||
{
|
||||
int rc = 0;
|
||||
armor_filter_context_t afx;
|
||||
@ -110,7 +111,7 @@ do_export( STRLIST users, int secret )
|
||||
rc = secret? find_secret_keyblock_byname( &kbpos, sl->d )
|
||||
: find_keyblock_byname( &kbpos, sl->d );
|
||||
if( rc ) {
|
||||
log_error("%s: user not found: %s\n", sl->d, g10_errstr(rc) );
|
||||
log_error(_("%s: user not found: %s\n"), sl->d, g10_errstr(rc));
|
||||
rc = 0;
|
||||
continue;
|
||||
}
|
||||
@ -119,10 +120,21 @@ do_export( STRLIST users, int secret )
|
||||
}
|
||||
|
||||
if( rc ) {
|
||||
log_error("certificate read problem: %s\n", g10_errstr(rc));
|
||||
log_error(_("certificate read problem: %s\n"), g10_errstr(rc));
|
||||
goto leave;
|
||||
}
|
||||
|
||||
|
||||
/* do not export keys which are incompatible with rfc2440 */
|
||||
if( onlyrfc && (node = find_kbnode( keyblock, PKT_PUBLIC_KEY )) ) {
|
||||
PKT_public_key *pk = node->pkt->pkt.public_key;
|
||||
if( pk->version == 3 && pk->pubkey_algo > 3 ) {
|
||||
log_info(_("key %08lX: not a rfc2440 key - skipped\n"),
|
||||
(ulong)keyid_from_pk( pk, NULL) );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* and write it */
|
||||
for( kbctx=NULL; (node = walk_kbnode( keyblock, &kbctx, 0 )); ) {
|
||||
/* don't export any comment packets but those in the
|
||||
|
19
g10/g10.c
19
g10/g10.c
@ -84,6 +84,7 @@ enum cmd_and_opt_values { aNull = 0,
|
||||
aListSigs,
|
||||
aListSecretKeys,
|
||||
aExport,
|
||||
aExportAll,
|
||||
aExportSecret,
|
||||
aCheckKeys,
|
||||
aGenRevoke,
|
||||
@ -180,7 +181,8 @@ static ARGPARSE_OPTS opts[] = {
|
||||
{ aEditKey, "edit-key" ,256, N_("sign or edit a key")},
|
||||
{ aGenRevoke, "gen-revoke",256, N_("generate a revocation certificate")},
|
||||
#endif
|
||||
{ aExport, "export" , 256, N_("export keys") },
|
||||
{ aExport, "export" , 256, N_("export keys") },
|
||||
{ aExportAll, "export-all" , 256, "@" },
|
||||
{ aExportSecret, "export-secret-keys" , 256, "@" },
|
||||
{ aImport, "import", 256 , N_("import/merge keys")},
|
||||
{ aFastImport, "fast-import", 256 , "@"},
|
||||
@ -634,6 +636,7 @@ main( int argc, char **argv )
|
||||
case aImport: set_cmd( &cmd, aImport); break;
|
||||
case aFastImport: set_cmd( &cmd, aFastImport); break;
|
||||
case aExport: set_cmd( &cmd, aExport); break;
|
||||
case aExportAll: set_cmd( &cmd, aExportAll); break;
|
||||
case aListKeys: set_cmd( &cmd, aListKeys); break;
|
||||
case aListSigs: set_cmd( &cmd, aListSigs); break;
|
||||
case aExportSecret: set_cmd( &cmd, aExportSecret); break;
|
||||
@ -1084,10 +1087,11 @@ main( int argc, char **argv )
|
||||
break;
|
||||
|
||||
case aExport:
|
||||
case aExportAll:
|
||||
sl = NULL;
|
||||
for( ; argc; argc--, argv++ )
|
||||
add_to_strlist( &sl, *argv );
|
||||
export_pubkeys( sl );
|
||||
export_pubkeys( sl, (cmd == aExport) );
|
||||
free_strlist(sl);
|
||||
break;
|
||||
|
||||
@ -1315,17 +1319,6 @@ g10_exit( int rc )
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
do_not_use_RSA()
|
||||
{
|
||||
static int did_rsa_note = 0;
|
||||
|
||||
if( !did_rsa_note ) {
|
||||
did_rsa_note = 1;
|
||||
log_info(_("RSA keys are deprecated; please consider "
|
||||
"creating a new key and use this key in the future\n"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef IS_G10MAINT
|
||||
|
21
g10/getkey.c
21
g10/getkey.c
@ -1413,6 +1413,27 @@ get_user_id_string( u32 *keyid )
|
||||
return p;
|
||||
}
|
||||
|
||||
char*
|
||||
get_long_user_id_string( u32 *keyid )
|
||||
{
|
||||
user_id_db_t r;
|
||||
char *p;
|
||||
int pass=0;
|
||||
/* try it two times; second pass reads from key resources */
|
||||
do {
|
||||
for(r=user_id_db; r; r = r->next )
|
||||
if( r->keyid[0] == keyid[0] && r->keyid[1] == keyid[1] ) {
|
||||
p = m_alloc( r->len + 20 );
|
||||
sprintf(p, "%08lX%08lX %.*s",
|
||||
(ulong)keyid[0], (ulong)keyid[1], r->len, r->name );
|
||||
return p;
|
||||
}
|
||||
} while( ++pass < 2 && !get_pubkey( NULL, keyid ) );
|
||||
p = m_alloc( 25 );
|
||||
sprintf(p, "%08lX%08lX [?]", (ulong)keyid[0], (ulong)keyid[1] );
|
||||
return p;
|
||||
}
|
||||
|
||||
char*
|
||||
get_user_id( u32 *keyid, size_t *rn )
|
||||
{
|
||||
|
12
g10/gpgd.c
12
g10/gpgd.c
@ -258,18 +258,6 @@ g10_exit( int rc )
|
||||
exit(rc );
|
||||
}
|
||||
|
||||
void
|
||||
do_not_use_RSA()
|
||||
{
|
||||
static int did_rsa_note = 0;
|
||||
|
||||
if( !did_rsa_note ) {
|
||||
did_rsa_note = 1;
|
||||
log_info("RSA keys are depreciated; please consider "
|
||||
"creating a new key and use this key in the future\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
become_daemon()
|
||||
|
@ -72,11 +72,17 @@ static struct helptexts { const char *key; const char *help; } helptexts[] = {
|
||||
"does this but other OpenPGP implemenations are not required to understand\n"
|
||||
"the signature+encryption flavor.\n"
|
||||
"The first (primary) key must always be a key which is capable of signing;\n"
|
||||
"this is the reason why the ecrytion only ElGamal key is disabled in this.\n"
|
||||
"You should not select the \"ElGamal in a v3 packet\", because that key is\n"
|
||||
"not compatible to other OpenPGP implementations."
|
||||
"this is the reason why the ecrytion only ElGamal key is disabled in this."
|
||||
},
|
||||
|
||||
|
||||
{ N_("keygen.algo.elg_se"),
|
||||
"Although these keys are defined in RFC2440 they are not suggested\n"
|
||||
"because they are not supported by all programs and signatures created\n"
|
||||
"with them are quite large and very slow to verify."
|
||||
},
|
||||
|
||||
|
||||
{ N_("keygen.size"),
|
||||
"Enter the size of the key"
|
||||
},
|
||||
|
@ -145,6 +145,7 @@ int get_seckey_byname( PKT_secret_key *sk, const char *name, int unlock );
|
||||
int enum_secret_keys( void **context, PKT_secret_key *sk, int with_subkeys );
|
||||
void merge_keys_and_selfsig( KBNODE keyblock );
|
||||
char*get_user_id_string( u32 *keyid );
|
||||
char*get_long_user_id_string( u32 *keyid );
|
||||
char*get_user_id( u32 *keyid, size_t *rn );
|
||||
|
||||
/*-- keyid.c --*/
|
||||
|
19
g10/keygen.c
19
g10/keygen.c
@ -388,11 +388,13 @@ ask_algo( int *ret_v4, int addmode )
|
||||
tty_printf(_("Please select what kind of key you want:\n"));
|
||||
if( !addmode )
|
||||
tty_printf(_(" (%d) DSA and ElGamal (default)\n"), 1 );
|
||||
tty_printf( _(" (%d) ElGamal (sign and encrypt)\n"), 2 );
|
||||
tty_printf( _(" (%d) DSA (sign only)\n"), 2 );
|
||||
if( addmode )
|
||||
tty_printf( _(" (%d) ElGamal (encrypt only)\n"), 3 );
|
||||
tty_printf( _(" (%d) DSA (sign only)\n"), 4 );
|
||||
tty_printf( _(" (%d) ElGamal (sign and encrypt)\n"), 4 );
|
||||
#if 0
|
||||
tty_printf( _(" (%d) ElGamal in a v3 packet\n"), 5 );
|
||||
#endif
|
||||
|
||||
*ret_v4 = 1;
|
||||
for(;;) {
|
||||
@ -404,23 +406,28 @@ ask_algo( int *ret_v4, int addmode )
|
||||
algo = 0; /* create both keys */
|
||||
break;
|
||||
}
|
||||
else if( algo == 2 ) {
|
||||
algo = PUBKEY_ALGO_ELGAMAL;
|
||||
break;
|
||||
else if( algo == 4 ) {
|
||||
if( cpr_get_answer_is_yes("keygen.algo.elg_se",_(
|
||||
"Do you really want to create a sign and encrypt key? "))) {
|
||||
algo = PUBKEY_ALGO_ELGAMAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if( algo == 3 && addmode ) {
|
||||
algo = PUBKEY_ALGO_ELGAMAL_E;
|
||||
break;
|
||||
}
|
||||
else if( algo == 4 ) {
|
||||
else if( algo == 2 ) {
|
||||
algo = PUBKEY_ALGO_DSA;
|
||||
break;
|
||||
}
|
||||
#if 0
|
||||
else if( algo == 5 ) {
|
||||
algo = PUBKEY_ALGO_ELGAMAL_E;
|
||||
*ret_v4 = 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
tty_printf(_("Invalid selection.\n"));
|
||||
}
|
||||
|
@ -45,7 +45,9 @@ extern int g10_errors_seen;
|
||||
#else
|
||||
void g10_exit(int rc);
|
||||
#endif
|
||||
void do_not_use_RSA(void);
|
||||
void print_pubkey_algo_note( int algo );
|
||||
void print_cipher_algo_note( int algo );
|
||||
void print_digest_algo_note( int algo );
|
||||
|
||||
/*-- misc.c --*/
|
||||
void trap_unaligned(void);
|
||||
@ -108,7 +110,7 @@ KBNODE make_mpi_comment_node( const char *s, MPI a );
|
||||
/*-- import.c --*/
|
||||
int import_keys( const char *filename, int fast );
|
||||
/*-- export.c --*/
|
||||
int export_pubkeys( STRLIST users );
|
||||
int export_pubkeys( STRLIST users, int onlyrfc );
|
||||
int export_seckeys( STRLIST users );
|
||||
|
||||
/* dearmor.c --*/
|
||||
|
@ -841,7 +841,7 @@ check_sig_and_print( CTX c, KBNODE node )
|
||||
|
||||
rc = do_check_sig(c, node, NULL );
|
||||
if( !rc || rc == G10ERR_BAD_SIGN ) {
|
||||
char *us = get_user_id_string( sig->keyid );
|
||||
char *us = get_long_user_id_string( sig->keyid );
|
||||
write_status_text( rc? STATUS_BADSIG : STATUS_GOODSIG, us );
|
||||
m_free(us);
|
||||
log_info(rc? _("BAD signature from \"")
|
||||
|
58
g10/misc.c
58
g10/misc.c
@ -187,3 +187,61 @@ buffer_to_u32( const byte *buffer )
|
||||
return a;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
no_exp_algo(void)
|
||||
{
|
||||
static int did_note = 0;
|
||||
|
||||
if( !did_note ) {
|
||||
did_note = 1;
|
||||
log_info(_("Experimental algorithms should not be used!\n"));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
print_pubkey_algo_note( int algo )
|
||||
{
|
||||
if( algo >= 100 && algo <= 110 )
|
||||
no_exp_algo();
|
||||
else if( is_RSA( algo ) ) {
|
||||
static int did_note = 0;
|
||||
|
||||
if( !did_note ) {
|
||||
did_note = 1;
|
||||
log_info(_("RSA keys are deprecated; please consider "
|
||||
"creating a new key and use this key in the future\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
print_cipher_algo_note( int algo )
|
||||
{
|
||||
if( algo >= 100 && algo <= 110 )
|
||||
no_exp_algo();
|
||||
else if( algo == CIPHER_ALGO_3DES
|
||||
|| algo == CIPHER_ALGO_CAST5
|
||||
|| algo == CIPHER_ALGO_BLOWFISH
|
||||
)
|
||||
;
|
||||
else {
|
||||
static int did_note = 0;
|
||||
|
||||
if( !did_note ) {
|
||||
did_note = 1;
|
||||
log_info(_("This cipher algorithm is depreciated; "
|
||||
"please use a more standard one!\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
print_digest_algo_note( int algo )
|
||||
{
|
||||
if( algo >= 100 && algo <= 110 )
|
||||
no_exp_algo();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -302,7 +302,7 @@ do_we_trust( PKT_public_key *pk, int trustlevel )
|
||||
|
||||
case TRUST_ULTIMATE:
|
||||
if( opt.verbose )
|
||||
log_info(_("This key belongs to us (we have the secret key)\n"));
|
||||
log_info(_("This key belongs to us\n"));
|
||||
return 1; /* yes */
|
||||
|
||||
default: BUG();
|
||||
|
@ -249,7 +249,7 @@ add_keyblock_resource( const char *url, int force, int secret )
|
||||
goto leave;
|
||||
|
||||
case rt_RING:
|
||||
iobuf = iobuf_fopen( filename, "rb" );
|
||||
iobuf = iobuf_open( filename );
|
||||
if( !iobuf && !force ) {
|
||||
rc = G10ERR_OPEN_FILE;
|
||||
goto leave;
|
||||
@ -689,7 +689,7 @@ enum_keyblocks( int mode, KBPOS *kbpos, KBNODE *ret_root )
|
||||
kbpos->rt = resource_table[i].rt;
|
||||
switch( kbpos->rt ) {
|
||||
case rt_RING:
|
||||
kbpos->fp = iobuf_fopen( rentry->fname, "rb" );
|
||||
kbpos->fp = iobuf_open( rentry->fname );
|
||||
if( !kbpos->fp ) {
|
||||
log_error("can't open '%s'\n", rentry->fname );
|
||||
return G10ERR_OPEN_FILE;
|
||||
@ -1083,7 +1083,7 @@ keyring_read( KBPOS *kbpos, KBNODE *ret_root )
|
||||
if( !(rentry=check_pos(kbpos)) )
|
||||
return G10ERR_GENERAL;
|
||||
|
||||
a = iobuf_fopen( rentry->fname, "rb" );
|
||||
a = iobuf_open( rentry->fname );
|
||||
if( !a ) {
|
||||
log_error("can't open '%s'\n", rentry->fname );
|
||||
return G10ERR_OPEN_FILE;
|
||||
@ -1246,7 +1246,7 @@ keyring_copy( KBPOS *kbpos, int mode, KBNODE root )
|
||||
log_fatal("can't lock '%s'\n", rentry->fname );
|
||||
|
||||
/* open the source file */
|
||||
fp = iobuf_fopen( rentry->fname, "rb" );
|
||||
fp = iobuf_open( rentry->fname );
|
||||
if( mode == 1 && !fp && errno == ENOENT ) { /* no file yet */
|
||||
KBNODE kbctx, node;
|
||||
|
||||
@ -1526,6 +1526,9 @@ do_gdbm_store( KBPOS *kbpos, KBNODE root, int update )
|
||||
content.dsize = iobuf_get_temp_length( fp );
|
||||
rc = gdbm_store( rentry->dbf, key, content,
|
||||
update? GDBM_REPLACE : GDBM_INSERT );
|
||||
if( rc == 1 && !update )
|
||||
rc = gdbm_store( rentry->dbf, key, content, GDBM_REPLACE );
|
||||
|
||||
if( rc ) {
|
||||
log_error("%s: gdbm_store failed: %s\n", rentry->fname,
|
||||
rc == 1 ? "already stored"
|
||||
|
@ -209,6 +209,7 @@ protect_secret_key( PKT_secret_key *sk, DEK *dek )
|
||||
else if( cipher_get_blocksize( sk->protect.algo ) != 8 )
|
||||
rc = G10ERR_CIPHER_ALGO; /* unsupport protection algorithm */
|
||||
else {
|
||||
print_cipher_algo_note( sk->protect.algo );
|
||||
cipher_hd = cipher_open( sk->protect.algo,
|
||||
CIPHER_MODE_AUTO_CFB, 1 );
|
||||
if( cipher_setkey( cipher_hd, dek->key, dek->keylen ) )
|
||||
|
@ -47,12 +47,12 @@ do_sign( PKT_secret_key *sk, PKT_signature *sig,
|
||||
byte *dp;
|
||||
int rc;
|
||||
|
||||
if( is_RSA(sk->pubkey_algo) )
|
||||
do_not_use_RSA();
|
||||
print_pubkey_algo_note(sk->pubkey_algo);
|
||||
|
||||
if( !digest_algo )
|
||||
digest_algo = md_get_algo(md);
|
||||
|
||||
print_digest_algo_note( digest_algo );
|
||||
dp = md_read( md, digest_algo );
|
||||
sig->digest_algo = digest_algo;
|
||||
sig->digest_start[0] = dp[0];
|
||||
|
@ -152,7 +152,8 @@ init_shm_coprocessing ( ulong requested_shm_size, int lock_mem )
|
||||
else
|
||||
shm_is_locked = 1;
|
||||
#elif defined(HAVE_MLOCK) && !defined(HAVE_BROKEN_MLOCK)
|
||||
if ( mlock (shm_area, shm_size) )
|
||||
/* (need the cast for Solaris with Sun's workshop compilers) */
|
||||
if ( mlock ( (char*)shm_area, shm_size) )
|
||||
log_info("locking shared memory %d failed: %s\n",
|
||||
shm_id, strerror(errno));
|
||||
else
|
||||
@ -307,7 +308,8 @@ cpr_kill_prompt(void)
|
||||
if( opt.shm_coprocess )
|
||||
return;
|
||||
#endif
|
||||
return tty_kill_prompt();
|
||||
tty_kill_prompt();
|
||||
return;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -1,3 +1,7 @@
|
||||
Thu Dec 10 20:15:36 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* *.po: Changed some english strings.
|
||||
|
||||
Tue Dec 8 15:09:29 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* pt_BR.po: Add translation by Thiago Jung Bauermann.
|
||||
|
426
po/es_ES.po
426
po/es_ES.po
File diff suppressed because it is too large
Load Diff
426
po/pt_BR.po
426
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,7 @@
|
||||
Thu Dec 10 20:15:36 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* mpicalc.c (main): Moved initialization out of definition.
|
||||
|
||||
Mon May 18 15:39:22 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mk-tdata.c: New.
|
||||
|
@ -211,12 +211,16 @@ main(int argc, char **argv)
|
||||
{
|
||||
static ARGPARSE_OPTS opts[] = {
|
||||
{0} };
|
||||
ARGPARSE_ARGS pargs = { &argc, &argv, 0 };
|
||||
ARGPARSE_ARGS pargs;
|
||||
int i, c;
|
||||
int state = 0;
|
||||
char strbuf[1000];
|
||||
int stridx=0;
|
||||
|
||||
pargs.argc = &argc;
|
||||
pargs.argv = &argv;
|
||||
pargs.flags = 0;
|
||||
|
||||
i18n_init();
|
||||
while( arg_parse( &pargs, opts) ) {
|
||||
switch( pargs.r_opt ) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user