See ChangeLog: Tue Dec 29 14:41:47 CET 1998 Werner Koch
authorWerner Koch <wk@gnupg.org>
Tue, 29 Dec 1998 13:47:17 +0000 (13:47 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 29 Dec 1998 13:47:17 +0000 (13:47 +0000)
16 files changed:
AUTHORS
THANKS
cipher/ChangeLog
cipher/dynload.c
cipher/random.c
cipher/rndunix.c
configure.in
src/Makefile.am [new file with mode: 0644]
src/g10lib.h [new file with mode: 0644]
src/gcrypt.h
src/global.c [new file with mode: 0644]
src/mdapi.c [new file with mode: 0644]
src/misc.c [new file with mode: 0644]
src/mpiapi.c
src/pkapi.c [new file with mode: 0644]
src/symapi.c [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
index 10793a0..94f4799 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -56,14 +56,18 @@ TRANSLATIONS        Thiago Jung Bauermann ????????????????
 pt_BR.po
 
 
+TRANSLATIONS   Janusz A. Urbanowicz  ???????????
+pl.po
+
+
 
 Other notes:
 ============
 This program uses the zlib compression library written by
 Jean-loup Gailly and Mark Adler.
 
-Most of the stuff in mpi has been taken from the GMP library.
-[Who is the author??]
+Most of the stuff in mpi has been taken from the GMP library by
+Torbjorn Granlund <tege@noisy.tmg.se>.
 
 The keybox implementation is based on GDBM 1.7.3 by Philip A. Nelson.
 
diff --git a/THANKS b/THANKS
index d0f66e1..5df018e 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -13,6 +13,7 @@ Cees van de Griend    cees-list@griend.xs4all.nl
 Charles Levert         charles@comm.polymtl.ca
 Christian von Roques   roques@pond.sub.org
 Christopher Oliver     oliver@fritz.traverse.net
+Christian Recktenwald  chris@citecs.de
 Daniel Eisenbud        eisenbud@cs.swarthmore.edu
 David Ellement         ellement@sdd.hp.com
 Detlef Lannert         lannert@lannert.rz.uni-duesseldorf.de
@@ -27,10 +28,12 @@ Greg Louis          glouis@dynamicro.on.ca
 Greg Troxel            gdt@ir.bbn.com
 Gregory Steuck         steuck@iname.com
 Geoff Keating          geoffk@ozemail.com.au
+Harald Denker          harry@hal.westfalen.de
 Hendrik Buschkamp      buschkamp@rheumanet.org
 Holger Schurig         holger@d.om.org
 Hugh Daniel            hugh@toad.com
 Ian McKellar           imckellar@harvestroad.com.au
+Janusz A. Urbanowicz   alex@bofh.torun.pl
 James Troup            james@nocrew.org
 Jean-loup Gailly       gzip@prep.ai.mit.edu
 Jens Bachem            bachem@rrz.uni-koeln.de
@@ -77,7 +80,7 @@ Tomas Fasth           tomas.fasth@twinspot.net
 Thomas Mikkelsen       tbm@image.dk
 Ulf Möller             3umoelle@informatik.uni-hamburg.de
 Urko Lusa              ulusa@lacueva.ddns.org
-Walter Koch            walterk@ddorf.rhein-ruhr.de
+Walter Koch            walterk@dip.de
 Werner Koch            werner.koch@guug.de
 Wim Vandeputte         bunbun@reptile.rug.ac.be
                        nbecker@hns.com
index 20abfc7..edce2b0 100644 (file)
@@ -1,3 +1,8 @@
+Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
+
+       * random.c: add unistd.h for getpid().
+       (RAND_MAX): Fallback value for Sun.
+
 Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
 
        * md.c (md_copy): Reset debug.
index 220f916..6b9263e 100644 (file)
@@ -126,7 +126,7 @@ register_cipher_extension( const char *mainpgm, const char *fname )
     intex = NULL;
     for(r = extensions; r; r = r->next ) {
        if( !compare_filenames(r->name, el->name) ) {
-           log_info("extension '%s' already registered\n", el->name );
+           log_info("extension `%s' already registered\n", el->name );
            m_free(el);
            return;
        }
@@ -162,7 +162,7 @@ register_internal_cipher_extension(
     /* check that it is not already registered */
     for(r = extensions; r; r = r->next ) {
        if( !compare_filenames(r->name, el->name) ) {
-           log_info("extension '%s' already registered\n", el->name );
+           log_info("extension `%s' already registered\n", el->name );
            m_free(el);
            return;
        }
index d57cd07..6f8a20a 100644 (file)
@@ -35,6 +35,7 @@
 #include <sys/time.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <unistd.h>
 #ifdef HAVE_GETHRTIME
   #include <sys/times.h>
 #endif
 #include "dynload.h"
 
 
+#ifndef RAND_MAX   /* for SunOS */
+  #define RAND_MAX 32767
+#endif
+
+
 #if SIZEOF_UNSIGNED_LONG == 8
   #define ADD_VALUE 0xa5a5a5a5a5a5a5a5
 #elif SIZEOF_UNSIGNED_LONG == 4
index a4d3bdb..a44d095 100644 (file)
@@ -560,7 +560,7 @@ start_gatherer( int pipefd )
        if( s ) {
            dbgfp = (*s=='-' && !s[1])? stdout : fopen(s, "a");
            if( !dbgfp )
-               g10_log_info("can't open debug file '%s': %s\n",
+               g10_log_info("can't open debug file `%s': %s\n",
                             s, strerror(errno) );
            else
                fprintf(dbgfp,"\nSTART RNDUNIX DEBUG pid=%d\n", (int)getpid());
index acadc9e..69f8db6 100644 (file)
@@ -14,7 +14,7 @@ AM_CONFIG_HEADER(config.h)
 
 VERSION=`cat $srcdir/VERSION`
 PACKAGE=gnupg
-ALL_LINGUAS="de it fr ru es_ES pt_BR"
+ALL_LINGUAS="de es_ES fr it pl pt_BR ru"
 AC_SUBST(VERSION)
 AC_SUBST(PACKAGE)
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..b000ecc
--- /dev/null
@@ -0,0 +1,18 @@
+## Process this file with automake to produce Makefile.in
+
+INCLUDES =  -I$(top_srcdir)/include -I$(top_srcdir)/intl
+
+LIBRARIES = libgcrypt.a
+
+SOURCES =   gcrypt.h \
+           g10lib.h \
+           misc.c  \
+           global.c \
+           mpiapi.c \
+           symapi.c \
+           mdapi.c \
+           pkapi.c \
+
+
+
+
diff --git a/src/g10lib.h b/src/g10lib.h
new file mode 100644 (file)
index 0000000..13bdf02
--- /dev/null
@@ -0,0 +1,44 @@
+/* g10lib.h -  internal defintions for libgcrypt
+ *     Copyright (C) 1998 Free Software Foundation, Inc.
+ *
+ * This file is part of GnuPG.
+ *
+ * GnuPG 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.
+ *
+ * GnuPG 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
+ */
+
+#ifndef G10LIB_H
+#define G10LIB_H 1
+
+#ifdef _GCRYPT_H
+  #error  gcrypt.h already included
+#endif
+
+#include "gcrypt.h"
+
+#ifdef G10_I18N_H
+  #error i18n should not be included here
+#endif
+
+#define _(a)  g10_gettext(a)
+#define N_(a) (a)
+
+/*-- misc.c --*/
+int set_lasterr( int ec );
+int fatal_invalid_arg(const char *text);
+
+
+
+
+#endif /* G10LIB_H */
index 410fbfc..bd3d606 100644 (file)
@@ -27,19 +27,29 @@ extern "C" {
 
 /*******************************************
  *                                        *
- *  error handling                        *
+ *  error handling etc.                   *
  *                                        *
  *******************************************/
 
 enum {
-    GCRYERR_SUCCESS = 0,
-    GCRYERR_INV_OP = 1,     /* inavlid operation code */
-    GCRYERR_GENERAL = 2
+    GCRYERR_SUCCESS = 0,    /* "no error" */
+    GCRYERR_GENERAL = 1
+    GCRYERR_INV_OP = 2,     /* inavlid operation code or ctl command */
+    GCRYERR_NOMEM = 3,
 };
 
 
 const char *gcry_strerror( int ec );
 
+enum gcry_ctl_cmds {
+    GCRYCTL_SET_KEY  = 1,
+    GCRYCTL_SET_IV   = 2,
+    GCRYCTL_CFB_SYNC = 3,
+};
+
+int gcry_control( enum gcry_ctl_cmds, ... );
+
+
 /*******************************************
  *                                        *
  *  multi precision integer functions     *
@@ -118,16 +128,28 @@ void g10m_set_buffer( MPI a, const char *buffer, unsigned nbytes, int sign );
 struct gcry_cipher_context;
 typedef struct gcry_cipher_context *GCRY_CIPHER_HD;
 
-enum {
-    GCRY_CIPHER_NONE       = 0
-    GCRY_CIPHER_IDEA       = 1
-    GCRY_CIPHER_3DES       = 2
-    GCRY_CIPHER_CAST5      = 3
-    GCRY_CIPHER_BLOWFISH    = 4
-    GCRY_CIPHER_SAFER_SK128 = 5
+enum gcry_cipher_algos {
+    GCRY_CIPHER_NONE       = 0,
+    GCRY_CIPHER_IDEA       = 1,
+    GCRY_CIPHER_3DES       = 2,
+    GCRY_CIPHER_CAST5      = 3,
+    GCRY_CIPHER_BLOWFISH    = 4,
+    GCRY_CIPHER_SAFER_SK128 = 5,
     GCRY_CIPHER_DES_SK     = 6
 };
 
+enum gcry_cipher_modes {
+    GCRY_CIPHER_MODE_NONE   = 0,
+    GCRY_CIPHER_MODE_ECB    = 1,
+    GCRY_CIPHER_MODE_CFB    = 2,
+};
+
+enum gcry_cipher_flags {
+    GCRY_CIPHER_SECURE     = 1,  /* allocate in secure memory */
+    GCRY_CIPHER_ENABLE_SYNC = 2,  /* enable CFB sync mode */
+};
+
+
 int gcry_string_to_cipher_algo( const char *string );
 const char * gcry_cipher_algo_to_string( int algo );
 int gcry_check_cipher_algo( int algo );
@@ -136,17 +158,21 @@ unsigned gcry_cipher_get_blocksize( int algo );
 
 GCRY_CIPHER_HD gcry_cipher_open( algo, int mode, int secure );
 void gcry_cipher_close( GCRY_CIPHER_HD h );
-int  gcry_cipher_setkey( GCRY_CIPHER_HD h, byte *key, unsigned keylen );
-void gcry_cipher_setiv( GCRY_CIPHER_HD h, const byte *iv );
+int  gcry_cipher_ctl( GCRY_CIPHER_HD h, int cmd, byte *buffer, size_t buflen);
 
-/* fixme: don't assume sizeof(in) == sizeof(out) */
-void gcry_cipher_encrypt( GCRY_CIPHER_HD h,
-                         byte *out, byte *in, unsigned nbytes );
+int gcry_cipher_encrypt( GCRY_CIPHER_HD h,
+                         byte *out, size_t outsize, byte *in, size_t inlen );
 void gcry_cipher_decrypt( GCRY_CIPHER_HD h,
                          byte *out, byte *in, unsigned nbytes );
 
-/* fixme: replace sync with a more general call */
-void gcry_cipher_sync( GCRY_CIPHER_HD h );
+
+/* some handy macros */
+#define gcry_cipher_setkey(h,k,l)  gcry_cipher_ctl( (h), GCRYCTL_SET_KEY, \
+                                                                 (k), (l) )
+#define gcry_cipher_setiv(h,k,l)  gcry_cipher_ctl( (h), GCRYCTL_SET_IV, \
+                                                                 (k), (l) )
+#define gcry_cipher_sync(h)  gcry_cipher_ctl( (h), GCRYCTL_CFB_SYNC, \
+                                                                  NULL, 0 )
 
 
 /*********************************************
diff --git a/src/global.c b/src/global.c
new file mode 100644 (file)
index 0000000..ec2c8e6
--- /dev/null
@@ -0,0 +1,43 @@
+/* global.c  - global control functions
+ *     Copyright (C) 1998 Free Software Foundation, Inc.
+ *
+ * This file is part of GnuPG.
+ *
+ * GnuPG 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.
+ *
+ * GnuPG 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#include "g10lib.h"
+
+
+
+int
+gcry_control( enum gcry_ctl_cmds cmd, ... )
+{
+    switch( cmd ) {
+      case GCRYCTL_NO_MEM_IS_FATAL:
+       break;
+      case GCRYCTL_SET_FATAL_FNC:
+       break;
+    }
+}
+
+
diff --git a/src/mdapi.c b/src/mdapi.c
new file mode 100644 (file)
index 0000000..8c1a634
--- /dev/null
@@ -0,0 +1,31 @@
+/* mdapi.c  -  message digest function interface
+ *     Copyright (C) 1998 Free Software Foundation, Inc.
+ *
+ * This file is part of GnuPG.
+ *
+ * GnuPG 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.
+ *
+ * GnuPG 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#include "g10lib.h"
+
+
+
diff --git a/src/misc.c b/src/misc.c
new file mode 100644 (file)
index 0000000..1581d1b
--- /dev/null
@@ -0,0 +1,38 @@
+/* misc.c  -  symmetric cipher function interface
+ *     Copyright (C) 1998 Free Software Foundation, Inc.
+ *
+ * This file is part of GnuPG.
+ *
+ * GnuPG 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.
+ *
+ * GnuPG 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#include "g10lib.h"
+
+
+const char *
+g10_gettext( const char *key )
+{
+    /* switch the domain to gnupg and restore later */
+    return key;
+}
+
+
index 974e5db..041d34c 100644 (file)
@@ -1,4 +1,4 @@
-/* mpiapi.ac  -  MPI function interface
+/* mpiapi.a  - MPI function interface
  *     Copyright (C) 1998 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
 #include <stdarg.h>
 #include <assert.h>
 
-#ifdef _GCRYPT_H
-  #error  gcrypt.h already in libc
-#endif
-
 #define GCRYPT_NO_MPI_MACROS 1
-#include "gcrypt.h"
+#include "g10lib.h"
 #include "mpi.h"
 
 
diff --git a/src/pkapi.c b/src/pkapi.c
new file mode 100644 (file)
index 0000000..e3d900a
--- /dev/null
@@ -0,0 +1,31 @@
+/* pkapi.c  -  public key function interface
+ *     Copyright (C) 1998 Free Software Foundation, Inc.
+ *
+ * This file is part of GnuPG.
+ *
+ * GnuPG 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.
+ *
+ * GnuPG 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#include "g10lib.h"
+
+
+
diff --git a/src/symapi.c b/src/symapi.c
new file mode 100644 (file)
index 0000000..9a375eb
--- /dev/null
@@ -0,0 +1,77 @@
+/* symapi.c  - symmetric cipher function interface
+ *     Copyright (C) 1998 Free Software Foundation, Inc.
+ *
+ * This file is part of GnuPG.
+ *
+ * GnuPG 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.
+ *
+ * GnuPG 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#include "g10lib.h"
+#include "cipher.h"
+
+
+#define CONTEXT_MAGIC = 0x12569afe;
+
+struct gcry_cipher_context {
+    u32 magic;
+    unsigned flags;
+    CIPHER_HD *hd;
+};
+
+
+GCRY_CIPHER_HD
+gcry_cipher_open( int algo, int mode, unsigned flags )
+{
+    GCRY_CIPHER_HD hd;
+
+    hd = m_lib_alloc_clear( sizeof *hd );
+    if( !hd ) {
+       set_lasterr( GCRYERR_NOMEM );
+       return NULL;
+    }
+
+    /* check whether the algo is available */
+
+    /* setup a context */
+
+    /* return the handle */
+}
+
+
+void
+gcry_cipher_close( GCRY_CIPHER_HD h )
+{
+    if( !h )
+       return;
+    if( h->magic != CONTEXT_MAGIC )  {
+       fatal_invalid_arg("gcry_cipher_close: already closed/invalid handle");
+       return;
+    }
+    cipher_close( h->hd );
+    h->magic = 0;
+    m_lib_free(h);
+}
+
+int  gcry_cipher_ctl( GCRY_CIPHER_HD h, int cmd, byte *buffer, size_t buflen)
+{
+}
+