From 6732700743ffda95a7b76b896d6327942d173b1f Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 26 Jul 2001 09:37:47 +0000 Subject: [PATCH] migration to autoconf 2.52 and bugfixes --- AUTHORS | 2 +- ChangeLog | 19 +++++++ Makefile.am | 11 ++-- NEWS | 2 + TODO | 17 ++++-- acinclude.m4 | 124 ++++++----------------------------------- cipher/ChangeLog | 6 ++ cipher/Makefile.am | 2 +- cipher/rndlinux.c | 2 +- doc/gpg.sgml | 8 +++ g10/ChangeLog | 38 +++++++++++++ g10/Makefile.am | 2 +- g10/build-packet.c | 11 +++- g10/cipher.c | 2 +- g10/g10.c | 3 + g10/getkey.c | 20 +++---- g10/kbnode.c | 14 +++-- g10/keyedit.c | 134 ++++++++++++++++++++++++++++++++++++++++++++- g10/keylist.c | 1 - g10/mainproc.c | 10 ++-- g10/options.h | 1 + g10/packet.h | 7 +++ g10/parse-packet.c | 7 ++- g10/ringedit.c | 5 +- g10/sig-check.c | 3 +- g10/sign.c | 106 +++++++++++++++++++++++++++++++++++ g10/tdbdump.c | 2 +- g10/trustdb.c | 5 +- mpi/ChangeLog | 5 ++ mpi/Makefile.am | 2 +- mpi/config.links | 22 +++----- po/ChangeLog | 8 +++ po/id.po | 15 +++-- scripts/ChangeLog | 4 ++ scripts/autogen.sh | 2 +- tools/Makefile.am | 2 +- tools/gpgsplit.c | 7 ++- util/Makefile.am | 2 +- 38 files changed, 449 insertions(+), 184 deletions(-) diff --git a/AUTHORS b/AUTHORS index f8cd5aa59..2bb3c2136 100644 --- a/AUTHORS +++ b/AUTHORS @@ -44,7 +44,7 @@ R (g10/compress.c, g10/encr-data.c, g10/free-packet.c, g10/mdfilter.c, g10/plaintext.c, util/iobuf.c) -Tedi Heriyanto Translations [id] +Tedi Heriyanto Translations [id] Thiago Jung Bauermann Translations [pt_BR] diff --git a/ChangeLog b/ChangeLog index 06cb9ea94..26e8364e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2001-07-26 Werner Koch + + * configure.ac: Finally got it running with the new autoconf. Had + to define PACKAGE and VERSION and to add -I.. to each Makefile.am. + +2001-07-09 Werner Koch + + Migrated to autoconf 2.50. + * acinclude.m4: Removed the temporary LFS macros and GNUPG_LINK_FILES. + * acconfig.h: Removed + * configure.in: Replaced by... + * configure.ac: and modified for use with autoconf 2.50, use a + literal string for the version number. Replaced GNUPG_LINK_FILES + with AC_CONFIG_LINKS and moved some informational messages to the end. + * VERSION: Removed. + * Makefile.am (DISTCLEANFILES): gettext is better now; no more + need to remove the libintl.h symlink. + (dist-hook): Create VERSION file. + 2001-06-08 Werner Koch * configure.in (DYNLINK_MOD_CFLAGS): Use -shared with dec-osf. diff --git a/Makefile.am b/Makefile.am index 16f9fa364..f2a2666e5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -26,10 +26,11 @@ endif SUBDIRS = intl zlib util mpi cipher tools g10 po doc ${checks} EXTRA_DIST = VERSION PROJECTS BUGS -# gettext never gets it right, so we take here care of deleting the -# symlink. -DISTCLEANFILES = g10defs.h intl/libintl.h +DISTCLEANFILES = g10defs.h +# Add all the files listed in "distfiles" files to the distribution, +# apply version numbers to some files and create a VERSION file which +# we need for the Prereq: patch file trick. dist-hook: @set -e; \ for file in `cd $(top_srcdir); find . -type f -name distfiles`; do \ @@ -43,6 +44,4 @@ dist-hook: sed -e 's/@pkg_version@/$(VERSION)/g' \ $(top_srcdir)/scripts/gnupg.spec.in \ > $(distdir)/scripts/gnupg.spec - - - + echo "$(VERSION)" > $(distdir)/VERSION diff --git a/NEWS b/NEWS index 7ff31afea..7c35dc746 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ * New tool gpgsplit to split OpenPGP data formats into packets. + * New option --preserve-permissions. + Noteworthy changes in version 1.0.6 (2001-05-29) ------------------------------------------------ diff --git a/TODO b/TODO index 03cc547c8..f3801e03e 100644 --- a/TODO +++ b/TODO @@ -1,12 +1,21 @@ - * replace all isfoo() by ascii_usfoo() ? + * Put a note into readme.w32 that there is a man page and a options + file; write the registry stuff in regedit format. + + * Ignore subkeys created in the future. + + * Allow "gpg -cs" + + * Show more info does not work from edit->trust + + * keyedit_menu: We first look for a secret key and then for a public + key. This is bad we must match the keys. Better check all places were + we match keys. build_sig_packet: implement update for sig-creation. * set default charset from nl_langinfo. * check all mpi_read() for error returns. - * --preserve-perms so that permissions set on a secring don't get changed. - * 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 @@ -61,7 +70,7 @@ appropriate so that a key listing does not get clobbered. * "Michael T. Babcock" suggested to write - an even log so that other software can display a key history or + an event log so that other software can display a key history or alike with GnuPG results. This should be connected to the keyrings. * Using --list-only to check for recipients while decrypting may diff --git a/acinclude.m4 b/acinclude.m4 index f11f2c790..5a245fe29 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -39,7 +39,7 @@ AC_DEFUN(GNUPG_CHECK_TYPEDEF, ], 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) + AC_DEFINE($2,1,[Defined if a `]$1[' is typedef'd]) fi ]) @@ -106,26 +106,6 @@ AC_DEFUN(GNUPG_CHECK_DOCBOOK_TO_TEXI, ]) -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 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(GNUPG_LINK_FILES, - [ if test "x$wk_link_files_src" = "x"; then - wk_link_files_src="$1" - wk_link_files_dst="$2" - else - wk_link_files_src="$wk_link_files_src $1" - wk_link_files_dst="$wk_link_files_dst $2" - fi - ]) -define(GNUPG_DO_LINK_FILES, - [ AC_LINK_FILES( $wk_link_files_src, $wk_link_files_dst ) - ]) - dnl GNUPG_CHECK_ENDIAN dnl define either LITTLE_ENDIAN_HOST or BIG_ENDIAN_HOST @@ -167,9 +147,11 @@ define(GNUPG_CHECK_ENDIAN, ]) AC_MSG_RESULT([$gnupg_cv_c_endian]) if test "$gnupg_cv_c_endian" = little; then - AC_DEFINE(LITTLE_ENDIAN_HOST) + AC_DEFINE(LITTLE_ENDIAN_HOST,1, + [Defined if the host has little endian byte ordering]) else - AC_DEFINE(BIG_ENDIAN_HOST) + AC_DEFINE(BIG_ENDIAN_HOST,1, + [Defined if the host has big endian byte ordering]) fi ]) @@ -337,7 +319,8 @@ define(GNUPG_CHECK_IPC, gnupg_cv_ipc_rmid_deferred_release="assume-no") ) if test "$gnupg_cv_ipc_rmid_deferred_release" = "yes"; then - AC_DEFINE(IPC_RMID_DEFERRED_RELEASE) + AC_DEFINE(IPC_RMID_DEFERRED_RELEASE,1, + [Defined if we can do a deferred shm release]) AC_MSG_RESULT(yes) else if test "$gnupg_cv_ipc_rmid_deferred_release" = "no"; then @@ -360,7 +343,8 @@ define(GNUPG_CHECK_IPC, ) ) if test "$gnupg_cv_ipc_have_shm_lock" = "yes"; then - AC_DEFINE(IPC_HAVE_SHM_LOCK) + AC_DEFINE(IPC_HAVE_SHM_LOCK,1, + [Defined if a SysV shared memory supports the LOCK flag]) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) @@ -408,7 +392,8 @@ define(GNUPG_CHECK_MLOCK, gnupg_cv_mlock_is_in_sys_mman=yes, gnupg_cv_mlock_is_in_sys_mman=no)]) if test "$gnupg_cv_mlock_is_in_sys_mman" = "yes"; then - AC_DEFINE(HAVE_MLOCK) + AC_DEFINE(HAVE_MLOCK,1, + [Defined if the system supports an mlock() call]) fi fi fi @@ -448,7 +433,8 @@ define(GNUPG_CHECK_MLOCK, ) ) if test "$gnupg_cv_have_broken_mlock" = "yes"; then - AC_DEFINE(HAVE_BROKEN_MLOCK) + AC_DEFINE(HAVE_BROKEN_MLOCK,1, + [Defined if the mlock() call does not work]) AC_MSG_RESULT(yes) else if test "$gnupg_cv_have_broken_mlock" = "no"; then @@ -725,7 +711,7 @@ fi AC_MSG_RESULT($ac_cv_sys_symbol_underscore) if test x$ac_cv_sys_symbol_underscore = xyes; then AC_DEFINE(WITH_SYMBOL_UNDERSCORE,1, - [define if compiled symbols have a leading underscore]) + [Defined if compiled symbols have a leading underscore]) fi ]) @@ -748,86 +734,8 @@ AC_CACHE_CHECK([if mkdir takes one argument], gnupg_cv_mkdir_takes_one_arg, #endif], [mkdir ("foo", 0);], gnupg_cv_mkdir_takes_one_arg=no, gnupg_cv_mkdir_takes_one_arg=yes)]) if test $gnupg_cv_mkdir_takes_one_arg = yes ; then - AC_DEFINE(MKDIR_TAKES_ONE_ARG) + AC_DEFINE(MKDIR_TAKES_ONE_ARG,1, + [Defined if mkdir() does not take permission flags]) fi ]) - -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 --git a/cipher/ChangeLog b/cipher/ChangeLog index 087c45838..db101efa6 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -1,3 +1,9 @@ +2001-07-18 Werner Koch + + * rndlinux.c (gather_random): casted a size_t arg to int so that + the format string is correct. Casting is okay here and avoids + translation changes. + 2001-06-12 Werner Koch * rndw32.c (slow_gatherer_windowsNT): Ditto. Not really needed here but anyway. diff --git a/cipher/Makefile.am b/cipher/Makefile.am index 1c33e1de5..023b8dc5a 100644 --- a/cipher/Makefile.am +++ b/cipher/Makefile.am @@ -19,7 +19,7 @@ ## Process this file with automake to produce Makefile.in -INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/intl +INCLUDES = -I.. -I$(top_srcdir)/include -I$(top_srcdir)/intl noinst_LIBRARIES = libcipher.a diff --git a/cipher/rndlinux.c b/cipher/rndlinux.c index 5f2ccf241..566d759f6 100644 --- a/cipher/rndlinux.c +++ b/cipher/rndlinux.c @@ -141,7 +141,7 @@ gather_random( void (*add)(const void*, size_t, int), int requester, #endif _("\n" "Not enough random bytes available. Please do some other work to give\n" -"the OS a chance to collect more entropy! (Need %d more bytes)\n"), length ); +"the OS a chance to collect more entropy! (Need %d more bytes)\n"), (int)length ); warn = 1; continue; } diff --git a/doc/gpg.sgml b/doc/gpg.sgml index d36849751..1fa217f6f 100644 --- a/doc/gpg.sgml +++ b/doc/gpg.sgml @@ -1488,6 +1488,14 @@ refer to the file descriptor n and not to a file with that name. Experimental use only. + +--preserve-permissions + +Don't change the permissions of a secret keyring back to user +read/write only. Use this option only if you really know what you are doing. + + + diff --git a/g10/ChangeLog b/g10/ChangeLog index af3e65bf7..85a66e75f 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,41 @@ +2001-07-26 Werner Koch + + * parse-packet.c (parse_photo_id): Reset all variables. + * getkey.c (merge_selfsigs_main): Removed checks on PHOTO_ID + because this is handled identically to a user ID. + +2001-07-06 Werner Koch + + * cipher.c (write_header): Don't use MDC with --rfc1991. Suggested + by disastry@saiknes.lv. + +2001-07-05 Werner Koch + + * g10.c, options.h: New option --preserve-permissions. + * ringedit.c (add_keyblock_resource): Use it here + (keyring_copy): and here. + + * trustdb.c (verify_own_keys): Be more silent on --quiet. + Suggested by Thomas Roessler. + * sig-check.c (check_key_signature2): Ditto. + * mainproc.c (proc_encrypted, proc_tree): Ditto + * getkey.c (lookup): Ditto. + +2001-07-04 Werner Koch + + * ringedit.c (add_keyblock_resource): Restore filename in case of error. + +2001-06-25 Werner Koch + + * kbnode.c (dump_kbnode): Print the signature timestamp. + + * keyedit.c (keyedit_menu): New menu point "primary". + (change_primary_uid_cb): New. + (menu_set_primary_uid): New. + * sign.c (update_keysig_packet): New. + * build-packet.c (build_sig_subpkt): Put the primary UID flag into + the hashed area. Allow update of some more packets. + 2001-06-15 Werner Koch * getkey.c (merge_selfsigs): Exit gracefully when a secret key is diff --git a/g10/Makefile.am b/g10/Makefile.am index c38b9acf3..f77d8d32a 100644 --- a/g10/Makefile.am +++ b/g10/Makefile.am @@ -18,7 +18,7 @@ ## Process this file with automake to produce Makefile.in -INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/intl +INCLUDES = -I.. -I$(top_srcdir)/include -I$(top_srcdir)/intl EXTRA_DIST = OPTIONS pubring.asc options.skel OMIT_DEPENDENCIES = zlib.h zconf.h LDFLAGS = @LDFLAGS@ @DYNLINK_LDFLAGS@ diff --git a/g10/build-packet.c b/g10/build-packet.c index 1e3776186..3a981ca5c 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -748,7 +748,14 @@ build_sig_subpkt( PKT_signature *sig, sigsubpkttype_t type, else if( (data = find_subpkt( sig->unhashed_data, type, &hlen, &dlen ))) found = 2; - if (found==2 && type == SIGSUBPKT_PRIV_VERIFY_CACHE) { + if (found==1 && (type == SIGSUBPKT_SIG_CREATED) ) { + unused = delete_sig_subpkt (sig->hashed_data, type); + assert (unused); + found = 0; + } + else if (found==2 && ( type == SIGSUBPKT_PRIV_VERIFY_CACHE + || type == SIGSUBPKT_ISSUER + ) ) { unused = delete_sig_subpkt (sig->unhashed_data, type); assert (unused); found = 0; @@ -773,6 +780,7 @@ build_sig_subpkt( PKT_signature *sig, sigsubpkttype_t type, case SIGSUBPKT_NOTATION: case SIGSUBPKT_POLICY: case SIGSUBPKT_REVOC_REASON: + case SIGSUBPKT_PRIMARY_UID: hashed = 1; break; default: hashed = 0; break; } @@ -842,6 +850,7 @@ build_sig_subpkt( PKT_signature *sig, sigsubpkttype_t type, /**************** * Put all the required stuff from SIG into subpackets of sig. + * Hmmm, should we delete those subpackets which are in a wrong area? */ void build_sig_subpkt_from_sig( PKT_signature *sig ) diff --git a/g10/cipher.c b/g10/cipher.c index 6ad204cc4..fbee543be 100644 --- a/g10/cipher.c +++ b/g10/cipher.c @@ -54,7 +54,7 @@ write_header( cipher_filter_context_t *cfx, IOBUF a ) log_fatal("unsupported blocksize %u\n", blocksize ); if( blocksize != 8 ) use_mdc = 1; /* enable it for all modern ciphers */ - if( opt.rfc2440 ) + if( opt.rfc2440 || opt.rfc1991 ) use_mdc = 0; /* override - rfc2440 does not know about MDC */ memset( &ed, 0, sizeof ed ); diff --git a/g10/g10.c b/g10/g10.c index cd4e2bf04..87f372021 100644 --- a/g10/g10.c +++ b/g10/g10.c @@ -206,6 +206,7 @@ enum cmd_and_opt_values { aNull = 0, oFixedListMode, oNoSigCache, oNoSigCreateCheck, + oPreservePermissions, oEmu3DESS2KBug, /* will be removed in 1.1 */ oEmuMDEncodeBug, aTest }; @@ -404,6 +405,7 @@ static ARGPARSE_OPTS opts[] = { { oEnableSpecialFilenames, "enable-special-filenames", 0, "@" }, { oNoExpensiveTrustChecks, "no-expensive-trust-checks", 0, "@" }, { aDeleteSecretAndPublicKey, "delete-secret-and-public-key",256, "@" }, + { oPreservePermissions, "preserve-permissions", 0, "@"}, { oEmu3DESS2KBug, "emulate-3des-s2k-bug", 0, "@"}, { oEmuMDEncodeBug, "emulate-md-encode-bug", 0, "@"}, {0} }; @@ -986,6 +988,7 @@ main( int argc, char **argv ) iobuf_enable_special_filenames (1); break; case oNoExpensiveTrustChecks: opt.no_expensive_trust_checks=1; break; + case oPreservePermissions: opt.preserve_permissions=1; break; default : pargs.err = configfp? 1:2; break; } diff --git a/g10/getkey.c b/g10/getkey.c index 96ab714b5..16306a71a 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1554,8 +1554,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) sigdate = 0; /* helper to find the latest signature in one user ID */ uiddate = 0; /* and over of all user IDs */ for(k=keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next ) { - if ( k->pkt->pkttype == PKT_USER_ID - || k->pkt->pkttype == PKT_PHOTO_ID ) { + if ( k->pkt->pkttype == PKT_USER_ID ) { if ( uidnode && signode ) fixup_uidnode ( uidnode, signode, keytimestamp ); uidnode = k; @@ -1610,8 +1609,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) uiddate = 0; /* helper to find the latest user ID */ for(k=keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next ) { - if ( k->pkt->pkttype == PKT_USER_ID - || k->pkt->pkttype == PKT_PHOTO_ID ) { + if ( k->pkt->pkttype == PKT_USER_ID ) { PKT_user_id *uid = k->pkt->pkt.user_id; if ( uid->help_key_usage && uid->created > uiddate ) { key_usage = uid->help_key_usage; @@ -1637,8 +1635,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) uiddate = 0; for(k=keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next ) { - if ( k->pkt->pkttype == PKT_USER_ID - || k->pkt->pkttype == PKT_PHOTO_ID ) { + if ( k->pkt->pkttype == PKT_USER_ID ) { PKT_user_id *uid = k->pkt->pkt.user_id; if ( uid->help_key_expire && uid->created > uiddate ) { key_expire = uid->help_key_expire; @@ -1658,8 +1655,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) uiddate = uiddate2 = 0; uidnode = uidnode2 = NULL; for(k=keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next ) { - if ( k->pkt->pkttype == PKT_USER_ID - || k->pkt->pkttype == PKT_PHOTO_ID ) { + if ( k->pkt->pkttype == PKT_USER_ID ) { PKT_user_id *uid = k->pkt->pkt.user_id; if ( uid->is_primary && uid->created > uiddate ) { uiddate = uid->created; @@ -1674,8 +1670,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) if ( uidnode ) { for(k=keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next ) { - if ( k->pkt->pkttype == PKT_USER_ID - || k->pkt->pkttype == PKT_PHOTO_ID ) { + if ( k->pkt->pkttype == PKT_USER_ID ) { PKT_user_id *uid = k->pkt->pkt.user_id; if ( k != uidnode ) uid->is_primary = 0; @@ -2245,8 +2240,9 @@ lookup( GETKEY_CTX ctx, KBNODE *ret_keyblock, int secmode ) keyid_from_sk( k->pkt->pkt.secret_key, aki ); k = get_pubkeyblock( aki ); if( !k ) { - log_info(_("key %08lX: secret key without public key " - "- skipped\n"), (ulong)aki[1] ); + if (!opt.quiet) + log_info(_("key %08lX: secret key without public key " + "- skipped\n"), (ulong)aki[1] ); goto skip; } secblock = ctx->keyblock; diff --git a/g10/kbnode.c b/g10/kbnode.c index 261a2b4da..b2b26a0b9 100644 --- a/g10/kbnode.c +++ b/g10/kbnode.c @@ -164,9 +164,10 @@ find_prev_kbnode( KBNODE root, KBNODE node, int pkttype ) { KBNODE n1; - for(n1=NULL ; root && root != node; root = root->next ) - if( !pkttype || root->pkt->pkttype == pkttype ) - n1 = root; + for (n1=NULL; root && root != node; root = root->next ) { + if (!pkttype ||root->pkt->pkttype == pkttype) + n1 = root; + } return n1; } @@ -184,7 +185,7 @@ find_next_kbnode( KBNODE node, int pkttype ) for( node=node->next ; node; node = node->next ) { if( !pkttype ) return node; - else if( pkttype == PKT_USER_ID + else if( pkttype == PKT_USER_ID && ( node->pkt->pkttype == PKT_PUBLIC_KEY || node->pkt->pkttype == PKT_SECRET_KEY ) ) return NULL; @@ -367,9 +368,10 @@ dump_kbnode( KBNODE node ) fputs("\"\n", stderr); } else if( node->pkt->pkttype == PKT_SIGNATURE ) { - fprintf(stderr, " class=%02x keyid=%08lX\n", + fprintf(stderr, " class=%02x keyid=%08lX ts=%lu\n", node->pkt->pkt.signature->sig_class, - (ulong)node->pkt->pkt.signature->keyid[1] ); + (ulong)node->pkt->pkt.signature->keyid[1], + (ulong)node->pkt->pkt.signature->timestamp); } else if( node->pkt->pkttype == PKT_GPG_CONTROL ) { fprintf(stderr, " ctrl=%d len=%u\n", diff --git a/g10/keyedit.c b/g10/keyedit.c index 1a948d038..8b6386f71 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -50,6 +50,7 @@ static void menu_deluid( KBNODE pub_keyblock, KBNODE sec_keyblock ); static int menu_delsig( KBNODE pub_keyblock ); static void menu_delkey( KBNODE pub_keyblock, KBNODE sec_keyblock ); static int menu_expire( KBNODE pub_keyblock, KBNODE sec_keyblock ); +static int menu_set_primary_uid( KBNODE pub_keyblock, KBNODE sec_keyblock ); static int menu_select_uid( KBNODE keyblock, int idx ); static int menu_select_key( KBNODE keyblock, int idx ); static int count_uids( KBNODE keyblock ); @@ -107,7 +108,7 @@ get_keyblock_byname( KBNODE *keyblock, KBPOS *kbpos, const char *username ) /**************** - * Print information about a signature, chek it and return true + * Print information about a signature, check it and return true * if the signature is okay. NODE must be a signature packet. */ static int @@ -566,7 +567,7 @@ keyedit_menu( const char *username, STRLIST locusr, STRLIST commands, { enum cmdids { cmdNONE = 0, cmdQUIT, cmdHELP, cmdFPR, cmdLIST, cmdSELUID, cmdCHECK, cmdSIGN, - cmdLSIGN, cmdREVSIG, cmdREVKEY, cmdDELSIG, + cmdLSIGN, cmdREVSIG, cmdREVKEY, cmdDELSIG, cmdPRIMARY, cmdDEBUG, cmdSAVE, cmdADDUID, cmdDELUID, cmdADDKEY, cmdDELKEY, cmdTOGGLE, cmdSELKEY, cmdPASSWD, cmdTRUST, cmdPREF, cmdEXPIRE, cmdENABLEKEY, cmdDISABLEKEY, cmdSHOWPREF, @@ -600,6 +601,7 @@ keyedit_menu( const char *username, STRLIST locusr, STRLIST commands, { N_("delkey") , cmdDELKEY , 0,1,0, N_("delete a secondary key") }, { N_("delsig") , cmdDELSIG , 0,1,0, N_("delete signatures") }, { N_("expire") , cmdEXPIRE , 1,1,0, N_("change the expire date") }, + { N_("primary") , cmdPRIMARY , 1,1,0, N_("flag user ID as primary")}, { N_("toggle") , cmdTOGGLE , 1,0,0, N_("toggle between secret " "and public key listing") }, { N_("t" ) , cmdTOGGLE , 1,0,0, NULL }, @@ -914,6 +916,14 @@ keyedit_menu( const char *username, STRLIST locusr, STRLIST commands, } break; + case cmdPRIMARY: + if( menu_set_primary_uid ( keyblock, sec_keyblock ) ) { + merge_keys_and_selfsig( keyblock ); + modified = 1; + redisplay = 1; + } + break; + case cmdPASSWD: if( change_passphrase( sec_keyblock ) ) sec_modified = 1; @@ -1630,6 +1640,126 @@ menu_expire( KBNODE pub_keyblock, KBNODE sec_keyblock ) } + +static int +change_primary_uid_cb ( PKT_signature *sig, void *opaque ) +{ + byte buf[1]; + + /* first clear all primary uid flags so that we are sure none are + * lingering around */ + delete_sig_subpkt (sig->hashed_data, SIGSUBPKT_PRIMARY_UID); + delete_sig_subpkt (sig->unhashed_data, SIGSUBPKT_PRIMARY_UID); + + /* if opaque is set,we want to set the primary id */ + if (opaque) { + buf[0] = 1; + build_sig_subpkt (sig, SIGSUBPKT_PRIMARY_UID, buf, 1 ); + } + + return 0; +} + +/* + * Set the primary uid flag for the selected UID. We will also reset + * all other primary uid flags. For this to work with have to update + * all the signature timestamps. If we would do this with the current + * time, we lose quite a lot of information, so we use a a kludge to + * do this: Just increment the timestamp by one second which is + * sufficient to updated a signature during import. + */ +static int +menu_set_primary_uid ( KBNODE pub_keyblock, KBNODE sec_keyblock ) +{ + PKT_secret_key *sk; /* copy of the main sk */ + PKT_public_key *main_pk; + PKT_user_id *uid; + KBNODE node; + u32 keyid[2]; + int selected; + int modified = 0; + + if ( count_selected_uids (pub_keyblock) != 1 ) { + tty_printf(_("Please select exactly one user ID.\n")); + return 0; + } + + node = find_kbnode( sec_keyblock, PKT_SECRET_KEY ); + sk = copy_secret_key( NULL, node->pkt->pkt.secret_key); + + /* Now we can actually change the self signature(s) */ + main_pk = NULL; + uid = NULL; + selected = 0; + for ( node=pub_keyblock; node; node = node->next ) { + if ( node->pkt->pkttype == PKT_PUBLIC_SUBKEY ) + break; /* ready */ + + if ( node->pkt->pkttype == PKT_PUBLIC_KEY ) { + main_pk = node->pkt->pkt.public_key; + keyid_from_pk( main_pk, keyid ); + } + else if ( node->pkt->pkttype == PKT_USER_ID ) { + uid = node->pkt->pkt.user_id; + selected = node->flag & NODFLG_SELUID; + } + else if ( main_pk && uid && node->pkt->pkttype == PKT_SIGNATURE ) { + PKT_signature *sig = node->pkt->pkt.signature; + if ( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] + && (uid && (sig->sig_class&~3) == 0x10) + && sig->version >= 4 ) { + /* this is a selfsignature which is to be replaced + * we can just ignore v3 signatures because they are + * not able to carry the primary ID flag */ + /* FIXME: We must make sure that we only have one + self-signature per user ID here (not counting + revocations) */ + PKT_signature *newsig; + PACKET *newpkt; + const byte *p; + int action; + + /* see whether this signature has the primary UID flag */ + p = parse_sig_subpkt (sig->hashed_data, + SIGSUBPKT_PRIMARY_UID, NULL ); + if ( !p ) + p = parse_sig_subpkt (sig->unhashed_data, + SIGSUBPKT_PRIMARY_UID, NULL ); + if ( p && *p ) /* yes */ + action = selected? 0 : -1; + else /* no */ + action = selected? 1 : 0; + + if (action) { + int rc = update_keysig_packet (&newsig, sig, + main_pk, uid, + sk, + change_primary_uid_cb, + action > 0? "x":NULL ); + if( rc ) { + log_error ("update_keysig_packet failed: %s\n", + g10_errstr(rc)); + free_secret_key( sk ); + return 0; + } + /* replace the packet */ + newpkt = m_alloc_clear( sizeof *newpkt ); + newpkt->pkttype = PKT_SIGNATURE; + newpkt->pkt.signature = newsig; + free_packet( node->pkt ); + m_free( node->pkt ); + node->pkt = newpkt; + modified = 1; + } + } + } + } + + free_secret_key( sk ); + return modified; +} + + /**************** * Select one user id or remove all selection if index is 0. * Returns: True if the selection changed; diff --git a/g10/keylist.c b/g10/keylist.c index 594ed4fd1..62194d823 100644 --- a/g10/keylist.c +++ b/g10/keylist.c @@ -667,7 +667,6 @@ reorder_keyblock (KBNODE keyblock) primary = primary2 = node; for (node=node->next; node; primary2=node, node = node->next ) { if( node->pkt->pkttype == PKT_USER_ID - || node->pkt->pkttype == PKT_PHOTO_ID || node->pkt->pkttype == PKT_PUBLIC_SUBKEY || node->pkt->pkttype == PKT_SECRET_SUBKEY ) { break; diff --git a/g10/mainproc.c b/g10/mainproc.c index c0bd9455e..4609d56f0 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -398,8 +398,10 @@ proc_encrypted( CTX c, PACKET *pkt ) { int result = 0; - print_pkenc_list( c->pkenc_list, 1 ); - print_pkenc_list( c->pkenc_list, 0 ); + if (!opt.quiet) { + print_pkenc_list ( c->pkenc_list, 1 ); + print_pkenc_list ( c->pkenc_list, 0 ); + } write_status( STATUS_BEGIN_DECRYPTION ); @@ -1272,7 +1274,7 @@ check_sig_and_print( CTX c, KBNODE node ) write_status_text( rc? STATUS_BADSIG : STATUS_GOODSIG, us ); m_free(us); - /* find an print the primary user ID */ + /* find and print the primary user ID */ for( un=keyblock; un; un = un->next ) { if( un->pkt->pkttype != PKT_USER_ID ) continue; @@ -1507,7 +1509,7 @@ proc_tree( CTX c, KBNODE node ) } else if ( c->pipemode.op == 'B' ) ; /* this is a detached signature trough the pipemode handler */ - else + else if (!opt.quiet) log_info(_("old style (PGP 2.x) signature\n")); for( n1 = node; n1; (n1 = find_next_kbnode(n1, PKT_SIGNATURE )) ) diff --git a/g10/options.h b/g10/options.h index 58f5f0b58..567d9201e 100644 --- a/g10/options.h +++ b/g10/options.h @@ -103,6 +103,7 @@ struct { int no_expensive_trust_checks; int no_sig_cache; int no_sig_create_check; + int preserve_permissions; } opt; diff --git a/g10/packet.h b/g10/packet.h index bfb5e9dc3..05fb24017 100644 --- a/g10/packet.h +++ b/g10/packet.h @@ -405,6 +405,13 @@ int make_keysig_packet( PKT_signature **ret_sig, PKT_public_key *pk, int sigclass, int digest_algo, int (*mksubpkt)(PKT_signature *, void *), void *opaque ); +int update_keysig_packet( PKT_signature **ret_sig, + PKT_signature *orig_sig, + PKT_public_key *pk, + PKT_user_id *uid, + PKT_secret_key *sk, + int (*mksubpkt)(PKT_signature *, void *), + void *opaque ); /*-- keygen.c --*/ PKT_user_id *generate_user_id(void); diff --git a/g10/parse-packet.c b/g10/parse-packet.c index 0e24f6b7e..15487572e 100644 --- a/g10/parse-packet.c +++ b/g10/parse-packet.c @@ -423,7 +423,7 @@ parse( IOBUF inp, PACKET *pkt, int reqtype, off_t *retpos, rc = parse_user_id(inp, pkttype, pktlen, pkt ); break; case PKT_PHOTO_ID: - pkt->pkttype = pkttype = PKT_USER_ID; /* must fix it */ + pkt->pkttype = pkttype = PKT_USER_ID; /* we store it in the userID */ rc = parse_photo_id(inp, pkttype, pktlen, pkt); break; case PKT_OLD_COMMENT: @@ -1625,6 +1625,11 @@ parse_photo_id( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *packet ) packet->pkt.user_id = m_alloc(sizeof *packet->pkt.user_id + 30); sprintf( packet->pkt.user_id->name, "[image of size %lu]", pktlen ); packet->pkt.user_id->len = strlen(packet->pkt.user_id->name); + packet->pkt.user_id->is_primary = 0; + packet->pkt.user_id->is_revoked = 0; + packet->pkt.user_id->created = 0; + packet->pkt.user_id->help_key_usage = 0; + packet->pkt.user_id->help_key_expire = 0; packet->pkt.user_id->photo = m_alloc(sizeof *packet->pkt.user_id + pktlen); packet->pkt.user_id->photolen = pktlen; diff --git a/g10/ringedit.c b/g10/ringedit.c index f89bda35d..4499f65f4 100644 --- a/g10/ringedit.c +++ b/g10/ringedit.c @@ -292,6 +292,7 @@ add_keyblock_resource( const char *url, int force, int secret ) */ try_make_homedir( filename ); rc = G10ERR_OPEN_FILE; + *last_slash_in_filename = '/'; goto leave; } @@ -306,7 +307,7 @@ add_keyblock_resource( const char *url, int force, int secret ) } else { #ifndef HAVE_DOSISH_SYSTEM - if( secret ) { + if( secret && !opt.preserve_permissions ) { if( chmod( filename, S_IRUSR | S_IWUSR ) ) { log_error("%s: chmod failed: %s\n", filename, strerror(errno) ); @@ -1519,7 +1520,7 @@ keyring_copy( KBPOS *kbpos, int mode, KBNODE root ) } /* if the new file is a secring, restrict the permissions */ #ifndef HAVE_DOSISH_SYSTEM - if( rentry->secret ) { + if( rentry->secret && !opt.preserve_permissions ) { if( chmod( tmpfname, S_IRUSR | S_IWUSR ) ) { log_error("%s: chmod failed: %s\n", tmpfname, strerror(errno) ); diff --git a/g10/sig-check.c b/g10/sig-check.c index 660919241..fe3f1c020 100644 --- a/g10/sig-check.c +++ b/g10/sig-check.c @@ -546,7 +546,8 @@ check_key_signature2( KBNODE root, KBNODE node, int *is_selfsig, md_close(md); } else { - log_info ("no subkey for subkey revocation packet\n"); + if (!opt.quiet) + log_info ("no subkey for subkey revocation packet\n"); rc = G10ERR_SIG_CLASS; } } diff --git a/g10/sign.c b/g10/sign.c index bb1f2679a..645d676af 100644 --- a/g10/sign.c +++ b/g10/sign.c @@ -24,6 +24,7 @@ #include #include #include +#include /* need sleep() */ #include "options.h" #include "packet.h" @@ -905,3 +906,108 @@ make_keysig_packet( PKT_signature **ret_sig, PKT_public_key *pk, } + +/**************** + * Create a new signature packet based on an existing one. + * Only user ID signatureare supportted for now. + * TODO: Merge this with make_keysig_packet. + */ +int +update_keysig_packet( PKT_signature **ret_sig, + PKT_signature *orig_sig, + PKT_public_key *pk, + PKT_user_id *uid, + PKT_secret_key *sk, + int (*mksubpkt)(PKT_signature *, void *), + void *opaque + ) +{ + PKT_signature *sig; + int rc=0; + MD_HANDLE md; + + if (!orig_sig || !pk || !uid || !sk) + return G10ERR_GENERAL; + if (orig_sig->sig_class < 0x10 || orig_sig->sig_class > 0x13 ) + return G10ERR_GENERAL; + + md = md_open( orig_sig->digest_algo, 0 ); + + /* hash the public key certificate and the user id */ + hash_public_key( md, pk ); + if( orig_sig->version >= 4 ) { + byte buf[5]; + buf[0] = 0xb4; /* indicates a userid packet */ + buf[1] = uid->len >> 24; /* always use 4 length bytes */ + buf[2] = uid->len >> 16; + buf[3] = uid->len >> 8; + buf[4] = uid->len; + md_write( md, buf, 5 ); + } + md_write( md, uid->name, uid->len ); + + /* create a new signature packet */ + sig = copy_signature (NULL, orig_sig); + if ( sig->version >= 4 && mksubpkt) + rc = (*mksubpkt)(sig, opaque); + + /* we increasethe timestamp by one second so that a future import + of this key will replace the existing one. We make sure that + we don't produce a timestamp in the future */ + sig->timestamp++; + while (sig->timestamp >= make_timestamp()) + sleep (1); + /* put the updated timestamp back into the data */ + if( sig->version >= 4 ) + build_sig_subpkt_from_sig( sig ); + + if (!rc) { + if (sig->version >= 4) + md_putc (md, sig->version); + md_putc (md, sig->sig_class); + if (sig->version < 4) { + u32 a = sig->timestamp; + md_putc( md, (a >> 24) & 0xff ); + md_putc( md, (a >> 16) & 0xff ); + md_putc( md, (a >> 8) & 0xff ); + md_putc( md, a & 0xff ); + } + else { + byte buf[6]; + size_t n; + + md_putc( md, sig->pubkey_algo ); + md_putc( md, sig->digest_algo ); + if( sig->hashed_data ) { + n = (sig->hashed_data[0] << 8) | sig->hashed_data[1]; + md_write( md, sig->hashed_data, n+2 ); + n += 6; + } + else { + md_putc( md, 0 ); /* always hash the length of the subpacket*/ + md_putc( md, 0 ); + n = 6; + } + /* add some magic */ + buf[0] = sig->version; + buf[1] = 0xff; + buf[2] = n >> 24; /* hmmm, n is only 16 bit, so this is always 0 */ + buf[3] = n >> 16; + buf[4] = n >> 8; + buf[5] = n; + md_write( md, buf, 6 ); + } + md_final(md); + + rc = complete_sig( sig, sk, md ); + } + + md_close (md); + if( rc ) + free_seckey_enc (sig); + else + *ret_sig = sig; + return rc; +} + + diff --git a/g10/tdbdump.c b/g10/tdbdump.c index 07e3a7dd2..d1a6b3120 100644 --- a/g10/tdbdump.c +++ b/g10/tdbdump.c @@ -328,7 +328,7 @@ list_records( ulong lid ) /**************** - * Dump the complte trustdb or only the entries of one key. + * Dump the entire trustdb or only the entries of one key. */ void list_trustdb( const char *username ) diff --git a/g10/trustdb.c b/g10/trustdb.c index 1572b27ec..cfbb8a3c9 100644 --- a/g10/trustdb.c +++ b/g10/trustdb.c @@ -574,8 +574,9 @@ verify_own_keys(void) memset( pk, 0, sizeof *pk ); rc = get_pubkey( pk, keyid ); if( rc ) { - log_info(_("key %08lX: secret key without public key - skipped\n"), - (ulong)keyid[1] ); + if (!opt.quiet) + log_info(_("key %08lX: secret key without public key " + "- skipped\n"), (ulong)keyid[1] ); goto skip; } have_pk=1; diff --git a/mpi/ChangeLog b/mpi/ChangeLog index e6076fe89..ec007d677 100644 --- a/mpi/ChangeLog +++ b/mpi/ChangeLog @@ -1,3 +1,8 @@ +2001-07-09 Werner Koch + + * config.links: Changed the way the list of files to be + symlinked is returned. + 2001-05-27 Werner Koch * hppa/, hppa1.1/, pa7100/ : Use .label command instead of labels diff --git a/mpi/Makefile.am b/mpi/Makefile.am index 346c1a6be..56cf47a52 100644 --- a/mpi/Makefile.am +++ b/mpi/Makefile.am @@ -19,7 +19,7 @@ ## Process this file with automake to produce Makefile.in -INCLUDES = -I$(top_srcdir)/include +INCLUDES = -I.. -I$(top_srcdir)/include CFLAGS = @CFLAGS@ @MPI_OPT_FLAGS@ ASFLAGS = @MPI_SFLAGS@ diff --git a/mpi/config.links b/mpi/config.links index 38940ca7b..6efd38907 100644 --- a/mpi/config.links +++ b/mpi/config.links @@ -18,7 +18,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # sourced by ../configure to get the list of files to link -# this should set $mpi_ln_src and mpi_ln_dst. +# this should set $mpi_ln_list. # Note: this is called from the above directory. @@ -274,8 +274,7 @@ mpi_ln_modules="${mpi_extra_modules} mpih-add1 mpih-mul1 mpih-mul2 mpih-mul3 \ mpih-lshift mpih-rshift mpih-sub1" mpi_ln_objects= -mpi_ln_src= -mpi_ln_dst= +mpi_ln_list= # try to get file to link from the assembler subdirectory and # if this fails get it from the generic subdirectory. @@ -285,12 +284,10 @@ for fn in $mpi_ln_modules ; do for dir in $path ; do rm -f $srcdir/mpi/$fn.[Sc] if test -f $srcdir/mpi/$dir/$fn.S ; then - mpi_ln_src="$mpi_ln_src mpi/$dir/$fn.S" - mpi_ln_dst="$mpi_ln_dst mpi/$fn.S" + mpi_ln_list="$mpi_ln_list mpi/$fn.S:mpi/$dir/$fn.S" break; elif test -f $srcdir/mpi/$dir/$fn.c ; then - mpi_ln_src="$mpi_ln_src mpi/$dir/$fn.c" - mpi_ln_dst="$mpi_ln_dst mpi/$fn.c" + mpi_ln_list="$mpi_ln_list mpi/$fn.c:mpi/$dir/$fn.c" break; fi done @@ -299,10 +296,9 @@ done # Same thing for the file which defines the limb size path="$path generic" for dir in $path ; do - rm -f $srcdir/mpi/mpi-asm-defs.h - if test -f $srcdir/mpi/$dir/mpi-asm-defs.h ; then - mpi_ln_src="$mpi_ln_src mpi/$dir/mpi-asm-defs.h" - mpi_ln_dst="$mpi_ln_dst mpi/mpi-asm-defs.h" - break; - fi + rm -f $srcdir/mpi/mpi-asm-defs.h + if test -f $srcdir/mpi/$dir/mpi-asm-defs.h ; then + mpi_ln_list="$mpi_ln_list mpi/mpi-asm-defs.h:mpi/$dir/mpi-asm-defs.h" + break; + fi done diff --git a/po/ChangeLog b/po/ChangeLog index 7ecf94f78..d9b864ee2 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,11 @@ +2001-07-26 gettextize + + * Makefile.in.in: Upgrade to gettext-0.10.38. + +2001-07-05 Werner Koch + + * id.po: Updated + 2001-05-28 Werner Koch * ru.po: Removed - too many format string bugs. diff --git a/po/id.po b/po/id.po index f2ac1a77c..f180ca488 100644 --- a/po/id.po +++ b/po/id.po @@ -1,13 +1,13 @@ -# GNU Privacy Guard 1.0.5 (Indonesian) +# GNU Privacy Guard 1.0.6 (Indonesian) # Copyright (C) 1999, 2001 Free Software Foundation, Inc. -# Tedi Heriyanto , 1999-2001. +# Tedi Heriyanto , 1999-2001. # msgid "" msgstr "" -"Project-Id-Version: GNU Privacy Guard 1.0.4\n" +"Project-Id-Version: GNUPG 1.0.6\n" "POT-Creation-Date: 2001-05-29 08:58+0200\n" -"PO-Revision-Date: 2001-04-30 15:19GMT+0700\n" -"Last-Translator: Tedi Heriyanto \n" +"PO-Revision-Date: 2001-06-01 16:41GMT+0700\n" +"Last-Translator: Tedi Heriyanto \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" @@ -598,9 +598,8 @@ msgid "|FD|write status info to this FD" msgstr "|FD|tulis info status ke FD ini" #: g10/g10.c:310 -#, fuzzy msgid "|KEYID|ultimately trust this key" -msgstr "|KEYID|sangat percaya kunci ini" +msgstr "|KEYID|sangat percayai kunci ini" #: g10/g10.c:311 msgid "|FILE|load extension module FILE" @@ -1617,7 +1616,7 @@ msgstr "" #: g10/keygen.c:1759 msgid "NOTE: creating subkeys for v3 keys is not OpenPGP compliant\n" -msgstr "" +msgstr "CATATAN: membuat subkey bagi kunci-kunci v3 tidak OpenPGP compliant\n" #: g10/keygen.c:1786 msgid "Really create? " diff --git a/scripts/ChangeLog b/scripts/ChangeLog index 549f606cb..2e1687b48 100644 --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,7 @@ +2001-07-09 Werner Koch + + * autogen.sh (autoconf_vers): Require autoconf 2.50 + 2001-05-06 Werner Koch * config.guess, config.sub: Add updates from subversions.gnu.org. diff --git a/scripts/autogen.sh b/scripts/autogen.sh index 570e17588..7ae41b8ab 100755 --- a/scripts/autogen.sh +++ b/scripts/autogen.sh @@ -13,7 +13,7 @@ PGM=GnuPG lib_config_files="" -autoconf_vers=2.13 +autoconf_vers=2.50 automake_vers=1.4 aclocal_vers=1.4 diff --git a/tools/Makefile.am b/tools/Makefile.am index e8f9297c2..c5e0cd578 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -19,7 +19,7 @@ ## Process this file with automake to produce Makefile.in EXTRA_DIST = lspgpot ring-a-party mail-signed-keys -INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/intl +INCLUDES = -I.. -I$(top_srcdir)/include -I$(top_srcdir)/intl needed_libs = ../cipher/libcipher.a \ ../mpi/libmpi.a ../util/libutil.a @INTLLIBS@ diff --git a/tools/gpgsplit.c b/tools/gpgsplit.c index 609587ebd..3094550f1 100644 --- a/tools/gpgsplit.c +++ b/tools/gpgsplit.c @@ -19,7 +19,7 @@ */ /* - * TODO: Add an option to uncompress packets. This should come wuite handy. + * TODO: Add an option to uncompress packets. This should come quite handy. */ #include @@ -49,13 +49,14 @@ enum cmd_and_opt_values { aNull = 0, oPrefix = 'p', aTest }; +#warning Add an option to split a keyring into reasonable sized chunks. static ARGPARSE_OPTS opts[] = { - { 301, NULL, 0, "@\nOptions:\n " }, + { 301, NULL, 0, "@Options:\n " }, { oVerbose, "verbose", 0, "verbose" }, - { oPrefix, "prefix", 2, "|STRING| Prepend filenames with STRING" }, + { oPrefix, "prefix", 2, "|STRING|Prepend filenames with STRING" }, {0} }; diff --git a/util/Makefile.am b/util/Makefile.am index 407595989..a8d40da2d 100644 --- a/util/Makefile.am +++ b/util/Makefile.am @@ -18,7 +18,7 @@ ## Process this file with automake to produce Makefile.in -INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/intl +INCLUDES = -I.. -I$(top_srcdir)/include -I$(top_srcdir)/intl noinst_LIBRARIES = libutil.a