release 0.2.3
authorWerner Koch <wk@gnupg.org>
Mon, 9 Feb 1998 17:43:40 +0000 (17:43 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 9 Feb 1998 17:43:40 +0000 (17:43 +0000)
13 files changed:
Makefile.am
README
acconfig.h
acinclude.m4
cipher/elgamal.c
cipher/elgamal.h
cipher/md.c
cipher/primegen.c
cipher/random.c
configure.in
mpi/Makefile.am
mpi/Makefile.in
scripts/distfiles

index dea36e9..dbc888c 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS =  util mpi cipher tools g10
+SUBDIRS =  intl po util mpi cipher tools g10
 EXTRA_DIST = VERSION
 
 
diff --git a/README b/README
index c2a0fd0..91d3ac9 100644 (file)
--- a/README
+++ b/README
@@ -10,9 +10,6 @@
 
     * Some features are not yet implemented
 
-    PLEASE USE "--no-armor" BECAUSE THERE IS STILL A BUG IN IT!
-    (put it into the option file)
-
 
     Please subscribe to g10@net.lut.ac.uk by sending a mail with
     the word "subscribe" in the body to "g10-request@net.lut.ac.uk".
index f8ddcd5..11096ee 100644 (file)
 /* Define as 1 if you have gettext and don't want to use GNU gettext.  */
 #undef HAVE_GETTEXT
 
+/* libintl.h is available; this is obsolete because if we don't have
+ * this header we use a symlink to the one in intl/ */
+#undef HAVE_LIBINTL_H
+
+
 #undef HAVE_STPCPY
 
 
index 5b9d355..9c1486c 100644 (file)
@@ -61,7 +61,7 @@ AC_DEFUN(ud_WITH_NLS,
        CATOBJEXT=NONE
 
        dnl Debian 1.3.1 does not have libintl.h but libintl.a
-       AC_CHECK_HEADERS(libintl.h)
+       AC_CHECK_HEADER(libintl.h, [ AC_DEFINE(HAVE_LIBINTL_H) ])
        if    test "$ac_cv_lib_intl_main" = yes \
           && test "$ac_cv_header_libintl_h" != "yes" ; then
            nls_cv_use_gnu_gettext=yes
@@ -98,7 +98,7 @@ AC_DEFUN(ud_WITH_NLS,
                   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_intl=libintl.h
                   nls_cv_header_libgt=intl/libgettext.h
                 fi])
            fi
@@ -124,7 +124,7 @@ AC_DEFUN(ud_WITH_NLS,
        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_intl=libintl.h
        nls_cv_header_libgt=intl/libgettext.h
       fi
 
@@ -133,7 +133,7 @@ AC_DEFUN(ud_WITH_NLS,
       POSUB=po
     else
       DATADIRNAME=share
-      nls_cv_header_intl=intl/libintl.h
+      nls_cv_header_intl=libintl.h
       nls_cv_header_libgt=intl/libgettext.h
     fi
 
@@ -271,8 +271,8 @@ AC_DEFUN(WK_CHECK_TYPEDEF,
 
 
 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 same as AC_LINK_FILES, but collect the files to link in
+dnl some special variables and do the link
 dnl when WK_DO_LINK_FILES is called
 dnl This is a workaround for AC_LINK_FILES, because it does not work
 dnl correct when using a caching scheme
index 9e6805d..5e6bd0c 100644 (file)
@@ -113,9 +113,11 @@ gen_k( MPI p )
 /****************
  * Generate a key pair with a key of size NBITS
  * Returns: 2 structures filles with all needed values
+ *         and an array with n-1 factors of (p-1)
  */
 void
-elg_generate( ELG_public_key *pk, ELG_secret_key *sk, unsigned nbits )
+elg_generate( ELG_public_key *pk, ELG_secret_key *sk,
+             unsigned nbits, MPI **ret_factors )
 {
     MPI p;    /* the prime */
     MPI p_min1;
@@ -136,7 +138,7 @@ elg_generate( ELG_public_key *pk, ELG_secret_key *sk, unsigned nbits )
     else
        qbits = 240;
     g = mpi_alloc(1);
-    p = generate_elg_prime( nbits, qbits, g );
+    p = generate_elg_prime( nbits, qbits, g, ret_factors );
     mpi_sub_ui(p_min1, p, 1);
 
 
index 15121f5..26af1a0 100644 (file)
@@ -39,7 +39,8 @@ typedef struct {
 
 void elg_free_public_key( ELG_public_key *pk );
 void elg_free_secret_key( ELG_secret_key *sk );
-void elg_generate( ELG_public_key *pk, ELG_secret_key *sk, unsigned nbits );
+void elg_generate( ELG_public_key *pk, ELG_secret_key *sk,
+                               unsigned nbits, MPI **factors );
 int  elg_check_secret_key( ELG_secret_key *sk );
 void elg_encrypt(MPI a, MPI b, MPI input, ELG_public_key *pkey );
 void elg_decrypt(MPI output, MPI a, MPI b, ELG_secret_key *skey );
index 221cf71..c89c8bb 100644 (file)
@@ -28,6 +28,8 @@
 #include "errors.h"
 
 
+static FILE *dumpfp;
+
 /****************
  * Open a message digest handle for use with algorithm ALGO.
  * More algorithms may be added by md_enable(). The initial algorithm
@@ -38,6 +40,12 @@ md_open( int algo, int secure )
 {
     MD_HANDLE hd;
 
+    if( !dumpfp )
+       dumpfp = fopen("md.out", "w");
+    if( !dumpfp )
+       BUG();
+    { int i; for(i=0; i < 16; i++ ) putc('\xff', dumpfp ); }
+
     hd = secure ? m_alloc_secure_clear( sizeof *hd )
                : m_alloc_clear( sizeof *hd );
     if( algo )
@@ -70,6 +78,7 @@ md_copy( MD_HANDLE a )
 {
     MD_HANDLE b;
 
+    { int i; for(i=0; i < 16; i++ ) putc('\xee', dumpfp ); }
     b = m_is_secure(a)? m_alloc_secure( sizeof *b )
                      : m_alloc( sizeof *b );
     memcpy( b, a, sizeof *a );
@@ -89,6 +98,10 @@ md_close(MD_HANDLE a)
 void
 md_write( MD_HANDLE a, byte *inbuf, size_t inlen)
 {
+    if( a->bufcount && fwrite(a->buffer, a->bufcount, 1, dumpfp ) != 1 )
+       BUG();
+    if( inlen && fwrite(inbuf, inlen, 1, dumpfp ) != 1 )
+       BUG();
     if( a->use_rmd160 ) {
        rmd160_write( &a->rmd160, a->buffer, a->bufcount );
        rmd160_write( &a->rmd160, inbuf, inlen  );
@@ -111,6 +124,7 @@ md_final(MD_HANDLE a)
 {
     if( a->bufcount )
        md_write( a, NULL, 0 );
+    { int i; for(i=0; i < 16; i++ ) putc('\xcc', dumpfp ); }
     if( a->use_rmd160 ) {
        byte *p;
        rmd160_final( &a->rmd160 );
index 9d91ae4..3a2a91f 100644 (file)
@@ -65,12 +65,12 @@ generate_public_prime( unsigned  nbits )
  * indeed a strong prime.
  */
 MPI
-generate_elg_prime( unsigned pbits, unsigned qbits, MPI g )
+generate_elg_prime( unsigned pbits, unsigned qbits, MPI g, MPI **ret_factors )
 {
     int n;  /* number of factors */
     int m;  /* number of primes in pool */
     unsigned fbits; /* length of prime factors */
-    MPI *factors; /* curent factors */
+    MPI *factors; /* current factors */
     MPI *pool; /* pool of primes */
     MPI q;     /* first prime factor */
     MPI prime; /* prime test value */
@@ -167,7 +167,6 @@ generate_elg_prime( unsigned pbits, unsigned qbits, MPI g )
            count2 = 0;
     } while( !(nprime == pbits && check_prime( prime )) );
 
-
     if( DBG_CIPHER ) {
        putc('\n', stderr);
        log_mpidump( "prime    : ", prime );
@@ -180,6 +179,12 @@ generate_elg_prime( unsigned pbits, unsigned qbits, MPI g )
        putc('\n', stderr);
     }
 
+    if( ret_factors ) { /* caller wants the factors */
+       *ret_factors = m_alloc_clear( (n+1) * sizeof **ret_factors );
+       for(i=0; i < n; i++ )
+           (*ret_factors)[i] = mpi_copy( factors[i] );
+    }
+
     if( g ) { /* create a generator (start with 3)*/
        MPI tmp   = mpi_alloc( mpi_get_nlimbs(prime) );
        MPI b     = mpi_alloc( mpi_get_nlimbs(prime) );
index ac98f54..26777aa 100644 (file)
@@ -144,8 +144,9 @@ fill_buffer( byte *buffer, size_t length, int level )
        if( !(rc=select(fd+1, &rfds, NULL, NULL, &tv)) ) {
            if( !warn )
                tty_printf( _(
-"\nNot enough random bytes available.  Please do some other work to give
-the OS a chance to collect more entropy! (Need %d more bytes)\n"), length );
+"\n"
+"Not enough random bytes available.  Please do some other work to give\n"
+"the OS a chance to collect more entropy! (Need %d more bytes)\n"), length );
            warn = 1;
            continue;
        }
index c7fe37b..747d7cd 100644 (file)
@@ -5,9 +5,6 @@ dnl (Process this file with autoconf to produce a configure script.)
 
 AC_INIT(g10/g10.c)
 AC_CONFIG_AUX_DIR(scripts)
-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 -I.. to
-dnl       every Makefile.am
 AM_CONFIG_HEADER(config.h)
 
 
@@ -25,13 +22,10 @@ fi
 VERSION=`cat $srcdir/VERSION`
 PACKAGE=g10
 ALL_LINGUAS="de"
-G10_LOCALEDIR="$g10_prefix/share/locale"
 AC_SUBST(VERSION)
 AC_SUBST(PACKAGE)
-AC_SUBST(G10_LOCALEDIR)
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
-AC_DEFINE_UNQUOTED(G10_LOCALEDIR, "$G10_LOCALEDIR")
 
 AC_ARG_ENABLE(m-debug,
 [  --enable-m-debug      Enable debugging of memory allocation])
@@ -91,10 +85,12 @@ dnl Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS(unistd.h)
 
-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])
+AM_GNU_GETTEXT
+G10_LOCALEDIR="$g10_prefix/$DATADIRNAME/locale"
+AC_SUBST(G10_LOCALEDIR)
+AC_DEFINE_UNQUOTED(G10_LOCALEDIR, "$G10_LOCALEDIR")
 
+WK_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl )
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -193,6 +189,13 @@ fi
 AC_SUBST(CIPHER_EXTRA_OBJS)
 AC_SUBST(CIPHER_EXTRA_DIST)
 
+dnl
+dnl If no gettext is found, default to gnu gettext
+dnl
+if test x$ac_cv_func_gettext = xno; then
+    LIBS="$LIBS -lintl -L\$(topbuilddir)/intl"
+fi
+
 
 WK_DO_LINK_FILES
 
index 3c4995c..1c32e13 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-INCLUDES = -I..  -I$(top_srcdir)/include
+INCLUDES =  -I$(top_srcdir)/include
 CFLAGS += -O2
 
 SUFFIXES = .S .s
index c9ae7cf..aae7160 100644 (file)
@@ -86,7 +86,7 @@ POSUB = @POSUB@
 RANLIB = @RANLIB@
 VERSION = @VERSION@
 
-INCLUDES = -I..  -I$(top_srcdir)/include
+INCLUDES =  -I$(top_srcdir)/include
 
 SUFFIXES = .S .s
 
index f048185..c6a8d74 100644 (file)
@@ -3,3 +3,4 @@ config.sub
 install-sh
 mkinstalldirs
 mkdiff
+missing