aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>1998-02-02 14:36:06 +0000
committerWerner Koch <[email protected]>1998-02-02 14:36:06 +0000
commitc8f12e218f81f9211920b6fe50a786b617a2aeae (patch)
treed042319be043090b02df4396c9880398b2b831ea
parentauf tobold (diff)
downloadgnupg-c8f12e218f81f9211920b6fe50a786b617a2aeae.tar.gz
gnupg-c8f12e218f81f9211920b6fe50a786b617a2aeae.zip
changed structure of trustdb
Diffstat (limited to '')
-rw-r--r--Makefile.am2
-rw-r--r--Makefile.in290
-rw-r--r--TODO8
-rw-r--r--acinclude.m4356
-rw-r--r--cipher/Makefile.am10
-rw-r--r--cipher/Makefile.in266
-rw-r--r--config.h.in93
-rw-r--r--configure.in20
-rw-r--r--g10/Makefile.am27
-rw-r--r--g10/Makefile.in329
-rw-r--r--g10/g10.c176
-rw-r--r--g10/g10maint.c624
-rw-r--r--g10/parse-packet.c17
-rw-r--r--g10/seckey-cert.c4
-rw-r--r--g10/trustdb.c74
-rw-r--r--g10/trustdb.h4
-rw-r--r--include/i18n.h6
-rw-r--r--include/mpi.h2
-rw-r--r--mpi/Makefile.am8
-rw-r--r--mpi/Makefile.in268
-rw-r--r--mpi/mpicoder.c8
-rw-r--r--mpi/mpiutil.c30
-rwxr-xr-xscripts/missing134
-rw-r--r--tools/Makefile.am2
-rw-r--r--tools/Makefile.in250
-rw-r--r--util/Makefile.am8
-rw-r--r--util/Makefile.in269
-rw-r--r--util/secmem.c27
28 files changed, 2328 insertions, 984 deletions
diff --git a/Makefile.am b/Makefile.am
index 7e3529c5f..dea36e96a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-SUBDIRS = @INTLSUB@ @POSUB@ util mpi cipher tools g10
+SUBDIRS = util mpi cipher tools g10
EXTRA_DIST = VERSION
diff --git a/Makefile.in b/Makefile.in
index 4bf9cf0df..95edd9711 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
SHELL = /bin/sh
@@ -32,56 +38,106 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
-SUBDIRS = @INTLSUB@ @POSUB@ util mpi cipher tools g10
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+SUBDIRS = util mpi cipher tools g10
EXTRA_DIST = VERSION
-ACLOCAL = aclocal.m4
-ACCONFIG = acconfig.h
-CONFIG_HEADER_IN = config.h.in
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ./config.h
-DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
-Makefile.am Makefile.in NEWS README TODO acconfig.h aclocal.m4 \
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
+Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 aclocal.m4 \
config.h.in configure configure.in stamp-h.in
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
+GZIP = --best
default: all
+.SUFFIXES:
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile
-$(srcdir)/Makefile.in: Makefile.am configure.in
- cd $(srcdir) && automake Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+ cd $(top_builddir) \
+ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-# For an explanation of the following Makefile rules, see node
-# `Automatic Remaking' in GNU Autoconf documentation.
-Makefile: Makefile.in config.status
- CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
-config.status: configure
- ./config.status --recheck
-$(srcdir)/configure: configure.in $(ACLOCAL) $(CONFIGURE_DEPENDENCIES)
- cd $(srcdir) && autoconf
+$(ACLOCAL_M4): configure.in acinclude.m4
+ cd $(srcdir) && $(ACLOCAL)
-$(CONFIG_HEADER): stamp-h
-stamp-h: $(CONFIG_HEADER_IN) config.status
- CONFIG_FILES= CONFIG_HEADERS=$(CONFIG_HEADER) ./config.status
+config.status: $(srcdir)/configure
+ $(SHELL) ./config.status --recheck
+$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+ cd $(srcdir) && $(AUTOCONF)
+
+config.h: stamp-h
+ @:
+stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES= CONFIG_HEADERS=config.h \
+ $(SHELL) ./config.status
@echo timestamp > stamp-h
-$(srcdir)/$(CONFIG_HEADER_IN): stamp-h.in
-$(srcdir)/stamp-h.in: configure.in $(ACLOCAL) $(ACCONFIG) $(CONFIG_TOP) $(CONFIG_BOT)
- cd $(srcdir) && autoheader
- echo timestamp > $(srcdir)/stamp-h.in
+$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
+ cd $(top_srcdir) && $(AUTOHEADER)
+ @echo timestamp > $(srcdir)/stamp-h.in
+
+mostlyclean-hdr:
+
+clean-hdr:
+
+distclean-hdr:
+ -rm -f config.h
+
+maintainer-clean-hdr:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -93,163 +149,186 @@ $(srcdir)/stamp-h.in: configure.in $(ACLOCAL) $(ACCONFIG) $(CONFIG_TOP) $(CONFIG
@SET_MAKE@
all-recursive install-data-recursive install-exec-recursive \
-installdirs-recursive install-recursive uninstall-recursive \
-check-recursive installcheck-recursive info-recursive dvi-recursive \
+installdirs-recursive install-recursive uninstall-recursive \
+check-recursive installcheck-recursive info-recursive dvi-recursive:
+ @set fnord $(MAKEFLAGS); amf=$$2; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ target=`echo $@ | sed s/-recursive//`; \
+ echo "Making $$target in $$subdir"; \
+ (cd $$subdir && $(MAKE) $$target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- for subdir in $(SUBDIRS); do \
+ @set fnord $(MAKEFLAGS); amf=$$2; \
+ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+ rev="$$subdir $$rev"; \
+ done; \
+ for subdir in $$rev; do \
target=`echo $@ | sed s/-recursive//`; \
- echo making $$target in $$subdir; \
- (cd $$subdir && $(MAKE) $$target) \
- || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \
+ echo "Making $$target in $$subdir"; \
+ (cd $$subdir && $(MAKE) $$target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
-
-tags: TAGS
-
tags-recursive:
- list="$(SUBDIRS)"; for subdir in $$list; do \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
(cd $$subdir && $(MAKE) tags); \
done
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(CONFIG_HEADER) \
- $(TAGS_DEPENDENCIES)
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP)
+ here=`pwd` && cd $(srcdir) \
+ && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
- for subdir in $(SUBDIRS); do \
- test -f $$subdir/TAGS && { \
- tags="$$tags -i $$here/$$subdir/TAGS"; \
- }; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
done; \
- test -z "$(ETAGS_ARGS)$(CONFIG_HEADER)$(SOURCES)$(HEADERS)$$tags" \
- || etags $(ETAGS_ARGS) $$tags $(CONFIG_HEADER) $(SOURCES) $(HEADERS)
+ test -z "$(ETAGS_ARGS)config.h.in$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
- rm -f TAGS ID
+ -rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
- rm -rf $(distdir)
- $(TAR) zxf $(distdir).tar.gz
+ -rm -rf $(distdir)
+ GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) \
+ && $(MAKE) dvi \
&& $(MAKE) check \
&& $(MAKE) install \
&& $(MAKE) installcheck \
&& $(MAKE) dist
- rm -rf $(distdir)
+ -rm -rf $(distdir)
@echo "========================"; \
echo "$(distdir).tar.gz is ready for distribution"; \
echo "========================"
dist: distdir
- chmod -R a+r $(distdir)
- $(TAR) chozf $(distdir).tar.gz $(distdir)
- rm -rf $(distdir)
-distdir: $(DEP_DISTFILES)
- rm -rf $(distdir)
+ -chmod -R a+r $(distdir)
+ GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
+ -rm -rf $(distdir)
+dist-all: distdir
+ -chmod -R a+r $(distdir)
+ GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
+ -rm -rf $(distdir)
+distdir: $(DISTFILES)
+ -rm -rf $(distdir)
mkdir $(distdir)
- chmod 777 $(distdir)
- distdir=`cd $(distdir) && pwd` \
- && cd $(srcdir) \
- && automake --include-deps --output-dir=$$distdir --strictness=gnu
- @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+ -chmod 777 $(distdir)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
test -f $(distdir)/$$file \
- || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file; \
done
- for subdir in $(SUBDIRS); do \
- test -d $(distdir)/$$subdir \
- || mkdir $(distdir)/$$subdir \
- || exit 1; \
- chmod 777 $(distdir)/$$subdir; \
- (cd $$subdir && $(MAKE) distdir=../$(distdir)/$$subdir distdir) \
+ for subdir in $(SUBDIRS); do \
+ test -d $(distdir)/$$subdir \
+ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+ chmod 777 $(distdir)/$$subdir; \
+ (cd $$subdir && $(MAKE) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|| exit 1; \
done
- $(MAKE) dist-hook
+ $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
info: info-recursive
-
dvi: dvi-recursive
-
-check: check-recursive
-
+check: all-am
+ $(MAKE) check-recursive
installcheck: installcheck-recursive
-
-all-recursive-hack: $(CONFIG_HEADER)
+all-recursive-am: config.h
$(MAKE) all-recursive
all-am: Makefile config.h
install-exec: install-exec-recursive
+ @$(NORMAL_INSTALL)
install-data: install-data-recursive
+ @$(NORMAL_INSTALL)
install: install-recursive
@:
uninstall: uninstall-recursive
-all: all-recursive-hack all-am
+all: all-recursive-am all-am
install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+ $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs: installdirs-recursive
mostlyclean-generic:
- test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
- test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- rm -f Makefile $(DISTCLEANFILES)
- rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+ -rm -f Makefile $(DISTCLEANFILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
- test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-mostlyclean-am: mostlyclean-tags mostlyclean-generic
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic
-clean-am: clean-tags clean-generic mostlyclean-am
+clean-am: clean-hdr clean-tags clean-generic mostlyclean-am
-distclean-am: distclean-tags distclean-generic clean-am
+distclean-am: distclean-hdr distclean-tags distclean-generic clean-am
-maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
- distclean-am
+maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \
+ maintainer-clean-generic distclean-am
-mostlyclean: mostlyclean-am mostlyclean-recursive
+mostlyclean: mostlyclean-recursive mostlyclean-am
-clean: clean-am clean-recursive
+clean: clean-recursive clean-am
-distclean: distclean-am distclean-recursive
- rm -f config.status
+distclean: distclean-recursive distclean-am
+ -rm -f config.status
-maintainer-clean: maintainer-clean-am maintainer-clean-recursive
+maintainer-clean: maintainer-clean-recursive maintainer-clean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
- rm -f config.status
+ -rm -f config.status
-.PHONY: default install-data-recursive uninstall-data-recursive \
+.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \
+maintainer-clean-hdr install-data-recursive uninstall-data-recursive \
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
uninstalldirs-recursive all-recursive check-recursive \
installcheck-recursive info-recursive dvi-recursive \
mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
-distclean-tags clean-tags maintainer-clean-tags distdir info dvi check \
-installcheck all-recursive-hack all-am install-exec install-data \
-install uninstall all installdirs mostlyclean-generic distclean-generic \
+distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
+installcheck all-recursive-am all-am install-exec install-data install \
+uninstall all installdirs mostlyclean-generic distclean-generic \
clean-generic maintainer-clean-generic clean mostlyclean distclean \
maintainer-clean
@@ -266,7 +345,6 @@ dist-hook:
|| cp -p $(srcdir)/$$dir/$$i $(distdir)/$$dir/$$i; \
done ; \
done
-.SUFFIXES:
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/TODO b/TODO
index b1a7313c3..18f0314cb 100644
--- a/TODO
+++ b/TODO
@@ -12,14 +12,6 @@
* add signal handling
* enable a SIGSEGV handler while using zlib functions
- * PGP writes the signature and then the file, this is not
- a good idea, we can't write such files if we take input from stdin.
- So the solution will: accept such packet, but write
- signature the corret way: first the data and then the signature[s]
- this is much easier to check, also we must read the entire data
- before we can check wether we have the pubkey or not. The one-pass
- signature packets should be implemented to avoid this.
-
* complete cipher/cast.c
* complete cipher/dsa.c
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 000000000..0c30b7d68
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,356 @@
+dnl macros to configure g10
+
+AC_PREREQ(2.5)
+
+AC_DEFUN(md_TYPE_PTRDIFF_T,
+ [AC_CACHE_CHECK([for ptrdiff_t], ac_cv_type_ptrdiff_t,
+ [AC_TRY_COMPILE(stddef.h, [ptrdiff_t p], ac_cv_type_ptrdiff_t=yes,
+ ac_cv_type_ptrdiff_t=no)])
+ if test $ac_cv_type_ptrdiff_t = yes; then
+ AC_DEFINE(HAVE_PTRDIFF_T)
+ fi
+])
+
+AC_DEFUN(md_PATH_PROG,
+ [AC_PATH_PROG($1,$2,$3)dnl
+ if echo $$1 | grep openwin > /dev/null; then
+ echo "WARNING: Do not use OpenWin's $2. (Better remove it.) >&AC_FD_MSG"
+ ac_cv_path_$1=$2
+ $1=$2
+ fi
+])
+
+dnl Check NLS options
+
+AC_DEFUN(ud_LC_MESSAGES,
+ [if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], ud_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ ud_cv_val_LC_MESSAGES=yes, ud_cv_val_LC_MESSAGES=no)])
+ if test $ud_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES)
+ fi
+ fi])
+
+AC_DEFUN(ud_WITH_NLS,
+ [AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE(nls,
+ [ --disable-nls do not use Native Language Support],
+ nls_cv_use_nls=$enableval, nls_cv_use_nls=yes)
+ AC_MSG_RESULT($nls_cv_use_nls)
+
+ dnl If we use NLS figure out what method
+ if test "$nls_cv_use_nls" = "yes"; then
+ AC_DEFINE(ENABLE_NLS)
+ AC_MSG_CHECKING([for explicitly using GNU gettext])
+ AC_ARG_WITH(gnu-gettext,
+ [ --with-gnu-gettext use the GNU gettext library],
+ nls_cv_force_use_gnu_gettext=$withval,
+ nls_cv_force_use_gnu_gettext=no)
+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+ if test "$nls_cv_force_use_gnu_gettext" = "yes"; then
+ nls_cv_use_gnu_gettext=yes
+ else
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If gettext or catgets are available (in this order) we
+ dnl use this. Else we have to fall back to GNU NLS library.
+ AC_CHECK_LIB(intl, main)
+ AC_CHECK_LIB(i, main)
+ CATOBJEXT=NONE
+
+ dnl Debian 1.3.1 does not have libintl.h but libintl.a
+ AC_CHECK_HEADERS(libintl.h)
+ if test "$ac_cv_lib_intl_main" = yes \
+ && test "$ac_cv_header_libintl_h" != "yes" ; then
+ nls_cv_use_gnu_gettext=yes
+ else
+ AC_CHECK_FUNC(gettext,
+ [AC_DEFINE(HAVE_GETTEXT)
+ md_PATH_PROG(MSGFMT, msgfmt, no)dnl
+ if test "$MSGFMT" != "no"; then
+ AC_CHECK_FUNCS(dcgettext)
+ md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+ CATOBJEXT=.mo
+ INSTOBJEXT=.mo
+ DATADIRNAME=lib
+ if test "$ac_cv_lib_intl[_]main" = yes; then
+ INTLLIBS=-lintl
+ elif test "$ac_cv_lib_i[_]main" = yes; then
+ INTLLIBS=-li
+ fi
+ fi])
+
+ if test "$CATOBJEXT" = "NONE"; then
+ dnl No gettext in C library. Try catgets next.
+ AC_CHECK_FUNC(catgets,
+ [AC_DEFINE(HAVE_CATGETS)
+ INTLOBJS="\$(CATOBJS)"
+ AC_PATH_PROG(GENCAT, gencat, no)dnl
+ if test "$GENCAT" != "no"; then
+ AC_PATH_PROGS(GMSGFMT, [gmsgfmt msgfmt], msgfmt)
+ md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+ CATOBJEXT=.cat
+ INSTOBJEXT=.cat
+ DATADIRNAME=lib
+ INTLDEPS="\${top_srcdir}/intl/libintl.a"
+ INTLLIBS=$INTLDEPS
+ LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+ nls_cv_header_intl=intl/libintl.h
+ nls_cv_header_libgt=intl/libgettext.h
+ fi])
+ fi
+ fi
+
+ if test "$CATOBJEXT" = "NONE"; then
+ dnl Neither gettext nor catgets in included in the C library.
+ dnl Fall back on GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
+ fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions used to generate GNU NLS library.
+ INTLOBJS="\$(GETTOBJS)"
+ md_PATH_PROG(MSGFMT, msgfmt, msgfmt)
+ md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+ AC_SUBST(MSGFMT)
+ CATOBJEXT=.gmo
+ INSTOBJEXT=.mo
+ DATADIRNAME=share
+ INTLDEPS="\${top_srcdir}/intl/libintl.a"
+ INTLLIBS=$INTLDEPS
+ LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+ nls_cv_header_intl=intl/libintl.h
+ nls_cv_header_libgt=intl/libgettext.h
+ fi
+
+ # We need to process the intl/ and po/ directory.
+ INTLSUB=intl
+ POSUB=po
+ else
+ DATADIRNAME=share
+ nls_cv_header_intl=intl/libintl.h
+ nls_cv_header_libgt=intl/libgettext.h
+ fi
+
+ dnl These rules are solely for the distribution goal. While doing this
+ dnl we only have to keep exactly one list of the available catalogs
+ dnl in configure.in.
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(CATALOGS)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(DATADIRNAME)
+ AC_SUBST(GMOFILES)
+ AC_SUBST(INSTOBJEXT)
+ AC_SUBST(INTLDEPS)
+ AC_SUBST(INTLLIBS)
+ AC_SUBST(INTLOBJS)
+ AC_SUBST(INTLSUB)
+ AC_SUBST(POFILES)
+ AC_SUBST(POSUB)
+ ])
+
+AC_DEFUN(AM_GNU_GETTEXT,
+ [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_PROG_RANLIB])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ AC_REQUIRE([AC_C_CONST])dnl
+ AC_REQUIRE([AC_C_INLINE])dnl
+ AC_REQUIRE([AC_TYPE_OFF_T])dnl
+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+ AC_REQUIRE([AC_FUNC_MMAP])dnl
+
+ AC_CHECK_HEADERS([limits.h locale.h nl_types.h malloc.h string.h unistd.h values.h])
+ AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp])
+
+ if test "${ac_cv_func_stpcpy+set}" != "set"; then
+ AC_CHECK_FUNCS(stpcpy)
+ fi
+ if test "${ac_cv_func_stpcpy}" = "yes"; then
+ AC_DEFINE(HAVE_STPCPY)
+ fi
+
+ ud_LC_MESSAGES
+ ud_WITH_NLS
+
+ if test "x$CATOBJEXT" != "x"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+ *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
+ esac
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ dnl Determine which catalog format we have (if any is needed)
+ dnl For now we know about two different formats:
+ dnl Linux and the normal X/Open format
+ test -d intl || mkdir intl
+ if test "$CATOBJEXT" = ".cat"; then
+ AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
+
+ dnl Transform the SED scripts while copying because some dumb SEDs
+ dnl cannot handle comments.
+ sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
+ fi
+ dnl po2tbl.sed is always needed.
+ sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
+ $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
+
+ dnl Generate list of files to be processed by xgettext which will
+ dnl be included in po/Makefile.
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+ ])
+
+
+
+dnl --------------------------------------------------
+dnl G10 stuff
+dnl --------------------------------------------------
+
+
+dnl WK_MSG_PRINT(STRING)
+dnl print a message
+dnl
+define(WK_MSG_PRINT,
+ [ echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG
+ ])
+
+
+dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
+dnl Check wether a typedef exists and create a #define $2 if it exists
+dnl
+AC_DEFUN(WK_CHECK_TYPEDEF,
+ [ AC_MSG_CHECKING(for $1 typedef)
+ AC_CACHE_VAL(wk_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
+ AC_DEFINE($2)
+ fi
+ ])
+
+
+
+dnl WK_LINK_FILES( SRC, DEST )
+dnl same as AC_LINK_FILES, but collet the files to link in
+dnl some special variables and do the link macro
+dnl when WK_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,
+ [ 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(WK_DO_LINK_FILES,
+ [ AC_LINK_FILES( $wk_link_files_src, $wk_link_files_dst )
+ ])
+
+
+dnl WK_CHECK_ENDIAN
+dnl define either LITTLE_ENDIAN_HOST or BIG_ENDIAN_HOST
+dnl
+define(WK_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
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ AC_TRY_COMPILE([#include <sys/types.h>
+ #include <sys/param.h>], [
+ #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+ #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
+ AC_TRY_COMPILE([#include <sys/types.h>
+ #include <sys/param.h>], [
+ #if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif], wk_cv_c_endian=big, wk_cv_c_endian=big)])
+ if test "$wk_cv_c_endian" = unknown; then
+ AC_TRY_RUN([main () {
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long l;
+ char c[sizeof (long)];
+ } u;
+ 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
+ )
+ fi
+ ])
+ AC_MSG_RESULT([$wk_cv_c_endian])
+ if test "$wk_cv_c_endian" = little; then
+ AC_DEFINE(LITTLE_ENDIAN_HOST)
+ else
+ AC_DEFINE(BIG_ENDIAN_HOST)
+ fi
+ ])
+
+dnl WK_CHECK_CACHE
+dnl
+define(WK_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
+ AC_MSG_RESULT(changed)
+ AC_MSG_WARN(config.cache exists!)
+ AC_MSG_ERROR(you must do 'make distclean' first to compile for
+ different target or different parameters.)
+ else
+ AC_MSG_RESULT(ok)
+ fi
+ ])
+
+
diff --git a/cipher/Makefile.am b/cipher/Makefile.am
index ecd91a731..ad6722876 100644
--- a/cipher/Makefile.am
+++ b/cipher/Makefile.am
@@ -1,12 +1,12 @@
## Process this file with automake to produce Makefile.in
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I$(top_srcdir)/include
EXTRA_DIST = @CIPHER_EXTRA_DIST@
-noinst_LIBRARIES = cipher
+noinst_LIBRARIES = libcipher.a
-cipher_SOURCES = blowfish.c \
+libcipher_a_SOURCES = blowfish.c \
blowfish.h \
elgamal.c \
elgamal.h \
@@ -27,6 +27,8 @@ cipher_SOURCES = blowfish.c \
misc.c \
smallprime.c
-cipher_LIBADD = @CIPHER_EXTRA_OBJS@
+libcipher_a_LIBADD = @CIPHER_EXTRA_OBJS@
+
+$(LIBRARIES): @CIPHER_EXTRA_OBJS@
diff --git a/cipher/Makefile.in b/cipher/Makefile.in
index 221efdd25..a1cfa5acd 100644
--- a/cipher/Makefile.in
+++ b/cipher/Makefile.in
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
SHELL = /bin/sh
@@ -32,18 +38,59 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES = -I$(top_srcdir)/include
EXTRA_DIST = @CIPHER_EXTRA_DIST@
-noinst_LIBRARIES = cipher
+noinst_LIBRARIES = libcipher.a
-cipher_SOURCES = blowfish.c \
+libcipher_a_SOURCES = blowfish.c \
blowfish.h \
elgamal.c \
elgamal.h \
@@ -64,190 +111,196 @@ cipher_SOURCES = blowfish.c \
misc.c \
smallprime.c
-cipher_LIBADD = @CIPHER_EXTRA_OBJS@
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
+libcipher_a_LIBADD = @CIPHER_EXTRA_OBJS@
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
CONFIG_HEADER = ../config.h
-LIBRARIES = $(noinst_LIBRARIES)
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
-noinst_LIBFILES = libcipher.a
-
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-cipher_OBJECTS = blowfish.o elgamal.o gost.o md5.o primegen.o random.o \
-rmd160.o sha1.o dsa.o md.o misc.o smallprime.o
-EXTRA_cipher_SOURCES =
-LIBFILES = libcipher.a
+libcipher_a_DEPENDENCIES =
+libcipher_a_OBJECTS = blowfish.o elgamal.o gost.o md5.o primegen.o \
+random.o rmd160.o sha1.o dsa.o md.o misc.o smallprime.o
AR = ar
-RANLIB = @RANLIB@
-DIST_COMMON = Makefile.am Makefile.in
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON = Makefile.am Makefile.in
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
-DEP_FILES = $(srcdir)/.deps/blowfish.P $(srcdir)/.deps/dsa.P \
-$(srcdir)/.deps/elgamal.P $(srcdir)/.deps/gost.P $(srcdir)/.deps/md.P \
-$(srcdir)/.deps/md5.P $(srcdir)/.deps/misc.P $(srcdir)/.deps/primegen.P \
-$(srcdir)/.deps/random.P $(srcdir)/.deps/rmd160.P \
-$(srcdir)/.deps/sha1.P $(srcdir)/.deps/smallprime.P
-SOURCES = $(cipher_SOURCES)
-OBJECTS = $(cipher_OBJECTS)
+GZIP = --best
+DEP_FILES = .deps/blowfish.P .deps/dsa.P .deps/elgamal.P .deps/gost.P \
+.deps/md.P .deps/md5.P .deps/misc.P .deps/primegen.P .deps/random.P \
+.deps/rmd160.P .deps/sha1.P .deps/smallprime.P
+SOURCES = $(libcipher_a_SOURCES)
+OBJECTS = $(libcipher_a_OBJECTS)
default: all
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu cipher/Makefile
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
- cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-Makefile: $(top_builddir)/config.status Makefile.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
mostlyclean-noinstLIBRARIES:
clean-noinstLIBRARIES:
- rm -f $(noinst_LIBFILES)
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
distclean-noinstLIBRARIES:
maintainer-clean-noinstLIBRARIES:
.c.o:
- $(COMPILE) $<
+ $(COMPILE) -c $<
+
+.s.o:
+ $(COMPILE) -c $<
+
+.S.o:
+ $(COMPILE) -c $<
mostlyclean-compile:
- rm -f *.o core
+ -rm -f *.o core
clean-compile:
distclean-compile:
- rm -f *.tab.c
+ -rm -f *.tab.c
maintainer-clean-compile:
-$(cipher_OBJECTS): ../config.h
-libcipher.a: $(cipher_OBJECTS) $(cipher_LIBADD)
- rm -f libcipher.a
- $(AR) cru libcipher.a $(cipher_OBJECTS) $(cipher_LIBADD)
+libcipher.a: $(libcipher_a_OBJECTS) $(libcipher_a_DEPENDENCIES)
+ -rm -f libcipher.a
+ $(AR) cru libcipher.a $(libcipher_a_OBJECTS) $(libcipher_a_LIBADD)
$(RANLIB) libcipher.a
-ID: $(HEADERS) $(SOURCES)
- here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
-
tags: TAGS
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
- here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+ here=`pwd` && cd $(srcdir) \
+ && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
- rm -f TAGS ID
+ -rm -f TAGS ID
maintainer-clean-tags:
-subdir = cipher
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
- @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = cipher
+
+distdir: $(DISTFILES)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(top_distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu cipher/Makefile
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
test -f $(distdir)/$$file \
- || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file; \
done
-# This fragment is probably only useful for maintainers. It relies on
-# GNU make and gcc. It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
-
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
- cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
echo > $@
-include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
- @echo "mkdeps $< > $@"
- @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
- $(MKDEP) $< | sed "$$re" > $@-tmp
- @if test -n "$o"; then \
- sed 's/\.o:/$$o:/' $@-tmp > $@; \
- rm $@-tmp; \
- else \
- mv $@-tmp $@; \
- fi
-
-# End of maintainer-only section
-info:
-dvi:
+mostlyclean-depend:
-check: all
+clean-depend:
-installcheck:
+distclean-depend:
+
+maintainer-clean-depend:
+ -rm -rf .deps
+.deps/%.P: %.c
+ @echo "Computing dependencies for $<..."
+ @o='o'; \
+ test -n "$o" && o='$$o'; \
+ $(MKDEP) $< >[email protected] \
+ && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < [email protected] > $@ \
+info:
+dvi:
+check: all
+ $(MAKE)
+installcheck:
install-exec:
+ @$(NORMAL_INSTALL)
install-data:
+ @$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall:
-all: $(LIBFILES) Makefile
+all: Makefile $(LIBRARIES)
install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+ $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
mostlyclean-generic:
- test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
- test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- rm -f Makefile $(DISTCLEANFILES)
- rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+ -rm -f Makefile $(DISTCLEANFILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
- test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \
- mostlyclean-tags mostlyclean-generic
+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-clean: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
- mostlyclean
+clean: clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
+ clean-generic mostlyclean
distclean: distclean-noinstLIBRARIES distclean-compile distclean-tags \
- distclean-generic clean
- rm -f config.status
+ distclean-depend distclean-generic clean
+ -rm -f config.status
maintainer-clean: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-tags \
- maintainer-clean-generic distclean
+ maintainer-clean-depend maintainer-clean-generic \
+ distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -255,13 +308,14 @@ maintainer-clean: maintainer-clean-noinstLIBRARIES \
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-.SUFFIXES:
-.SUFFIXES: .c .o
+
+$(LIBRARIES): @CIPHER_EXTRA_OBJS@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/config.h.in b/config.h.in
index cdb8e2de0..723e53f52 100644
--- a/config.h.in
+++ b/config.h.in
@@ -23,49 +23,21 @@
-/* Define if using alloca.c. */
-#undef C_ALLOCA
-
/* Define to empty if the keyword does not work. */
#undef const
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
- This function is required for alloca.c support on those systems. */
-#undef CRAY_STACKSEG_END
-
-/* Define if you have alloca, as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
-#undef HAVE_ALLOCA_H
-
/* Define if you don't have vprintf but do have _doprnt. */
#undef HAVE_DOPRNT
-/* Define if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
/* Define if you have the vprintf function. */
#undef HAVE_VPRINTF
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
-/* Define to `long' if <sys/types.h> doesn't define. */
-#undef off_t
-
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-#undef STACK_DIRECTION
-
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
@@ -74,20 +46,6 @@
#undef PACKAGE
#undef G10_LOCALEDIR
-/* Define if your locale.h file contains LC_MESSAGES. */
-#undef HAVE_LC_MESSAGES
-
-/* Define to 1 if NLS is requested. */
-#undef ENABLE_NLS
-
-/* Define as 1 if you have catgets and don't want to use GNU gettext. */
-#undef HAVE_CATGETS
-
-/* Define as 1 if you have gettext and don't want to use GNU gettext. */
-#undef HAVE_GETTEXT
-
-#undef HAVE_STPCPY
-
#undef BIG_ENDIAN_HOST
#undef LITTLE_ENDIAN_HOST
@@ -115,45 +73,18 @@
/* The number of bytes in a unsigned short. */
#undef SIZEOF_UNSIGNED_SHORT
-/* Define if you have the dcgettext function. */
-#undef HAVE_DCGETTEXT
-
-/* Define if you have the getcwd function. */
-#undef HAVE_GETCWD
-
-/* Define if you have the getpagesize function. */
-#undef HAVE_GETPAGESIZE
-
/* Define if you have the mlock function. */
#undef HAVE_MLOCK
/* Define if you have the mmap function. */
#undef HAVE_MMAP
-/* Define if you have the munmap function. */
-#undef HAVE_MUNMAP
-
-/* Define if you have the putenv function. */
-#undef HAVE_PUTENV
-
/* Define if you have the rand function. */
#undef HAVE_RAND
-/* Define if you have the setenv function. */
-#undef HAVE_SETENV
-
-/* Define if you have the setlocale function. */
-#undef HAVE_SETLOCALE
-
/* Define if you have the stpcpy function. */
#undef HAVE_STPCPY
-/* Define if you have the strcasecmp function. */
-#undef HAVE_STRCASECMP
-
-/* Define if you have the strchr function. */
-#undef HAVE_STRCHR
-
/* Define if you have the strerror function. */
#undef HAVE_STRERROR
@@ -166,36 +97,12 @@
/* Define if you have the tcgetattr function. */
#undef HAVE_TCGETATTR
-/* Define if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define if you have the <nl_types.h> header file. */
-#undef HAVE_NL_TYPES_H
-
-/* Define if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define if you have the <values.h> header file. */
-#undef HAVE_VALUES_H
-
/* Define if you have the <zlib.h> header file. */
#undef HAVE_ZLIB_H
-/* Define if you have the i library (-li). */
-#undef HAVE_LIBI
-
-/* Define if you have the intl library (-lintl). */
-#undef HAVE_LIBINTL
-
/* The AC_CHECK_SIZEOF() fails for some machines.
* we provide some fallback values here */
diff --git a/configure.in b/configure.in
index 7017948de..e83e10d5d 100644
--- a/configure.in
+++ b/configure.in
@@ -5,7 +5,10 @@ dnl (Process this file with autoconf to produce a configure script.)
AC_INIT(g10/g10.c)
AC_CONFIG_AUX_DIR(scripts)
-AC_CONFIG_HEADER(config.h)
+dnl Ooops: automake 1.2d looks for AC_CONFIG_HEADER (and not AM_..)
+dnl to decide where config.h is - so we have to add it to
+dnl every makefile.am
+AM_CONFIG_HEADER(config.h)
if test "x$exec_prefix" = xNONE ; then
@@ -45,6 +48,14 @@ WK_CHECK_CACHE
dnl Checks for programs.
AC_PROG_MAKE_SET
+AC_ARG_PROGRAM
+
+missing_dir=`cd $ac_aux_dir && pwd`
+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
+AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
+dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
case "${target}" in
i386--mingw32)
@@ -64,16 +75,15 @@ AC_PROG_CPP
esac
-AC_ARG_PROGRAM
-
dnl Checks for libraries.
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(unistd.h)
-ud_GNU_GETTEXT
-WK_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl )
+dnl AM_GNU_GETTEXT
+dnl WK_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl )
+AC_MSG_WARN([i18n disabled for this release - sorry])
dnl Checks for typedefs, structures, and compiler characteristics.
diff --git a/g10/Makefile.am b/g10/Makefile.am
index e83e63ad2..b0a2e9293 100644
--- a/g10/Makefile.am
+++ b/g10/Makefile.am
@@ -1,15 +1,14 @@
## Process this file with automake to produce Makefile.in
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I.. -I$(top_srcdir)/include
EXTRA_DIST = OPTIONS
+needed_libs = ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
-bin_PROGRAMS = g10
+bin_PROGRAMS = g10 g10maint
-g10_SOURCES = g10.c \
+common_source = \
build-packet.c \
compress.c \
- encode.c \
- encr-data.c \
filter.h \
free-packet.c \
getkey.c \
@@ -18,7 +17,6 @@ g10_SOURCES = g10.c \
skclist.c \
ringedit.c \
kbnode.c \
- keygen.c \
main.h \
mainproc.c \
armor.c \
@@ -35,22 +33,29 @@ g10_SOURCES = g10.c \
packet.h \
parse-packet.c \
passphrase.c \
- plaintext.c \
pubkey-enc.c \
seckey-cert.c \
seskey.c \
- sign.c \
import.c \
export.c \
comment.c \
status.c \
status.h \
+ sign.c \
+ plaintext.c \
+ encr-data.c \
+ encode.c \
sig-check.c
+g10_SOURCES = g10.c \
+ $(common_source) \
+ keygen.c
+
-LDADD = -L ../cipher -L ../mpi -L ../util \
- -lcipher -lmpi -lutil
+g10maint_SOURCES = g10maint.c \
+ $(common_source)
+LDADD = $(needed_libs)
-$(PROGRAMS): ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
+$(PROGRAMS): $(needed_libs)
diff --git a/g10/Makefile.in b/g10/Makefile.in
index d8b06727a..68c10cba3 100644
--- a/g10/Makefile.in
+++ b/g10/Makefile.in
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
SHELL = /bin/sh
@@ -32,22 +38,62 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES = -I.. -I$(top_srcdir)/include
EXTRA_DIST = OPTIONS
+needed_libs = ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
-bin_PROGRAMS = g10
+bin_PROGRAMS = g10 g10maint
-g10_SOURCES = g10.c \
+common_source = \
build-packet.c \
compress.c \
- encode.c \
- encr-data.c \
filter.h \
free-packet.c \
getkey.c \
@@ -56,7 +102,6 @@ g10_SOURCES = g10.c \
skclist.c \
ringedit.c \
kbnode.c \
- keygen.c \
main.h \
mainproc.c \
armor.c \
@@ -73,228 +118,259 @@ g10_SOURCES = g10.c \
packet.h \
parse-packet.c \
passphrase.c \
- plaintext.c \
pubkey-enc.c \
seckey-cert.c \
seskey.c \
- sign.c \
import.c \
export.c \
comment.c \
status.c \
status.h \
+ sign.c \
+ plaintext.c \
+ encr-data.c \
+ encode.c \
sig-check.c
-LDADD = -L ../cipher -L ../mpi -L ../util \
- -lcipher -lmpi -lutil
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ../config.h
-PROGRAMS = $(bin_PROGRAMS)
+g10_SOURCES = g10.c \
+ $(common_source) \
+ keygen.c
+g10maint_SOURCES = g10maint.c \
+ $(common_source)
+
+LDADD = $(needed_libs)
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = ../config.h
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(bin_PROGRAMS)
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-g10_OBJECTS = g10.o build-packet.o compress.o encode.o encr-data.o \
-free-packet.o getkey.o pkclist.o skclist.o ringedit.o kbnode.o keygen.o \
-mainproc.o armor.o mdfilter.o textfilter.o cipher.o elg.o rsa.o \
-openfile.o keyid.o trustdb.o parse-packet.o passphrase.o plaintext.o \
-pubkey-enc.o seckey-cert.o seskey.o sign.o import.o export.o comment.o \
-status.o sig-check.o
-EXTRA_g10_SOURCES =
+g10_OBJECTS = g10.o build-packet.o compress.o free-packet.o getkey.o \
+pkclist.o skclist.o ringedit.o kbnode.o mainproc.o armor.o mdfilter.o \
+textfilter.o cipher.o elg.o rsa.o openfile.o keyid.o trustdb.o \
+parse-packet.o passphrase.o pubkey-enc.o seckey-cert.o seskey.o \
+import.o export.o comment.o status.o sign.o plaintext.o encr-data.o \
+encode.o sig-check.o keygen.o
g10_LDADD = $(LDADD)
-DIST_COMMON = Makefile.am Makefile.in
+g10_DEPENDENCIES = ../cipher/libcipher.a ../mpi/libmpi.a \
+../util/libutil.a
+g10_LDFLAGS =
+g10maint_OBJECTS = g10maint.o build-packet.o compress.o free-packet.o \
+getkey.o pkclist.o skclist.o ringedit.o kbnode.o mainproc.o armor.o \
+mdfilter.o textfilter.o cipher.o elg.o rsa.o openfile.o keyid.o \
+trustdb.o parse-packet.o passphrase.o pubkey-enc.o seckey-cert.o \
+seskey.o import.o export.o comment.o status.o sign.o plaintext.o \
+encr-data.o encode.o sig-check.o
+g10maint_LDADD = $(LDADD)
+g10maint_DEPENDENCIES = ../cipher/libcipher.a ../mpi/libmpi.a \
+../util/libutil.a
+g10maint_LDFLAGS =
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON = Makefile.am Makefile.in
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
-DEP_FILES = $(srcdir)/.deps/armor.P $(srcdir)/.deps/build-packet.P \
-$(srcdir)/.deps/cipher.P $(srcdir)/.deps/comment.P \
-$(srcdir)/.deps/compress.P $(srcdir)/.deps/elg.P \
-$(srcdir)/.deps/encode.P $(srcdir)/.deps/encr-data.P \
-$(srcdir)/.deps/export.P $(srcdir)/.deps/free-packet.P \
-$(srcdir)/.deps/g10.P $(srcdir)/.deps/getkey.P $(srcdir)/.deps/import.P \
-$(srcdir)/.deps/kbnode.P $(srcdir)/.deps/keygen.P \
-$(srcdir)/.deps/keyid.P $(srcdir)/.deps/mainproc.P \
-$(srcdir)/.deps/mdfilter.P $(srcdir)/.deps/openfile.P \
-$(srcdir)/.deps/parse-packet.P $(srcdir)/.deps/passphrase.P \
-$(srcdir)/.deps/pkclist.P $(srcdir)/.deps/plaintext.P \
-$(srcdir)/.deps/pubkey-enc.P $(srcdir)/.deps/ringedit.P \
-$(srcdir)/.deps/rsa.P $(srcdir)/.deps/seckey-cert.P \
-$(srcdir)/.deps/seskey.P $(srcdir)/.deps/sig-check.P \
-$(srcdir)/.deps/sign.P $(srcdir)/.deps/skclist.P \
-$(srcdir)/.deps/status.P $(srcdir)/.deps/textfilter.P \
-$(srcdir)/.deps/trustdb.P
-SOURCES = $(g10_SOURCES)
-OBJECTS = $(g10_OBJECTS)
+GZIP = --best
+DEP_FILES = .deps/armor.P .deps/build-packet.P .deps/cipher.P \
+.deps/comment.P .deps/compress.P .deps/elg.P .deps/encode.P \
+.deps/encr-data.P .deps/export.P .deps/free-packet.P .deps/g10.P \
+.deps/g10maint.P .deps/getkey.P .deps/import.P .deps/kbnode.P \
+.deps/keygen.P .deps/keyid.P .deps/mainproc.P .deps/mdfilter.P \
+.deps/openfile.P .deps/parse-packet.P .deps/passphrase.P \
+.deps/pkclist.P .deps/plaintext.P .deps/pubkey-enc.P .deps/ringedit.P \
+.deps/rsa.P .deps/seckey-cert.P .deps/seskey.P .deps/sig-check.P \
+.deps/sign.P .deps/skclist.P .deps/status.P .deps/textfilter.P \
+.deps/trustdb.P
+SOURCES = $(g10_SOURCES) $(g10maint_SOURCES)
+OBJECTS = $(g10_OBJECTS) $(g10maint_OBJECTS)
default: all
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu g10/Makefile
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
- cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-Makefile: $(top_builddir)/config.status Makefile.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
mostlyclean-binPROGRAMS:
clean-binPROGRAMS:
- rm -f $(bin_PROGRAMS)
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
distclean-binPROGRAMS:
maintainer-clean-binPROGRAMS:
install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
$(mkinstalldirs) $(bindir)
- list="$(bin_PROGRAMS)"; for p in $$list; do \
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
+ echo " $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`"; \
+ $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
else :; fi; \
done
uninstall-binPROGRAMS:
- list="$(bin_PROGRAMS)"; for p in $$list; do \
+ $(NORMAL_UNINSTALL)
+ list='$(bin_PROGRAMS)'; for p in $$list; do \
rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \
done
.c.o:
- $(COMPILE) $<
+ $(COMPILE) -c $<
+
+.s.o:
+ $(COMPILE) -c $<
+
+.S.o:
+ $(COMPILE) -c $<
mostlyclean-compile:
- rm -f *.o core
+ -rm -f *.o core
clean-compile:
distclean-compile:
- rm -f *.tab.c
+ -rm -f *.tab.c
maintainer-clean-compile:
-$(g10_OBJECTS): ../config.h
g10: $(g10_OBJECTS) $(g10_DEPENDENCIES)
- $(LINK) $(g10_OBJECTS) $(g10_LDADD) $(LIBS)
+ @rm -f g10
+ $(LINK) $(g10_LDFLAGS) $(g10_OBJECTS) $(g10_LDADD) $(LIBS)
-ID: $(HEADERS) $(SOURCES)
- here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
+g10maint: $(g10maint_OBJECTS) $(g10maint_DEPENDENCIES)
+ @rm -f g10maint
+ $(LINK) $(g10maint_LDFLAGS) $(g10maint_OBJECTS) $(g10maint_LDADD) $(LIBS)
tags: TAGS
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
- here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+ here=`pwd` && cd $(srcdir) \
+ && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
- rm -f TAGS ID
+ -rm -f TAGS ID
maintainer-clean-tags:
-subdir = g10
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
- @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = g10
+
+distdir: $(DISTFILES)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(top_distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu g10/Makefile
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
test -f $(distdir)/$$file \
- || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file; \
done
-# This fragment is probably only useful for maintainers. It relies on
-# GNU make and gcc. It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
-
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
- cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
echo > $@
-include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
- @echo "mkdeps $< > $@"
- @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
- $(MKDEP) $< | sed "$$re" > $@-tmp
- @if test -n "$o"; then \
- sed 's/\.o:/$$o:/' $@-tmp > $@; \
- rm $@-tmp; \
- else \
- mv $@-tmp $@; \
- fi
-
-# End of maintainer-only section
-info:
-dvi:
+mostlyclean-depend:
-check: all
+clean-depend:
-installcheck:
+distclean-depend:
+
+maintainer-clean-depend:
+ -rm -rf .deps
+.deps/%.P: %.c
+ @echo "Computing dependencies for $<..."
+ @o='o'; \
+ test -n "$o" && o='$$o'; \
+ $(MKDEP) $< >[email protected] \
+ && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < [email protected] > $@ \
+info:
+dvi:
+check: all
+ $(MAKE)
+installcheck:
install-exec: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
install-data:
+ @$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall: uninstall-binPROGRAMS
-all: $(PROGRAMS) Makefile
+all: Makefile $(PROGRAMS)
install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+ $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
$(mkinstalldirs) $(bindir)
mostlyclean-generic:
- test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
- test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- rm -f Makefile $(DISTCLEANFILES)
- rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+ -rm -f Makefile $(DISTCLEANFILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
- test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-binPROGRAMS mostlyclean-compile \
- mostlyclean-tags mostlyclean-generic
+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-clean: clean-binPROGRAMS clean-compile clean-tags clean-generic \
- mostlyclean
+clean: clean-binPROGRAMS clean-compile clean-tags clean-depend \
+ clean-generic mostlyclean
distclean: distclean-binPROGRAMS distclean-compile distclean-tags \
- distclean-generic clean
- rm -f config.status
+ distclean-depend distclean-generic clean
+ -rm -f config.status
maintainer-clean: maintainer-clean-binPROGRAMS maintainer-clean-compile \
- maintainer-clean-tags maintainer-clean-generic \
- distclean
+ maintainer-clean-tags maintainer-clean-depend \
+ maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -302,15 +378,14 @@ maintainer-clean: maintainer-clean-binPROGRAMS maintainer-clean-compile \
clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-$(PROGRAMS): ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
-.SUFFIXES:
-.SUFFIXES: .c .o
+$(PROGRAMS): $(needed_libs)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/g10/g10.c b/g10/g10.c
index 9b593e027..16ec5c277 100644
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -42,18 +42,15 @@
enum cmd_values { aNull = 0,
- aSym, aStore, aEncr, aPrimegen, aKeygen, aSign, aSignEncr,
- aPrintMDs, aSignKey, aClearsig, aListPackets, aEditSig,
- aKMode, aKModeC, aChangePass, aImport, aListTrustDB,
- aListTrustPath, aExport,
+ aSym, aStore, aEncr, aKeygen, aSign, aSignEncr,
+ aSignKey, aClearsig, aListPackets, aEditSig,
+ aKMode, aKModeC, aChangePass, aImport,
+ aExport,
aTest };
static void set_cmd( enum cmd_values *ret_cmd,
enum cmd_values new_cmd );
-static void print_hex( byte *p, size_t n );
-static void print_mds( const char *fname );
-static void do_test(int);
const char *
strusage( int level )
@@ -104,7 +101,7 @@ strusage( int level )
static void
i18n_init(void)
{
- #ifdef HAVE_LIBINTL
+ #ifdef ENABLE_NLS
setlocale( LC_MESSAGES, "" );
bindtextdomain( PACKAGE, G10_LOCALEDIR );
textdomain( PACKAGE );
@@ -189,10 +186,7 @@ main( int argc, char **argv )
{ 510, "debug" ,4|16, N_("set debugging flags")},
{ 511, "debug-all" ,0, N_("enable full debugging")},
{ 512, "status-fd" ,1, N_("write status info to this fd") },
- { 513, "gen-prime" , 0, "\r" },
- { 514, "test" , 0, "\r" },
{ 515, "fingerprint", 0, N_("show the fingerprints")},
- { 516, "print-mds" , 0, N_("print all message digests")},
{ 517, "secret-keyring" ,2, N_("add this secret keyring to the list")},
{ 518, "options" , 2, N_("read options from file")},
{ 519, "no-armor", 0, "\r"},
@@ -207,13 +201,12 @@ main( int argc, char **argv )
{ 528, "pubkey-algo", 2 , N_("select default puplic key algorithm")},
{ 529, "digest-algo", 2 , N_("select default message digest algorithm")},
{ 530, "import", 0 , N_("put public keys into the trustdb")},
- { 531, "list-trustdb",0 , "\r"},
{ 532, "quick-random", 0, "\r"},
- { 533, "list-trust-path",0, "\r"},
{ 534, "no-comment", 0, N_("do not write comment packets")},
{ 535, "completes-needed", 1, N_("(default is 1)")},
{ 536, "marginals-needed", 1, N_("(default is 3)")},
{ 537, "export", 0, N_("export all or the given keys") },
+ { 538, "trustdb-name", 2, "\r" },
{0} };
ARGPARSE_ARGS pargs;
@@ -236,6 +229,7 @@ main( int argc, char **argv )
int default_keyring = 1;
int greeting = 1;
enum cmd_values cmd = 0;
+ const char *trustdb_name = NULL;
secmem_init( 16384 );
@@ -331,10 +325,7 @@ main( int argc, char **argv )
case 510: opt.debug |= pargs.r.ret_ulong; break;
case 511: opt.debug = ~0; break;
case 512: set_status_fd( pargs.r.ret_int ); break;
- case 513: set_cmd( &cmd, aPrimegen); break;
- case 514: set_cmd( &cmd, aTest); break;
case 515: opt.fingerprint = 1; break;
- case 516: set_cmd( &cmd, aPrintMDs); break;
case 517: add_secret_keyring(pargs.r.ret_str); sec_nrings++; break;
case 518:
/* config files may not be nested (silently ignore them) */
@@ -362,13 +353,12 @@ main( int argc, char **argv )
opt.def_digest_algo = string_to_digest_algo(pargs.r.ret_str);
break;
case 530: set_cmd( &cmd, aImport); break;
- case 531: set_cmd( &cmd, aListTrustDB); break;
case 532: quick_random_gen(1); break;
- case 533: set_cmd( &cmd, aListTrustPath); break;
case 534: opt.no_comment=1; break;
case 535: opt.completes_needed = pargs.r.ret_int; break;
case 536: opt.marginals_needed = pargs.r.ret_int; break;
case 537: set_cmd( &cmd, aExport); break;
+ case 538: trustdb_name = pargs.r.ret_str; break;
default : errors++; pargs.err = configfp? 1:2; break;
}
}
@@ -453,13 +443,7 @@ main( int argc, char **argv )
}
}
- switch( cmd ) {
- case aPrimegen:
- case aPrintMDs:
- break;
- case aListTrustDB: rc = init_trustdb( argc? 1:0 ); break;
- default: rc = init_trustdb(1); break;
- }
+ rc = init_trustdb(1, trustdb_name );
if( rc )
log_error(_("failed to initialize the TrustDB: %s\n"), g10_errstr(rc));
@@ -578,46 +562,12 @@ main( int argc, char **argv )
usage(1);
break;
- case aPrimegen:
- if( argc == 1 ) {
- mpi_print( stdout, generate_public_prime( atoi(argv[0]) ), 1);
- putchar('\n');
- }
- else if( argc == 2 ) {
- mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
- atoi(argv[1]), NULL ), 1);
- putchar('\n');
- }
- else if( argc == 3 ) {
- MPI g = mpi_alloc(1);
- mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
- atoi(argv[1]), g ), 1);
- printf("\nGenerator: ");
- mpi_print( stdout, g, 1 );
- putchar('\n');
- mpi_free(g);
- }
- else
- usage(1);
- break;
-
- case aPrintMDs:
- if( !argc )
- print_mds(NULL);
- else {
- for(; argc; argc--, argv++ )
- print_mds(*argv);
- }
- break;
-
case aKeygen: /* generate a key (interactive) */
if( argc )
usage(1);
generate_keypair();
break;
- case aTest: do_test( argc? atoi(*argv): 0 ); break;
-
case aImport:
if( !argc )
usage(1);
@@ -637,22 +587,6 @@ main( int argc, char **argv )
free_strlist(sl);
break;
-
- case aListTrustDB:
- if( !argc )
- list_trustdb(NULL);
- else {
- for( ; argc; argc--, argv++ )
- list_trustdb( *argv );
- }
- break;
-
- case aListTrustPath:
- if( argc != 2 )
- wrong_args("--list-trust-path [-- -]<maxdepth> <username>");
- list_trust_path( atoi(*argv), argv[1] );
- break;
-
case aListPackets:
opt.list_packets=1;
default:
@@ -693,95 +627,3 @@ g10_exit( int rc )
}
-static void
-print_hex( byte *p, size_t n )
-{
- int i;
-
- if( n == 20 ) {
- for(i=0; i < n ; i++, i++, p += 2 ) {
- if( i == 10 )
- putchar(' ');
- printf(" %02X%02X", *p, p[1] );
- }
- }
- else {
- for(i=0; i < n ; i++, p++ ) {
- if( i && !(i%8) )
- putchar(' ');
- printf(" %02X", *p );
- }
- }
-}
-
-static void
-print_mds( const char *fname )
-{
- FILE *fp;
- char buf[1024];
- size_t n;
- MD_HANDLE md;
-
- if( !fname ) {
- fp = stdin;
- fname = "[stdin]";
- }
- else
- fp = fopen( fname, "rb" );
- if( !fp ) {
- log_error("%s: %s\n", fname, strerror(errno) );
- return;
- }
-
- md = md_open( DIGEST_ALGO_MD5, 0 );
- md_enable( md, DIGEST_ALGO_RMD160 );
- md_enable( md, DIGEST_ALGO_SHA1 );
-
- while( (n=fread( buf, 1, DIM(buf), fp )) )
- md_write( md, buf, n );
- if( ferror(fp) )
- log_error("%s: %s\n", fname, strerror(errno) );
- else {
- md_final(md);
- printf( "%s: MD5 =", fname ); print_hex(md_read(md, DIGEST_ALGO_MD5), 16 );
- printf("\n%s: RMD160 =", fname ); print_hex(md_read(md, DIGEST_ALGO_RMD160), 20 );
- printf("\n%s: SHA1 =", fname ); print_hex(md_read(md, DIGEST_ALGO_SHA1), 20 );
- putchar('\n');
- }
-
-
- md_close(md);
-
- if( fp != stdin )
- fclose(fp);
-}
-
-
-
-static void
-do_test(int times)
-{
- #if 0
- MPI t = mpi_alloc( 50 );
- MPI m = mpi_alloc( 50 );
- MPI a = mpi_alloc( 50 );
- MPI b = mpi_alloc( 50 );
- MPI p = mpi_alloc( 50 );
- MPI x = mpi_alloc( 50 );
-
- /* output = b/(a^x) mod p */
- log_debug("invm %d times ", times);
- for( ; times > 0; times -- ) {
- mpi_fromstr(a, "0xef45678343589854354a4545545454554545455"
- "aaaaaaaaaaaaa44444fffdecb33434343443331" );
- mpi_fromstr(b, "0x8765765589854354a4545545454554545455"
- "aaaaaaa466577778decb36666343443331" );
- mpi_invm( t, a, b );
- fputc('.', stderr); fflush(stderr);
- }
-
-
- m_check(NULL);
- #endif
-}
-
diff --git a/g10/g10maint.c b/g10/g10maint.c
new file mode 100644
index 000000000..f02bb11e7
--- /dev/null
+++ b/g10/g10maint.c
@@ -0,0 +1,624 @@
+/* g10maint.c - The G10 maintenance utility
+ * Copyright (c) 1997 by Werner Koch (dd9jn)
+ *
+ * This file is part of G10.
+ *
+ * G10 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * G10 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#include <config.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "packet.h"
+#include "iobuf.h"
+#include "memory.h"
+#include "util.h"
+#include "main.h"
+#include "options.h"
+#include "keydb.h"
+#include "mpi.h"
+#include "cipher.h"
+#include "filter.h"
+#include "trustdb.h"
+#include "ttyio.h"
+#include "i18n.h"
+#include "status.h"
+
+
+enum cmd_values { aNull = 0,
+ aPrimegen, aPrintMDs, aListPackets, aKMode, aKModeC,
+ aListTrustDB, aListTrustPath,
+aTest };
+
+
+static void set_cmd( enum cmd_values *ret_cmd,
+ enum cmd_values new_cmd );
+static void print_hex( byte *p, size_t n );
+static void print_mds( const char *fname );
+static void do_test(int);
+
+const char *
+strusage( int level )
+{
+ const char *p;
+ switch( level ) {
+ case 10:
+ case 0: p = "g10maint - v" VERSION "; "
+ "Copyright 1997 Werner Koch (dd9jn)\n" ; break;
+ case 13: p = "g10"; break;
+ case 14: p = VERSION; break;
+ case 1:
+ case 11: p = "Usage: g10main [options] (-h for help)";
+ break;
+ case 2:
+ case 12: p =
+ _("Syntax: g10maint [options]\n"
+ "The G10 maintenace utility\n"); break;
+
+ case 26:
+ p = _("Please report bugs to <[email protected]>.\n");
+ break;
+
+ #if !defined(HAVE_ZLIB_H) && defined(HAVE_RSA_CIPHER)
+ case 30: p = _(
+ " NOTE: This version is compiled without ZLIB support;\n"
+ " you are not able to process compresssed data!\n"
+ "WARNING: This version has RSA support! Your are not allowed to\n"
+ " use it inside the Unites States before Sep 30, 2000!\n" );
+ #elif !defined(HAVE_ZLIB_H)
+ case 30: p = _(
+ " NOTE: This version is compiled without ZLIB support;\n"
+ " you are not able to process compresssed data!\n");
+ #elif defined(HAVE_RSA_CIPHER)
+ case 30: p = _(
+ "WARNING: This version has RSA support! Your are not allowed to\n"
+ " use it inside the Unites States before Sep 30, 2000!\n" );
+ #else
+ case 30: p = "";
+ #endif
+ break;
+ default: p = default_strusage(level);
+ }
+ return p;
+}
+
+static void
+i18n_init(void)
+{
+ #ifdef ENABLE_NLS
+ setlocale( LC_MESSAGES, "" );
+ bindtextdomain( PACKAGE, G10_LOCALEDIR );
+ textdomain( PACKAGE );
+ #endif
+}
+
+static void
+wrong_args( const char *text)
+{
+ fputs(_("Usage: g10maint [options] "),stderr);
+ fputs(text,stderr);
+ putc('\n',stderr);
+ g10_exit(2);
+}
+
+static void
+set_debug(void)
+{
+ if( opt.debug & DBG_MEMORY_VALUE )
+ memory_debug_mode = 1;
+ if( opt.debug & DBG_MEMSTAT_VALUE )
+ memory_stat_debug_mode = 1;
+ if( opt.debug & DBG_MPI_VALUE )
+ mpi_debug_mode = 1;
+ if( opt.debug & DBG_CIPHER_VALUE )
+ cipher_debug_mode = 1;
+ if( opt.debug & DBG_IOBUF_VALUE )
+ iobuf_debug_mode = 1;
+}
+
+
+static void
+set_cmd( enum cmd_values *ret_cmd, enum cmd_values new_cmd )
+{
+ enum cmd_values cmd = *ret_cmd;
+
+ if( !cmd || cmd == new_cmd )
+ cmd = new_cmd;
+ else if( cmd == aKMode && new_cmd == aKModeC )
+ cmd = aKModeC;
+ else {
+ log_error(_("conflicting commands\n"));
+ g10_exit(2);
+ }
+
+ *ret_cmd = cmd;
+}
+
+
+void
+main( int argc, char **argv )
+{
+ static ARGPARSE_OPTS opts[] = {
+ { 'v', "verbose", 0, N_("verbose") },
+ { 'n', "dry-run", 0, N_("don't make any changes") },
+ { 'o', "output", 2, N_("use as output file")},
+ { 'c', NULL , 0, N_("check signatures")},
+ { 500, "batch", 0, N_("batch mode: never ask")},
+ { 501, "yes", 0, N_("assume yes on most questions")},
+ { 502, "no", 0, N_("assume no on most questions")},
+ { 509, "keyring" ,2, N_("add this keyring to the list of keyrings")},
+ { 'k', NULL , 0, N_("list keys")},
+ { 510, "debug" ,4|16, N_("set debugging flags")},
+ { 511, "debug-all" ,0, N_("enable full debugging")},
+ { 512, "status-fd" ,1, N_("write status info to this fd") },
+ { 513, "gen-prime" , 0, "\r" },
+ { 514, "test" , 0, "\r" },
+ { 516, "print-mds" , 0, N_("print all message digests")},
+ { 517, "secret-keyring" ,2, N_("add this secret keyring to the list")},
+ { 518, "options" , 2, N_("read options from file")},
+ { 519, "no-armor", 0, "\r"},
+ { 520, "no-default-keyring", 0, "\r" },
+ { 521, "list-packets",0,N_("list only the sequence of packets")},
+ { 522, "no-greeting", 0, "\r" },
+ { 526, "no-verbose", 0, "\r"},
+ { 531, "list-trustdb",0 , "\r"},
+ { 533, "list-trust-path",0, "\r"},
+ { 534, "no-comment", 0, N_("do not write comment packets")},
+ { 535, "completes-needed", 1, N_("(default is 1)")},
+ { 536, "marginals-needed", 1, N_("(default is 3)")},
+ { 538, "trustdb-name", 2, "\r" },
+
+ {0} };
+ ARGPARSE_ARGS pargs;
+ IOBUF a;
+ int rc=0;
+ int orig_argc;
+ char **orig_argv;
+ const char *fname, *fname_print;
+ STRLIST remusr= NULL, locusr=NULL;
+ int nrings=0, sec_nrings=0;
+ armor_filter_context_t afx;
+ const char *s;
+ FILE *configfp = NULL;
+ char *configname = NULL;
+ unsigned configlineno;
+ int parse_verbose = 0;
+ int default_config =1;
+ int errors=0;
+ int default_keyring = 1;
+ int greeting = 1;
+ enum cmd_values cmd = 0;
+ const char *trustdb_name = NULL;
+
+
+ secmem_init( 0 ); /* disable use of secmem */
+
+ i18n_init();
+ opt.compress = -1; /* defaults to standard compress level */
+ opt.def_cipher_algo = CIPHER_ALGO_BLOWFISH;
+ opt.def_pubkey_algo = PUBKEY_ALGO_ELGAMAL;
+ opt.def_digest_algo = DIGEST_ALGO_RMD160;
+ opt.completes_needed = 1;
+ opt.marginals_needed = 3;
+
+ /* check wether we have a config file on the commandline */
+ orig_argc = argc;
+ orig_argv = argv;
+ pargs.argc = &argc;
+ pargs.argv = &argv;
+ pargs.flags= 1; /* do not remove the args */
+ while( arg_parse( &pargs, opts) ) {
+ if( pargs.r_opt == 'v' )
+ parse_verbose++;
+ else if( pargs.r_opt == 518 ) {
+ /* yes there is one, so we do not try the default one, but
+ * read the option file when it is encountered at the commandline
+ */
+ default_config = 0;
+ }
+ }
+
+ if( default_config )
+ configname = make_filename("~/.g10", "options", NULL );
+
+ argc = orig_argc;
+ argv = orig_argv;
+ pargs.argc = &argc;
+ pargs.argv = &argv;
+ pargs.flags= 1; /* do not remove the args */
+ next_pass:
+ if( configname ) {
+ configlineno = 0;
+ configfp = fopen( configname, "r" );
+ if( !configfp ) {
+ if( default_config ) {
+ if( parse_verbose > 1 )
+ log_info(_("note: no default option file '%s'\n"), configname );
+ }
+ else
+ log_fatal(_("option file '%s': %s\n"),
+ configname, strerror(errno) );
+ m_free(configname); configname = NULL;
+ }
+ if( parse_verbose > 1 )
+ log_info(_("reading options from '%s'\n"), configname );
+ default_config = 0;
+ }
+
+ while( optfile_parse( configfp, configname, &configlineno,
+ &pargs, opts) ) {
+ switch( pargs.r_opt ) {
+ case 'v': opt.verbose++;
+ opt.list_sigs=1;
+ break;
+ case 'o': opt.outfile = pargs.r.ret_str; break;
+ case 'k': set_cmd( &cmd, aKMode ); break;
+ case 'c': set_cmd( &cmd, aKModeC ); break;
+ case 500: opt.batch = 1; greeting = 0; break;
+ case 501: opt.answer_yes = 1; break;
+ case 502: opt.answer_no = 1; break;
+ case 508: opt.check_sigs = 1; opt.list_sigs = 1; break;
+ case 509: add_keyring(pargs.r.ret_str); nrings++; break;
+ case 510: opt.debug |= pargs.r.ret_ulong; break;
+ case 511: opt.debug = ~0; break;
+ case 512: set_status_fd( pargs.r.ret_int ); break;
+ case 513: set_cmd( &cmd, aPrimegen); break;
+ case 514: set_cmd( &cmd, aTest); break;
+ case 515: opt.fingerprint = 1; break;
+ case 516: set_cmd( &cmd, aPrintMDs); break;
+ case 517: add_secret_keyring(pargs.r.ret_str); sec_nrings++; break;
+ case 518:
+ /* config files may not be nested (silently ignore them) */
+ if( !configfp ) {
+ m_free(configname);
+ configname = m_strdup(pargs.r.ret_str);
+ goto next_pass;
+ }
+ break;
+ case 519: opt.no_armor=1; opt.armor=0; break;
+ case 520: default_keyring = 0; break;
+ case 521: set_cmd( &cmd, aListPackets); break;
+ case 522: greeting = 0; break;
+ case 523: set_passphrase_fd( pargs.r.ret_int ); break;
+ case 526: opt.verbose = 0; opt.list_sigs=0; break;
+ case 527:
+ opt.def_cipher_algo = string_to_cipher_algo(pargs.r.ret_str);
+ break;
+ case 528:
+ opt.def_pubkey_algo = string_to_pubkey_algo(pargs.r.ret_str);
+ break;
+ case 529:
+ opt.def_digest_algo = string_to_digest_algo(pargs.r.ret_str);
+ break;
+ case 531: set_cmd( &cmd, aListTrustDB); break;
+ case 532: quick_random_gen(1); break;
+ case 533: set_cmd( &cmd, aListTrustPath); break;
+ case 534: opt.no_comment=1; break;
+ case 535: opt.completes_needed = pargs.r.ret_int; break;
+ case 536: opt.marginals_needed = pargs.r.ret_int; break;
+ case 538: trustdb_name = pargs.r.ret_str; break;
+ default : errors++; pargs.err = configfp? 1:2; break;
+ }
+ }
+ if( configfp ) {
+ fclose( configfp );
+ configfp = NULL;
+ m_free(configname); configname = NULL;
+ goto next_pass;
+ }
+ m_free( configname ); configname = NULL;
+ if( !opt.def_cipher_algo || check_cipher_algo(opt.def_cipher_algo) ) {
+ log_error(_("selected cipher algorithm is invalid\n"));
+ errors++;
+ }
+ if( !opt.def_pubkey_algo || check_pubkey_algo(opt.def_pubkey_algo) ) {
+ log_error(_("selected pubkey algorithm is invalid\n"));
+ errors++;
+ }
+ if( !opt.def_digest_algo || check_digest_algo(opt.def_digest_algo) ) {
+ log_error(_("selected digest algorithm is invalid\n"));
+ errors++;
+ }
+ if( opt.completes_needed < 1 ) {
+ log_error(_("completes-needed must be greater than 0\n"));
+ errors++;
+ }
+ if( opt.marginals_needed < 2 ) {
+ log_error(_("marginals-needed must be greater than 1\n"));
+ errors++;
+ }
+ if( errors )
+ g10_exit(2);
+
+ write_status( STATUS_ENTER );
+
+ set_debug();
+ if( cmd == aKMode || cmd == aKModeC ) { /* kludge to be compatible to pgp */
+ if( cmd == aKModeC ) {
+ opt.fingerprint = 1;
+ cmd = aKMode;
+ }
+ opt.list_sigs = 0;
+ if( opt.verbose > 2 )
+ opt.check_sigs++;
+ if( opt.verbose > 1 )
+ opt.list_sigs++;
+
+ opt.verbose = opt.verbose > 1;
+ }
+ if( opt.verbose > 1 )
+ set_packet_list_mode(1);
+ if( greeting ) {
+ if( *(s=strusage(10)) )
+ tty_printf("%s", s);
+ if( *(s=strusage(30)) )
+ tty_printf("%s", s);
+ }
+
+ if( !sec_nrings || default_keyring ) { /* add default secret rings */
+ char *p = make_filename("~/.g10", "secring.g10", NULL );
+ add_secret_keyring(p);
+ m_free(p);
+ }
+ if( !nrings || default_keyring ) { /* add default ring */
+ char *p = make_filename("~/.g10", "pubring.g10", NULL );
+ add_keyring(p);
+ m_free(p);
+ }
+
+ if( argc ) {
+ fname_print = fname = *argv;
+ }
+ else {
+ fname_print = "[stdin]";
+ fname = NULL;
+ if( get_passphrase_fd() == 0 ) {
+ /* reading data and passphrase form stdin:
+ * we assume the first line is the passphrase, so
+ * we read it now
+ */
+ /* FIXME: doit */
+ }
+ }
+
+ switch( cmd ) {
+ case aPrimegen:
+ case aPrintMDs:
+ break;
+ case aListTrustDB: rc = init_trustdb( argc? 1:0, trustdb_name ); break;
+ default: rc = init_trustdb(1, trustdb_name ); break;
+ }
+ if( rc )
+ log_error(_("failed to initialize the TrustDB: %s\n"), g10_errstr(rc));
+
+
+ switch( cmd ) {
+ case aKMode: /* list keyring */
+ if( !argc ) { /* list the default public keyrings */
+ int i, seq=0;
+ const char *s;
+
+ while( (s=get_keyring(seq++)) ) {
+ if( !(a = iobuf_open(s)) ) {
+ log_error(_("can't open '%s'\n"), s);
+ continue;
+ }
+ if( seq > 1 )
+ putchar('\n');
+ printf("%s\n", s );
+ for(i=strlen(s); i; i-- )
+ putchar('-');
+ putchar('\n');
+
+ proc_packets( a );
+ iobuf_close(a);
+ }
+
+ }
+ else if( argc == 1) { /* list the given keyring */
+ if( !(a = iobuf_open(fname)) )
+ log_fatal(_("can't open '%s'\n"), fname_print);
+ proc_packets( a );
+ iobuf_close(a);
+ }
+ else
+ usage(1);
+ break;
+
+ case aPrimegen:
+ if( argc == 1 ) {
+ mpi_print( stdout, generate_public_prime( atoi(argv[0]) ), 1);
+ putchar('\n');
+ }
+ else if( argc == 2 ) {
+ mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
+ atoi(argv[1]), NULL ), 1);
+ putchar('\n');
+ }
+ else if( argc == 3 ) {
+ MPI g = mpi_alloc(1);
+ mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
+ atoi(argv[1]), g ), 1);
+ printf("\nGenerator: ");
+ mpi_print( stdout, g, 1 );
+ putchar('\n');
+ mpi_free(g);
+ }
+ else
+ usage(1);
+ break;
+
+ case aPrintMDs:
+ if( !argc )
+ print_mds(NULL);
+ else {
+ for(; argc; argc--, argv++ )
+ print_mds(*argv);
+ }
+ break;
+
+ case aTest: do_test( argc? atoi(*argv): 0 ); break;
+
+ case aListTrustDB:
+ if( !argc )
+ list_trustdb(NULL);
+ else {
+ for( ; argc; argc--, argv++ )
+ list_trustdb( *argv );
+ }
+ break;
+
+ case aListTrustPath:
+ if( argc != 2 )
+ wrong_args("--list-trust-path [-- -]<maxdepth> <username>");
+ list_trust_path( atoi(*argv), argv[1] );
+ break;
+
+ case aListPackets:
+ opt.list_packets=1;
+ default: /* do regular maintenace tasks */
+ if( argc > 1 )
+ usage(1);
+ if( !(a = iobuf_open(fname)) )
+ log_fatal(_("can't open '%s'\n"), fname_print);
+ if( !opt.no_armor ) {
+ /* push the armor filter, so it can peek at the input data */
+ memset( &afx, 0, sizeof afx);
+ iobuf_push_filter( a, armor_filter, &afx );
+ }
+ if( cmd == aListPackets ) {
+ set_packet_list_mode(1);
+ opt.list_packets=1;
+ }
+ proc_packets( a );
+ iobuf_close(a);
+ break;
+ }
+
+ /* cleanup */
+ FREE_STRLIST(remusr);
+ FREE_STRLIST(locusr);
+ g10_exit(0);
+}
+
+
+void
+g10_exit( int rc )
+{
+ if( opt.verbose )
+ secmem_dump_stats();
+ secmem_term();
+ rc = rc? rc : log_get_errorcount(0)? 2:0;
+ write_status( STATUS_LEAVE );
+ exit(rc );
+}
+
+
+static void
+print_hex( byte *p, size_t n )
+{
+ int i;
+
+ if( n == 20 ) {
+ for(i=0; i < n ; i++, i++, p += 2 ) {
+ if( i == 10 )
+ putchar(' ');
+ printf(" %02X%02X", *p, p[1] );
+ }
+ }
+ else {
+ for(i=0; i < n ; i++, p++ ) {
+ if( i && !(i%8) )
+ putchar(' ');
+ printf(" %02X", *p );
+ }
+ }
+}
+
+static void
+print_mds( const char *fname )
+{
+ FILE *fp;
+ char buf[1024];
+ size_t n;
+ MD_HANDLE md;
+
+ if( !fname ) {
+ fp = stdin;
+ fname = "[stdin]";
+ }
+ else
+ fp = fopen( fname, "rb" );
+ if( !fp ) {
+ log_error("%s: %s\n", fname, strerror(errno) );
+ return;
+ }
+
+ md = md_open( DIGEST_ALGO_MD5, 0 );
+ md_enable( md, DIGEST_ALGO_RMD160 );
+ md_enable( md, DIGEST_ALGO_SHA1 );
+
+ while( (n=fread( buf, 1, DIM(buf), fp )) )
+ md_write( md, buf, n );
+ if( ferror(fp) )
+ log_error("%s: %s\n", fname, strerror(errno) );
+ else {
+ md_final(md);
+ printf( "%s: MD5 =", fname ); print_hex(md_read(md, DIGEST_ALGO_MD5), 16 );
+ printf("\n%s: RMD160 =", fname ); print_hex(md_read(md, DIGEST_ALGO_RMD160), 20 );
+ printf("\n%s: SHA1 =", fname ); print_hex(md_read(md, DIGEST_ALGO_SHA1), 20 );
+ putchar('\n');
+ }
+
+
+ md_close(md);
+
+ if( fp != stdin )
+ fclose(fp);
+}
+
+
+
+static void
+do_test(int times)
+{
+ #if 0
+ MPI t = mpi_alloc( 50 );
+ MPI m = mpi_alloc( 50 );
+ MPI a = mpi_alloc( 50 );
+ MPI b = mpi_alloc( 50 );
+ MPI p = mpi_alloc( 50 );
+ MPI x = mpi_alloc( 50 );
+
+ /* output = b/(a^x) mod p */
+ log_debug("invm %d times ", times);
+ for( ; times > 0; times -- ) {
+ mpi_fromstr(a, "0xef45678343589854354a4545545454554545455"
+ "aaaaaaaaaaaaa44444fffdecb33434343443331" );
+ mpi_fromstr(b, "0x8765765589854354a4545545454554545455"
+ "aaaaaaa466577778decb36666343443331" );
+ mpi_invm( t, a, b );
+ fputc('.', stderr); fflush(stderr);
+ }
+
+
+ m_check(NULL);
+ #endif
+}
+
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index 5d967564e..1a11ec467 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -592,8 +592,11 @@ parse_certificate( IOBUF inp, int pkttype, unsigned long pktlen,
}
else
cert->d.elg.is_protected = 0;
-
- n = pktlen; cert->d.elg.x = mpi_read(inp, &n, 1 ); pktlen -=n;
+ /* It does not make sense to read it into secure memory.
+ * If the user is so careless, not to protect his secret key,
+ * we can assume, that he operates an open system :=(.
+ * So we put the key into secure memory when we unprotect him. */
+ n = pktlen; cert->d.elg.x = mpi_read(inp, &n, 0 ); pktlen -=n;
cert->d.elg.csum = read_16(inp); pktlen -= 2;
if( list_mode ) {
@@ -646,11 +649,11 @@ parse_certificate( IOBUF inp, int pkttype, unsigned long pktlen,
}
else
cert->d.rsa.is_protected = 0;
-
- n = pktlen; cert->d.rsa.rsa_d = mpi_read(inp, &n, 1 ); pktlen -=n;
- n = pktlen; cert->d.rsa.rsa_p = mpi_read(inp, &n, 1 ); pktlen -=n;
- n = pktlen; cert->d.rsa.rsa_q = mpi_read(inp, &n, 1 ); pktlen -=n;
- n = pktlen; cert->d.rsa.rsa_u = mpi_read(inp, &n, 1 ); pktlen -=n;
+ /* (See comments at the code for elg keys) */
+ n = pktlen; cert->d.rsa.rsa_d = mpi_read(inp, &n, 0 ); pktlen -=n;
+ n = pktlen; cert->d.rsa.rsa_p = mpi_read(inp, &n, 0 ); pktlen -=n;
+ n = pktlen; cert->d.rsa.rsa_q = mpi_read(inp, &n, 0 ); pktlen -=n;
+ n = pktlen; cert->d.rsa.rsa_u = mpi_read(inp, &n, 0 ); pktlen -=n;
cert->d.rsa.csum = read_16(inp); pktlen -= 2;
if( list_mode ) {
diff --git a/g10/seckey-cert.c b/g10/seckey-cert.c
index ab1034051..0fa297914 100644
--- a/g10/seckey-cert.c
+++ b/g10/seckey-cert.c
@@ -85,6 +85,9 @@ check_elg( PKT_secret_cert *cert )
blowfish_decode_cfb( blowfish_ctx,
cert->d.elg.protect.blowfish.iv,
cert->d.elg.protect.blowfish.iv, 8 );
+ mpi_set_secure(cert->d.elg.x );
+ /*fixme: maybe it is better to set the buger secure with a
+ * new get_buffer_secure() function */
buffer = mpi_get_buffer( cert->d.elg.x, &nbytes, NULL );
csum = checksum_u16( nbytes*8 );
blowfish_decode_cfb( blowfish_ctx, buffer, buffer, nbytes );
@@ -196,6 +199,7 @@ check_rsa( PKT_secret_cert *cert )
cert->d.rsa.protect.blowfish.iv, 8 );
csum = 0;
#define X(a) do { \
+ mpi_set_secure(cert->d.rsa.rsa_##a); \
buffer = mpi_get_buffer( cert->d.rsa.rsa_##a, &nbytes, NULL );\
csum += checksum_u16( nbytes*8 ); \
blowfish_decode_cfb( blowfish_ctx, buffer, buffer, nbytes ); \
diff --git a/g10/trustdb.c b/g10/trustdb.c
index 9e2c5be74..116d2679f 100644
--- a/g10/trustdb.c
+++ b/g10/trustdb.c
@@ -371,10 +371,16 @@ dump_record( ulong rnum, TRUSTREC *rec, FILE *fp )
case RECTYPE_VER: fprintf(fp, "version\n");
break;
case RECTYPE_DIR:
- fprintf(fp, "dir keyid=%08lx, key=%lu, ctl=%lu, sig=%lu%s\n",
+ fprintf(fp, "dir keyid=%08lx, key=%lu, ctl=%lu, sig=%lu",
rec->r.dir.keyid[1],
- rec->r.dir.keyrec, rec->r.dir.ctlrec, rec->r.dir.sigrec,
- rec->r.dir.no_sigs?" (inv sigs)":"");
+ rec->r.dir.keyrec, rec->r.dir.ctlrec, rec->r.dir.sigrec );
+ if( rec->r.dir.no_sigs == 1 )
+ fputs(", (none)", fp );
+ else if( rec->r.dir.no_sigs == 2 )
+ fputs(", (invalid)", fp );
+ else if( rec->r.dir.no_sigs )
+ fputs(", (revoked)", fp );
+ putc('\n', fp);
break;
case RECTYPE_KEY: fprintf(fp, "key keyid=%08lx, own=%lu, ownertrust=%02x\n",
rec->r.key.keyid[1],
@@ -643,7 +649,7 @@ search_record( PKT_public_cert *pkc, TRUSTREC *rec )
TRUSTREC keyrec;
if( read_record( rec->r.dir.keyrec, &keyrec, RECTYPE_KEY ) ) {
- log_error("%lu: ooops: invalid dir record\n", recnum );
+ log_error("%lu: ooops: invalid key record\n", recnum );
break;
}
if( keyrec.r.key.pubkey_algo == pkc->pubkey_algo
@@ -748,6 +754,8 @@ walk_sigrecs( SIGREC_CONTEXT *c, int create )
if( !c->sigrec && create && !r->r.dir.no_sigs ) {
rc = build_sigrecs( c->local_id );
if( rc ) {
+ if( rc == G10ERR_BAD_CERT )
+ rc = -1; /* maybe no selcficnature */
if( rc != -1 )
log_info("%lu: error building sigs on the fly: %s\n",
c->local_id, g10_errstr(rc) );
@@ -1088,6 +1096,10 @@ check_sigs( KBNODE keyblock, int *selfsig_okay )
int selfsig;
rc = check_key_signature( keyblock, node, &selfsig );
if( !rc ) {
+ rc = set_signature_packets_local_id( node->pkt->pkt.signature );
+ if( rc )
+ log_fatal("set_signature_packets_local_id failed: %s\n",
+ g10_errstr(rc));
if( selfsig ) {
node->flag |= 2; /* mark signature valid */
*selfsig_okay = 1;
@@ -1101,9 +1113,10 @@ check_sigs( KBNODE keyblock, int *selfsig_okay )
node->flag |= 4; /* mark as duplicate */
}
if( DBG_TRUST )
- log_debug("trustdb: sig from %08lX: %s\n",
+ log_debug("trustdb: sig from %08lX(%lu): %s%s\n",
(ulong)node->pkt->pkt.signature->keyid[1],
- g10_errstr(rc) );
+ node->pkt->pkt.signature->local_id,
+ g10_errstr(rc), (node->flag&4)?" (dup)":"" );
}
}
if( dups )
@@ -1128,6 +1141,7 @@ build_sigrecs( ulong pubkeyid )
int rc=0;
int i, selfsig;
ulong rnum, rnum2;
+ ulong first_sigrec = 0;
if( DBG_TRUST )
log_debug("trustdb: build_sigrecs for pubkey %lu\n", (ulong)pubkeyid );
@@ -1164,11 +1178,11 @@ build_sigrecs( ulong pubkeyid )
}
if( !selfsig ) {
log_error("build_sigrecs: self-certificate missing\n" );
- update_no_sigs( pubkeyid, 1 );
+ update_no_sigs( pubkeyid, 2 );
rc = G10ERR_BAD_CERT;
goto leave;
}
- update_no_sigs( pubkeyid, 0 );
+ update_no_sigs( pubkeyid, 0 ); /* assume we have sigs */
/* valid key signatures are now marked; we can now build the
* sigrecs */
@@ -1203,6 +1217,8 @@ build_sigrecs( ulong pubkeyid )
log_error("build_sigrecs: write_record failed\n" );
goto leave;
}
+ if( !first_sigrec )
+ first_sigrec = rnum2;
}
rec2 = rec;
rnum2 = rnum;
@@ -1226,6 +1242,8 @@ build_sigrecs( ulong pubkeyid )
log_error("build_sigrecs: write_record failed\n" );
goto leave;
}
+ if( !first_sigrec )
+ first_sigrec = rnum2;
}
if( i ) { /* write the pending record */
rec.r.sig.owner = pubkeyid;
@@ -1235,8 +1253,24 @@ build_sigrecs( ulong pubkeyid )
log_error("build_sigrecs: write_record failed\n" );
goto leave;
}
+ if( !first_sigrec )
+ first_sigrec = rnum;
+ }
+ }
+ if( first_sigrec ) {
+ /* update the dir record */
+ if( (rc =read_record( pubkeyid, &rec, RECTYPE_DIR )) ) {
+ log_error("update_dir_record: read failed\n");
+ goto leave;
+ }
+ rec.r.dir.sigrec = first_sigrec;
+ if( (rc=write_record( pubkeyid, &rec )) ) {
+ log_error("update_dir_record: write failed\n");
+ goto leave;
}
}
+ else
+ update_no_sigs( pubkeyid, 1 ); /* no signatures */
leave:
m_free( finfo );
@@ -1309,7 +1343,7 @@ static int
propagate_trust( TRUST_SEG_LIST tslist )
{
int i, rc;
- unsigned trust;
+ unsigned trust, tr;
TRUST_SEG_LIST tsl;
for(tsl = tslist; tsl; tsl = tsl->next ) {
@@ -1325,9 +1359,11 @@ propagate_trust( TRUST_SEG_LIST tslist )
tsl->seg[i].trust = trust;
if( i > 0 ) {
/* get the trust of this pubkey */
- rc = get_ownertrust( tsl->seg[i].lid, &trust );
+ rc = get_ownertrust( tsl->seg[i].lid, &tr );
if( rc )
return rc;
+ if( tr < trust )
+ trust = tr;
}
}
}
@@ -1362,8 +1398,15 @@ do_check( ulong pubkeyid, TRUSTREC *dr, unsigned *trustlevel )
if( !rc ) /* and read again */
rc = read_record( pubkeyid, dr, RECTYPE_DIR );
}
- if( !rc && !dr->r.dir.sigrec )
- rc = -1;
+ if( !rc && !dr->r.dir.sigrec ) {
+ /* See wether this is our own key */
+ if( !qry_lid_table_flag( ultikey_table, pubkeyid, NULL ) ) {
+ *trustlevel = TRUST_ULTIMATE;
+ return 0;
+ }
+ else
+ rc = -1;
+ }
if( rc )
return rc; /* error while looking for sigrec or building sigrecs */
@@ -1435,7 +1478,7 @@ do_check( ulong pubkeyid, TRUSTREC *dr, unsigned *trustlevel )
* 1: used for initial program startup
*/
int
-init_trustdb( int level )
+init_trustdb( int level, const char *dbname )
{
int rc=0;
@@ -1443,7 +1486,8 @@ init_trustdb( int level )
ultikey_table = new_lid_table();
if( !level || level==1 ) {
- char *fname = make_filename("~/.g10", "trustdb.g10", NULL );
+ char *fname = dbname? m_strdup( dbname )
+ : make_filename("~/.g10", "trustdb.g10", NULL );
if( access( fname, R_OK ) ) {
if( errno != ENOENT ) {
log_error("can't access %s: %s\n", fname, strerror(errno) );
@@ -1883,7 +1927,7 @@ update_no_sigs( ulong lid, int no_sigs )
return G10ERR_TRUSTDB;
}
- rec.r.dir.no_sigs = !!no_sigs;
+ rec.r.dir.no_sigs = no_sigs;
if( write_record( lid, &rec ) ) {
log_error("update_no_sigs: write failed\n");
return G10ERR_TRUSTDB;
diff --git a/g10/trustdb.h b/g10/trustdb.h
index ee604de1a..5eb52c9a2 100644
--- a/g10/trustdb.h
+++ b/g10/trustdb.h
@@ -22,7 +22,7 @@
#define G10_TRUSTDB_H
-
+/* Trust values mus be sorted in ascending order */
#define TRUST_UNKNOWN 0 /* not yet calculated */
#define TRUST_EXPIRED 1 /* calculation may be invalid */
#define TRUST_UNDEFINED 2 /* not enough informations for calculation */
@@ -35,7 +35,7 @@
/*-- trustdb.c --*/
void list_trustdb(const char *username);
void list_trust_path( int max_depth, const char *username );
-int init_trustdb( int level );
+int init_trustdb( int level, const char *dbname );
int check_trust( PKT_public_cert *pkc, unsigned *r_trustlevel );
int enum_trust_web( void **context, ulong *lid );
int get_ownertrust( ulong lid, unsigned *r_otrust );
diff --git a/include/i18n.h b/include/i18n.h
index a75f3c40f..55911b474 100644
--- a/include/i18n.h
+++ b/include/i18n.h
@@ -21,8 +21,12 @@
#ifndef G10_I18N_H
#define G10_I18N_H
-#ifdef HAVE_LIBINTL
+#ifdef ENABLE_NLS
+#ifdef HAVE_LIBINTL_H
#include <libintl.h>
+#else
+ #include "../intl/libintl.h"
+#endif
#define _(a) gettext (a)
#ifdef gettext_noop
#define N_(a) gettext_noop (a)
diff --git a/include/mpi.h b/include/mpi.h
index 7a43b3018..1354dda4c 100644
--- a/include/mpi.h
+++ b/include/mpi.h
@@ -78,6 +78,8 @@ typedef struct mpi_struct {
void mpi_resize( MPI a, unsigned nlimbs );
MPI mpi_copy( MPI a );
#endif
+#define mpi_is_secure(a) ((a) && (a)->secure)
+void mpi_set_secure( MPI a );
void mpi_clear( MPI a );
void mpi_set( MPI w, MPI u);
void mpi_set_ui( MPI w, ulong u);
diff --git a/mpi/Makefile.am b/mpi/Makefile.am
index 18b5581a7..11b15dd3b 100644
--- a/mpi/Makefile.am
+++ b/mpi/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I.. -I$(top_srcdir)/include
CFLAGS += -O2
SUFFIXES = .S .s
@@ -8,10 +8,10 @@ SUFFIXES = .S .s
EXTRA_DIST = config.links
-noinst_LIBRARIES = mpi
+noinst_LIBRARIES = libmpi.a
# noinst_HEADERS =
-mpi_SOURCES = longlong.h \
+libmpi_a_SOURCES = longlong.h \
mpi-add.c \
mpi-bit.c \
mpi-cmp.c \
@@ -31,7 +31,7 @@ mpi_SOURCES = longlong.h \
mpih-mul.c \
mpiutil.c
-mpi_LIBADD = mpih-mul1.o \
+libmpi_a_LIBADD = mpih-mul1.o \
mpih-mul2.o \
mpih-mul3.o \
mpih-add1.o \
diff --git a/mpi/Makefile.in b/mpi/Makefile.in
index 81910ff2b..98b42753d 100644
--- a/mpi/Makefile.in
+++ b/mpi/Makefile.in
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
SHELL = /bin/sh
@@ -32,22 +38,63 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES = -I.. -I$(top_srcdir)/include
SUFFIXES = .S .s
EXTRA_DIST = config.links
-noinst_LIBRARIES = mpi
+noinst_LIBRARIES = libmpi.a
# noinst_HEADERS =
-mpi_SOURCES = longlong.h \
+libmpi_a_SOURCES = longlong.h \
mpi-add.c \
mpi-bit.c \
mpi-cmp.c \
@@ -67,199 +114,205 @@ mpi_SOURCES = longlong.h \
mpih-mul.c \
mpiutil.c
-mpi_LIBADD = mpih-mul1.o \
+libmpi_a_LIBADD = mpih-mul1.o \
mpih-mul2.o \
mpih-mul3.o \
mpih-add1.o \
mpih-sub1.o \
mpih-shift.o @MPI_EXTRA_ASM_OBJS@
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
CONFIG_HEADER = ../config.h
-LIBRARIES = $(noinst_LIBRARIES)
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
-noinst_LIBFILES = libmpi.a
-
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-mpi_OBJECTS = mpi-add.o mpi-bit.o mpi-cmp.o mpi-div.o mpi-gcd.o \
+libmpi_a_DEPENDENCIES = mpih-mul1.o mpih-mul2.o mpih-mul3.o mpih-add1.o \
+mpih-sub1.o mpih-shift.o
+libmpi_a_OBJECTS = mpi-add.o mpi-bit.o mpi-cmp.o mpi-div.o mpi-gcd.o \
mpi-inv.o mpi-mul.o mpi-pow.o mpi-scan.o mpicoder.o mpih-cmp.o \
mpih-add.o mpih-sub.o mpih-div.o mpih-mul.o mpiutil.o
-EXTRA_mpi_SOURCES =
-LIBFILES = libmpi.a
AR = ar
-RANLIB = @RANLIB@
-DIST_COMMON = Makefile.am Makefile.in
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON = Makefile.am Makefile.in
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
-DEP_FILES = $(srcdir)/.deps/mpi-add.P $(srcdir)/.deps/mpi-bit.P \
-$(srcdir)/.deps/mpi-cmp.P $(srcdir)/.deps/mpi-div.P \
-$(srcdir)/.deps/mpi-gcd.P $(srcdir)/.deps/mpi-inv.P \
-$(srcdir)/.deps/mpi-mul.P $(srcdir)/.deps/mpi-pow.P \
-$(srcdir)/.deps/mpi-scan.P $(srcdir)/.deps/mpicoder.P \
-$(srcdir)/.deps/mpih-add.P $(srcdir)/.deps/mpih-cmp.P \
-$(srcdir)/.deps/mpih-div.P $(srcdir)/.deps/mpih-mul.P \
-$(srcdir)/.deps/mpih-sub.P $(srcdir)/.deps/mpiutil.P
-SOURCES = $(mpi_SOURCES)
-OBJECTS = $(mpi_OBJECTS)
+GZIP = --best
+DEP_FILES = .deps/mpi-add.P .deps/mpi-bit.P .deps/mpi-cmp.P \
+.deps/mpi-div.P .deps/mpi-gcd.P .deps/mpi-inv.P .deps/mpi-mul.P \
+.deps/mpi-pow.P .deps/mpi-scan.P .deps/mpicoder.P .deps/mpih-add.P \
+.deps/mpih-cmp.P .deps/mpih-div.P .deps/mpih-mul.P .deps/mpih-sub.P \
+.deps/mpiutil.P
+SOURCES = $(libmpi_a_SOURCES)
+OBJECTS = $(libmpi_a_OBJECTS)
default: all
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu mpi/Makefile
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
- cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-Makefile: $(top_builddir)/config.status Makefile.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
mostlyclean-noinstLIBRARIES:
clean-noinstLIBRARIES:
- rm -f $(noinst_LIBFILES)
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
distclean-noinstLIBRARIES:
maintainer-clean-noinstLIBRARIES:
.c.o:
- $(COMPILE) $<
+ $(COMPILE) -c $<
+
+.s.o:
+ $(COMPILE) -c $<
+
+.S.o:
+ $(COMPILE) -c $<
mostlyclean-compile:
- rm -f *.o core
+ -rm -f *.o core
clean-compile:
distclean-compile:
- rm -f *.tab.c
+ -rm -f *.tab.c
maintainer-clean-compile:
-$(mpi_OBJECTS): ../config.h
-libmpi.a: $(mpi_OBJECTS) $(mpi_LIBADD)
- rm -f libmpi.a
- $(AR) cru libmpi.a $(mpi_OBJECTS) $(mpi_LIBADD)
+libmpi.a: $(libmpi_a_OBJECTS) $(libmpi_a_DEPENDENCIES)
+ -rm -f libmpi.a
+ $(AR) cru libmpi.a $(libmpi_a_OBJECTS) $(libmpi_a_LIBADD)
$(RANLIB) libmpi.a
-ID: $(HEADERS) $(SOURCES)
- here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
-
tags: TAGS
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
- here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+ here=`pwd` && cd $(srcdir) \
+ && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
- rm -f TAGS ID
+ -rm -f TAGS ID
maintainer-clean-tags:
-subdir = mpi
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
- @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = mpi
+
+distdir: $(DISTFILES)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(top_distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu mpi/Makefile
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
test -f $(distdir)/$$file \
- || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file; \
done
-# This fragment is probably only useful for maintainers. It relies on
-# GNU make and gcc. It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
- cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
echo > $@
-include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
- @echo "mkdeps $< > $@"
- @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
- $(MKDEP) $< | sed "$$re" > $@-tmp
- @if test -n "$o"; then \
- sed 's/\.o:/$$o:/' $@-tmp > $@; \
- rm $@-tmp; \
- else \
- mv $@-tmp $@; \
- fi
-
-# End of maintainer-only section
-info:
-dvi:
+mostlyclean-depend:
-check: all
+clean-depend:
-installcheck:
+distclean-depend:
+maintainer-clean-depend:
+ -rm -rf .deps
+
+.deps/%.P: %.c
+ @echo "Computing dependencies for $<..."
+ @o='o'; \
+ test -n "$o" && o='$$o'; \
+ $(MKDEP) $< >[email protected] \
+ && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < [email protected] > $@ \
+info:
+dvi:
+check: all
+ $(MAKE)
+installcheck:
install-exec:
+ @$(NORMAL_INSTALL)
install-data:
+ @$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall:
-all: $(LIBFILES) Makefile
+all: Makefile $(LIBRARIES)
install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+ $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
mostlyclean-generic:
- test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
- test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- rm -f Makefile $(DISTCLEANFILES)
- rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+ -rm -f Makefile $(DISTCLEANFILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
- test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \
- mostlyclean-tags mostlyclean-generic
+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-clean: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
- mostlyclean
+clean: clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
+ clean-generic mostlyclean
distclean: distclean-noinstLIBRARIES distclean-compile distclean-tags \
- distclean-generic clean
- rm -f config.status
+ distclean-depend distclean-generic clean
+ -rm -f config.status
maintainer-clean: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-tags \
- maintainer-clean-generic distclean
+ maintainer-clean-depend maintainer-clean-generic \
+ distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -267,14 +320,13 @@ maintainer-clean: maintainer-clean-noinstLIBRARIES \
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
CFLAGS += -O2
-.SUFFIXES:
-.SUFFIXES: .c .o $(SUFFIXES)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/mpi/mpicoder.c b/mpi/mpicoder.c
index b371fa64a..efb5d0904 100644
--- a/mpi/mpicoder.c
+++ b/mpi/mpicoder.c
@@ -326,6 +326,14 @@ mpi_set_buffer( MPI a, const byte *buffer, unsigned nbytes, int sign )
alimb |= *p-- << 16 ;
alimb |= *p-- << 24 ;
#elif BYTES_PER_MPI_LIMB == 8
+ alimb = *p-- ;
+ alimb |= *p-- << 8 ;
+ alimb |= *p-- << 16 ;
+ alimb |= *p-- << 24 ;
+ alimb |= *p-- << 32 ;
+ alimb |= *p-- << 40 ;
+ alimb |= *p-- << 48 ;
+ alimb |= *p-- << 56 ;
#else
#error please implement for this limb size.
#endif
diff --git a/mpi/mpiutil.c b/mpi/mpiutil.c
index 068a9a399..7515eafd1 100644
--- a/mpi/mpiutil.c
+++ b/mpi/mpiutil.c
@@ -1,4 +1,4 @@
-/* mpiutil.c - Utility functions for MPI
+/* mpiutilac - Utility functions for MPI
* Copyright (c) 1997 by Werner Koch (dd9jn)
*
* This file is part of G10.
@@ -192,6 +192,34 @@ mpi_free( MPI a )
}
+void
+mpi_set_secure( MPI a )
+{
+ mpi_ptr_t ap, bp;
+
+ if( a->secure )
+ return;
+ a->secure = 1;
+ ap = a->d;
+ if( !a->nlimbs ) {
+ assert(!ap);
+ return;
+ }
+ #ifdef M_DEBUG
+ bp = mpi_debug_alloc_limb_space( a->nlimbs, 1, "set_secure" );
+ #else
+ bp = mpi_alloc_limb_space( a->nlimbs, 1 );
+ #endif
+ MPN_COPY( bp, ap, a->nlimbs );
+ a->d = bp;
+ #ifdef M_DEBUG
+ mpi_debug_free_limb_space(ap, "set_secure");
+ #else
+ mpi_free_limb_space(ap);
+ #endif
+}
+
+
/****************
* Note: This copy function shpould not interpret the MPI
* but copy it transparently.
diff --git a/scripts/missing b/scripts/missing
new file mode 100755
index 000000000..a6abd0698
--- /dev/null
+++ b/scripts/missing
@@ -0,0 +1,134 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+# Franc,ois Pinard <[email protected]>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+case "$1" in
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ automake touch all \`Makefile.in' files
+ bison touch file \`y.tab.c'
+ makeinfo touch the output file
+ yacc touch file \`y.tab.c'"
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing - GNU libit 0.0"
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+ aclocal)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`acinclude.m4' or \`configure.in'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`configure.in'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`acconfig.h' or \`configure.in'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ touch config.h.in
+ ;;
+
+ automake)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print \
+ | sed 's/^\(.*\).am$/touch \1.in/' \
+ | sh
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ touch y.tab.c
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ fi
+ touch $file
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+ system. You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequirements for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/tools/Makefile.am b/tools/Makefile.am
index bddbf5773..3b43090c8 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I.. -I$(top_srcdir)/include
noinst_PROGRAMS = mpicalc bftest
diff --git a/tools/Makefile.in b/tools/Makefile.in
index c9e82d7e6..f6b077672 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
SHELL = /bin/sh
@@ -32,13 +38,54 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES = -I.. -I$(top_srcdir)/include
noinst_PROGRAMS = mpicalc bftest
@@ -48,186 +95,200 @@ bftest_SOURCES = bftest.c
LDADD = -L ../cipher -L ../mpi -L ../util -L ../cipher \
-lmpi -lutil -lmpi -lutil -lcipher
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
CONFIG_HEADER = ../config.h
-PROGRAMS = $(noinst_PROGRAMS)
-
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-mpicalc_OBJECTS = mpicalc.o
-EXTRA_mpicalc_SOURCES =
+mpicalc_OBJECTS = mpicalc.o
mpicalc_LDADD = $(LDADD)
-bftest_OBJECTS = bftest.o
-EXTRA_bftest_SOURCES =
+mpicalc_DEPENDENCIES = ../cipher ../mpi ../util ../cipher
+mpicalc_LDFLAGS =
+bftest_OBJECTS = bftest.o
bftest_LDADD = $(LDADD)
-DIST_COMMON = Makefile.am Makefile.in
-
+bftest_DEPENDENCIES = ../cipher ../mpi ../util ../cipher
+bftest_LDFLAGS =
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON = Makefile.am Makefile.in
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
-DEP_FILES = $(srcdir)/.deps/bftest.P $(srcdir)/.deps/mpicalc.P
+GZIP = --best
+DEP_FILES = .deps/bftest.P .deps/mpicalc.P
SOURCES = $(mpicalc_SOURCES) $(bftest_SOURCES)
OBJECTS = $(mpicalc_OBJECTS) $(bftest_OBJECTS)
default: all
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
- cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-Makefile: $(top_builddir)/config.status Makefile.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
mostlyclean-noinstPROGRAMS:
clean-noinstPROGRAMS:
- rm -f $(noinst_PROGRAMS)
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
distclean-noinstPROGRAMS:
maintainer-clean-noinstPROGRAMS:
.c.o:
- $(COMPILE) $<
+ $(COMPILE) -c $<
+
+.s.o:
+ $(COMPILE) -c $<
+
+.S.o:
+ $(COMPILE) -c $<
mostlyclean-compile:
- rm -f *.o core
+ -rm -f *.o core
clean-compile:
distclean-compile:
- rm -f *.tab.c
+ -rm -f *.tab.c
maintainer-clean-compile:
-$(mpicalc_OBJECTS): ../config.h
mpicalc: $(mpicalc_OBJECTS) $(mpicalc_DEPENDENCIES)
- $(LINK) $(mpicalc_OBJECTS) $(mpicalc_LDADD) $(LIBS)
-$(bftest_OBJECTS): ../config.h
+ @rm -f mpicalc
+ $(LINK) $(mpicalc_LDFLAGS) $(mpicalc_OBJECTS) $(mpicalc_LDADD) $(LIBS)
bftest: $(bftest_OBJECTS) $(bftest_DEPENDENCIES)
- $(LINK) $(bftest_OBJECTS) $(bftest_LDADD) $(LIBS)
-
-ID: $(HEADERS) $(SOURCES)
- here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
+ @rm -f bftest
+ $(LINK) $(bftest_LDFLAGS) $(bftest_OBJECTS) $(bftest_LDADD) $(LIBS)
tags: TAGS
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
- here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+ here=`pwd` && cd $(srcdir) \
+ && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
- rm -f TAGS ID
+ -rm -f TAGS ID
maintainer-clean-tags:
-subdir = tools
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
- @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = tools
+
+distdir: $(DISTFILES)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(top_distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu tools/Makefile
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
test -f $(distdir)/$$file \
- || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file; \
done
-# This fragment is probably only useful for maintainers. It relies on
-# GNU make and gcc. It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
-
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
- cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
echo > $@
-include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
- @echo "mkdeps $< > $@"
- @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
- $(MKDEP) $< | sed "$$re" > $@-tmp
- @if test -n "$o"; then \
- sed 's/\.o:/$$o:/' $@-tmp > $@; \
- rm $@-tmp; \
- else \
- mv $@-tmp $@; \
- fi
-
-# End of maintainer-only section
-info:
-dvi:
+mostlyclean-depend:
-check: all
+clean-depend:
-installcheck:
+distclean-depend:
+maintainer-clean-depend:
+ -rm -rf .deps
+
+.deps/%.P: %.c
+ @echo "Computing dependencies for $<..."
+ @o='o'; \
+ test -n "$o" && o='$$o'; \
+ $(MKDEP) $< >[email protected] \
+ && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < [email protected] > $@ \
+info:
+dvi:
+check: all
+ $(MAKE)
+installcheck:
install-exec:
+ @$(NORMAL_INSTALL)
install-data:
+ @$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall:
-all: $(PROGRAMS) Makefile
+all: Makefile $(PROGRAMS)
install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+ $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
mostlyclean-generic:
- test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
- test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- rm -f Makefile $(DISTCLEANFILES)
- rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+ -rm -f Makefile $(DISTCLEANFILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
- test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-noinstPROGRAMS mostlyclean-compile \
- mostlyclean-tags mostlyclean-generic
+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-clean: clean-noinstPROGRAMS clean-compile clean-tags clean-generic \
- mostlyclean
+clean: clean-noinstPROGRAMS clean-compile clean-tags clean-depend \
+ clean-generic mostlyclean
distclean: distclean-noinstPROGRAMS distclean-compile distclean-tags \
- distclean-generic clean
- rm -f config.status
+ distclean-depend distclean-generic clean
+ -rm -f config.status
maintainer-clean: maintainer-clean-noinstPROGRAMS \
maintainer-clean-compile maintainer-clean-tags \
- maintainer-clean-generic distclean
+ maintainer-clean-depend maintainer-clean-generic \
+ distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -235,15 +296,14 @@ maintainer-clean: maintainer-clean-noinstPROGRAMS \
clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
$(PROGRAMS): ../mpi/libmpi.a ../cipher/libcipher.a
-.SUFFIXES:
-.SUFFIXES: .c .o
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/util/Makefile.am b/util/Makefile.am
index 222b4d876..8af2b148e 100644
--- a/util/Makefile.am
+++ b/util/Makefile.am
@@ -1,12 +1,12 @@
## Process this file with automake to produce Makefile.in
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I.. -I$(top_srcdir)/include
-noinst_LIBRARIES = util
+noinst_LIBRARIES = libutil.a
-util_SOURCES = logger.c fileutil.c miscutil.c strgutil.c \
- ttyio.c argparse.c memory.c secmem.c errors.c iobuf.c
+libutil_a_SOURCES = logger.c fileutil.c miscutil.c strgutil.c \
+ ttyio.c argparse.c memory.c secmem.c errors.c iobuf.c
diff --git a/util/Makefile.in b/util/Makefile.in
index 9ca5f0fd2..1f0135745 100644
--- a/util/Makefile.in
+++ b/util/Makefile.in
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
SHELL = /bin/sh
@@ -32,202 +38,248 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
-noinst_LIBRARIES = util
+INCLUDES = -I.. -I$(top_srcdir)/include
-util_SOURCES = logger.c fileutil.c miscutil.c strgutil.c \
- ttyio.c argparse.c memory.c secmem.c errors.c iobuf.c
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ../config.h
-LIBRARIES = $(noinst_LIBRARIES)
+noinst_LIBRARIES = libutil.a
-noinst_LIBFILES = libutil.a
+libutil_a_SOURCES = logger.c fileutil.c miscutil.c strgutil.c \
+ ttyio.c argparse.c memory.c secmem.c errors.c iobuf.c
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = ../config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-util_LIBADD =
-util_OBJECTS = logger.o fileutil.o miscutil.o strgutil.o ttyio.o \
+libutil_a_LIBADD =
+libutil_a_OBJECTS = logger.o fileutil.o miscutil.o strgutil.o ttyio.o \
argparse.o memory.o secmem.o errors.o iobuf.o
-EXTRA_util_SOURCES =
-LIBFILES = libutil.a
AR = ar
-RANLIB = @RANLIB@
-DIST_COMMON = Makefile.am Makefile.in
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON = Makefile.am Makefile.in
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
- $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
-DEP_FILES = $(srcdir)/.deps/argparse.P $(srcdir)/.deps/errors.P \
-$(srcdir)/.deps/fileutil.P $(srcdir)/.deps/iobuf.P \
-$(srcdir)/.deps/logger.P $(srcdir)/.deps/memory.P \
-$(srcdir)/.deps/miscutil.P $(srcdir)/.deps/secmem.P \
-$(srcdir)/.deps/strgutil.P $(srcdir)/.deps/ttyio.P
-SOURCES = $(util_SOURCES)
-OBJECTS = $(util_OBJECTS)
+GZIP = --best
+DEP_FILES = .deps/argparse.P .deps/errors.P .deps/fileutil.P \
+.deps/iobuf.P .deps/logger.P .deps/memory.P .deps/miscutil.P \
+.deps/secmem.P .deps/strgutil.P .deps/ttyio.P
+SOURCES = $(libutil_a_SOURCES)
+OBJECTS = $(libutil_a_OBJECTS)
default: all
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
- cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-Makefile: $(top_builddir)/config.status Makefile.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
mostlyclean-noinstLIBRARIES:
clean-noinstLIBRARIES:
- rm -f $(noinst_LIBFILES)
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
distclean-noinstLIBRARIES:
maintainer-clean-noinstLIBRARIES:
.c.o:
- $(COMPILE) $<
+ $(COMPILE) -c $<
+
+.s.o:
+ $(COMPILE) -c $<
+
+.S.o:
+ $(COMPILE) -c $<
mostlyclean-compile:
- rm -f *.o core
+ -rm -f *.o core
clean-compile:
distclean-compile:
- rm -f *.tab.c
+ -rm -f *.tab.c
maintainer-clean-compile:
-$(util_OBJECTS): ../config.h
-libutil.a: $(util_OBJECTS) $(util_LIBADD)
- rm -f libutil.a
- $(AR) cru libutil.a $(util_OBJECTS) $(util_LIBADD)
+libutil.a: $(libutil_a_OBJECTS) $(libutil_a_DEPENDENCIES)
+ -rm -f libutil.a
+ $(AR) cru libutil.a $(libutil_a_OBJECTS) $(libutil_a_LIBADD)
$(RANLIB) libutil.a
-ID: $(HEADERS) $(SOURCES)
- here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
-
tags: TAGS
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
- here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+ here=`pwd` && cd $(srcdir) \
+ && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
- rm -f TAGS ID
+ -rm -f TAGS ID
maintainer-clean-tags:
-subdir = util
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
- @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = util
+
+distdir: $(DISTFILES)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(top_distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu util/Makefile
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
test -f $(distdir)/$$file \
- || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file; \
done
-# This fragment is probably only useful for maintainers. It relies on
-# GNU make and gcc. It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
- cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
echo > $@
-include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
- @echo "mkdeps $< > $@"
- @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
- $(MKDEP) $< | sed "$$re" > $@-tmp
- @if test -n "$o"; then \
- sed 's/\.o:/$$o:/' $@-tmp > $@; \
- rm $@-tmp; \
- else \
- mv $@-tmp $@; \
- fi
-
-# End of maintainer-only section
-info:
-dvi:
+mostlyclean-depend:
-check: all
+clean-depend:
-installcheck:
+distclean-depend:
-install-exec:
+maintainer-clean-depend:
+ -rm -rf .deps
-install-data:
+.deps/%.P: %.c
+ @echo "Computing dependencies for $<..."
+ @o='o'; \
+ test -n "$o" && o='$$o'; \
+ $(MKDEP) $< >[email protected] \
+ && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < [email protected] > $@ \
+info:
+dvi:
+check: all
+ $(MAKE)
+installcheck:
+install-exec:
+ @$(NORMAL_INSTALL)
+
+install-data:
+ @$(NORMAL_INSTALL)
install: install-exec install-data all
@:
-uninstall:
+uninstall:
-all: $(LIBFILES) Makefile
+all: Makefile $(LIBRARIES)
install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+ $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
mostlyclean-generic:
- test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
- test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- rm -f Makefile $(DISTCLEANFILES)
- rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+ -rm -f Makefile $(DISTCLEANFILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
- test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \
- mostlyclean-tags mostlyclean-generic
+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-clean: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
- mostlyclean
+clean: clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
+ clean-generic mostlyclean
distclean: distclean-noinstLIBRARIES distclean-compile distclean-tags \
- distclean-generic clean
- rm -f config.status
+ distclean-depend distclean-generic clean
+ -rm -f config.status
maintainer-clean: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-tags \
- maintainer-clean-generic distclean
+ maintainer-clean-depend maintainer-clean-generic \
+ distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -235,13 +287,12 @@ maintainer-clean: maintainer-clean-noinstLIBRARIES \
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-.SUFFIXES:
-.SUFFIXES: .c .o
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/util/secmem.c b/util/secmem.c
index 097a71fe8..a08e24a6b 100644
--- a/util/secmem.c
+++ b/util/secmem.c
@@ -59,7 +59,7 @@ static unsigned max_alloced;
static unsigned cur_alloced;
static unsigned max_blocks;
static unsigned cur_blocks;
-
+static int disable_secmem;
static void
lock_pool( void *p, size_t n )
@@ -94,12 +94,15 @@ init_pool( size_t n)
{
poolsize = n;
+ if( disable_secmem )
+ log_bug("secure memory is disabled");
+
#if HAVE_MMAP && defined(MAP_ANONYMOUS)
poolsize = (poolsize + 4095) & ~4095;
pool = mmap( 0, poolsize, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
if( pool == (void*)-1 )
- log_error("can�t mmap pool of %u bytes: %s - using malloc\n",
+ log_error("can't mmap pool of %u bytes: %s - using malloc\n",
(unsigned)poolsize, strerror(errno));
else {
pool_is_mmapped = 1;
@@ -110,7 +113,7 @@ init_pool( size_t n)
if( !pool_okay ) {
pool = malloc( poolsize );
if( !pool )
- log_fatal("can�t allocate memory pool of %u bytes\n",
+ log_fatal("can't allocate memory pool of %u bytes\n",
(unsigned)poolsize);
else
pool_okay = 1;
@@ -131,12 +134,16 @@ compress_pool(void)
void
secmem_init( size_t n )
{
- if( n < DEFAULT_POOLSIZE )
- n = DEFAULT_POOLSIZE;
- if( !pool_okay )
- init_pool(n);
- else
- log_error("Oops, secure memory pool already initialized\n");
+ if( !n )
+ disable_secmem=1;
+ else {
+ if( n < DEFAULT_POOLSIZE )
+ n = DEFAULT_POOLSIZE;
+ if( !pool_okay )
+ init_pool(n);
+ else
+ log_error("Oops, secure memory pool already initialized\n");
+ }
}
@@ -235,6 +242,8 @@ secmem_term()
void
secmem_dump_stats()
{
+ if( disable_secmem )
+ return;
fprintf(stderr,
"secmem usage: %u/%u bytes in %u/%u blocks of pool %lu/%lu\n",
cur_alloced, max_alloced, cur_blocks, max_blocks,