summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cipher/ChangeLog8
-rw-r--r--cipher/Makefile.am2
-rw-r--r--cipher/Makefile.in12
-rw-r--r--cipher/gost.c235
-rw-r--r--cipher/misc.c1
-rw-r--r--cipher/random.c2
-rw-r--r--mpi/ChangeLog4
-rw-r--r--mpi/Makefile.am2
-rw-r--r--mpi/Makefile.in2
9 files changed, 23 insertions, 245 deletions
diff --git a/cipher/ChangeLog b/cipher/ChangeLog
index 333547cd..152d2341 100644
--- a/cipher/ChangeLog
+++ b/cipher/ChangeLog
@@ -1,3 +1,11 @@
+Mon Mar 2 19:21:46 1998 Werner Koch (wk@isil.d.shuttle.de)
+
+ * gost.c, gost.h: Removed because they did only conatin trash.
+
+Sun Mar 1 16:42:29 1998 Werner Koch (wk@isil.d.shuttle.de)
+
+ * random.c (fill_buffer): removed error message if n == -1.
+
Fri Feb 27 16:39:34 1998 Werner Koch (wk@isil.d.shuttle.de)
* md.c (md_enable): No init if called twice.
diff --git a/cipher/Makefile.am b/cipher/Makefile.am
index 2967363b..48478a21 100644
--- a/cipher/Makefile.am
+++ b/cipher/Makefile.am
@@ -10,8 +10,6 @@ libcipher_a_SOURCES = blowfish.c \
blowfish.h \
elgamal.c \
elgamal.h \
- gost.c \
- gost.h \
md5.c \
md5.h \
primegen.c \
diff --git a/cipher/Makefile.in b/cipher/Makefile.in
index 41898c6a..958b7d16 100644
--- a/cipher/Makefile.in
+++ b/cipher/Makefile.in
@@ -101,8 +101,6 @@ libcipher_a_SOURCES = blowfish.c \
blowfish.h \
elgamal.c \
elgamal.h \
- gost.c \
- gost.h \
md5.c \
md5.h \
primegen.c \
@@ -130,8 +128,8 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-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
+libcipher_a_OBJECTS = blowfish.o elgamal.o md5.o primegen.o random.o \
+rmd160.o sha1.o dsa.o md.o misc.o smallprime.o
AR = ar
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
@@ -143,9 +141,9 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
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
+DEP_FILES = .deps/blowfish.P .deps/dsa.P .deps/elgamal.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)
diff --git a/cipher/gost.c b/cipher/gost.c
index 04f49261..aaf2a8e1 100644
--- a/cipher/gost.c
+++ b/cipher/gost.c
@@ -30,280 +30,47 @@
#include "types.h"
#include "gost.h"
-
-
-static u16
-mul_inv( u16 x )
-{
- u16 t0, t1;
- u16 q, y;
-
- if( x < 2 )
- return x;
- t1 = 0x10001L / x;
- y = 0x10001L % x;
- if( y == 1 )
- return (1-t1) & 0xffff;
-
- t0 = 1;
- do {
- q = x / y;
- x = x % y;
- t0 += q * t1;
- if( x == 1 )
- return t0;
- q = y / x;
- y = y % x;
- t1 += q * t0;
- } while( y != 1 );
- return (1-t1) & 0xffff;
-}
-
-
-
-static void
-expand_key( byte *userkey, u16 *ek )
-{
- int i,j;
-
- for(j=0; j < 8; j++ ) {
- ek[j] = (*userkey << 8) + userkey[1];
- userkey += 2;
- }
- for(i=0; j < GOST_KEYLEN; j++ ) {
- i++;
- ek[i+7] = ek[i&7] << 9 | ek[(i+1)&7] >> 7;
- ek += i & 8;
- i &= 7;
- }
-}
-
-
-static void
-invert_key( u16 *ek, u16 dk[GOST_KEYLEN] )
-{
- int i;
- u16 t1, t2, t3;
- u16 temp[GOST_KEYLEN];
- u16 *p = temp + GOST_KEYLEN;
-
- t1 = mul_inv( *ek++ );
- t2 = -*ek++;
- t3 = -*ek++;
- *--p = mul_inv( *ek++ );
- *--p = t3;
- *--p = t2;
- *--p = t1;
-
- for(i=0; i < GOST_ROUNDS-1; i++ ) {
- t1 = *ek++;
- *--p = *ek++;
- *--p = t1;
-
- t1 = mul_inv( *ek++ );
- t2 = -*ek++;
- t3 = -*ek++;
- *--p = mul_inv( *ek++ );
- *--p = t3;
- *--p = t2;
- *--p = t1;
- }
- t1 = *ek++;
- *--p = *ek++;
- *--p = t1;
-
- t1 = mul_inv( *ek++ );
- t2 = -*ek++;
- t3 = -*ek++;
- *--p = mul_inv( *ek++ );
- *--p = t3;
- *--p = t2;
- *--p = t1;
- memcpy(dk, temp, sizeof(temp) );
- memset(temp, 0, sizeof(temp) ); /* burn temp */
-}
-
-
-static void
-cipher( byte *inbuf, byte *outbuf, u16 *key )
-{
- u16 x1, x2, x3,x4, s2, s3;
- u16 *in, *out;
- int r = GOST_ROUNDS;
- #define MUL(x,y) \
- do {u16 _t16; u32 _t32; \
- if( (_t16 = (y)) ) { \
- if( (x = (x)&0xffff) ) { \
- _t32 = (u32)x * _t16; \
- x = _t32 & 0xffff; \
- _t16 = _t32 >> 16; \
- x = ((x)-_t16) + (x<_t16?1:0); \
- } \
- else { \
- x = 1 - _t16; \
- } \
- } \
- else { \
- x = 1 - x; \
- } \
- } while(0)
-
- in = (u16*)inbuf;
- x1 = *in++;
- x2 = *in++;
- x3 = *in++;
- x4 = *in;
- #ifdef LITTLE_ENDIAN_HOST
- x1 = (x1>>8) | (x1<<8);
- x2 = (x2>>8) | (x2<<8);
- x3 = (x3>>8) | (x3<<8);
- x4 = (x4>>8) | (x4<<8);
- #endif
- do {
- MUL(x1, *key++);
- x2 += *key++;
- x3 += *key++;
- MUL(x4, *key++ );
-
- s3 = x3;
- x3 ^= x1;
- MUL(x3, *key++);
- s2 = x2;
- x2 ^=x4;
- x2 += x3;
- MUL(x2, *key++);
- x3 += x2;
-
- x1 ^= x2;
- x4 ^= x3;
-
- x2 ^= s3;
- x3 ^= s2;
- } while( --r );
- MUL(x1, *key++);
- x3 += *key++;
- x2 += *key++;
- MUL(x4, *key);
-
- out = (u16*)outbuf;
- #ifdef LITTLE_ENDIAN_HOST
- *out++ = (x1>>8) | (x1<<8);
- *out++ = (x3>>8) | (x3<<8);
- *out++ = (x2>>8) | (x2<<8);
- *out = (x4>>8) | (x4<<8);
- #else
- *out++ = x1;
- *out++ = x3;
- *out++ = x2;
- *out = x4;
- #endif
- #undef MUL
-}
+#error don't use this
void
gost_setkey( GOST_context *c, byte *key )
{
- expand_key( key, c->ek );
- invert_key( c->ek, c->dk );
}
void
gost_setiv( GOST_context *c, byte *iv )
{
- memcpy( c->iv, iv, GOST_BLOCKSIZE );
}
void
gost_encode( GOST_context *c, byte *outbuf, byte *inbuf, unsigned nblocks )
{
- unsigned n;
-
- for(n=0; n < nblocks; n++ ) {
- cipher( inbuf, outbuf, c->ek );
- inbuf += 8;
- outbuf += 8;
- }
}
void
gost_decode( GOST_context *c, byte *outbuf, byte *inbuf, unsigned nblocks )
{
- unsigned n;
-
- for(n=0; n < nblocks; n++ ) {
- cipher( inbuf, outbuf, c->dk );
- inbuf += 8;
- outbuf += 8;
- }
}
static void
cfbshift( byte *iv, byte *buf, unsigned count)
{
- unsigned n;
-
- if( count ) {
- for( n = GOST_BLOCKSIZE - count; n; n--, iv++ )
- *iv = iv[count];
- for( ; count; count-- )
- *iv++ = *buf++;
- }
}
-/****************
- * FIXME: Make use of bigger chunks
- */
-static void
-xorblock( byte *out, byte *a, byte *b, unsigned count )
-{
- for( ; count ; count--, a++, b++ )
- *out++ = *a ^ *b ;
-}
-
void
gost_encode_cfb( GOST_context *c, byte *outbuf, byte *inbuf, unsigned nbytes)
{
- byte temp[GOST_BLOCKSIZE];
-
- while( nbytes >= GOST_BLOCKSIZE ) {
- cipher( c->iv, temp, c->ek );
- xorblock( outbuf, inbuf, temp, GOST_BLOCKSIZE);
- cfbshift( c->iv, outbuf, GOST_BLOCKSIZE );
- nbytes -= GOST_BLOCKSIZE;
- inbuf += GOST_BLOCKSIZE;
- outbuf += GOST_BLOCKSIZE;
- }
- if( nbytes ) {
- cipher( c->iv, temp, c->ek );
- xorblock( outbuf, inbuf, temp, nbytes );
- cfbshift( c->iv, outbuf, nbytes );
- }
}
void
gost_decode_cfb( GOST_context *c, byte *outbuf, byte *inbuf, unsigned nbytes)
{
- byte temp[GOST_BLOCKSIZE];
-
- while( nbytes >= GOST_BLOCKSIZE ) {
- cipher( c->iv, temp, c->ek );
- cfbshift( c->iv, inbuf, GOST_BLOCKSIZE );
- xorblock( outbuf, inbuf, temp, GOST_BLOCKSIZE);
- nbytes -= GOST_BLOCKSIZE;
- inbuf += GOST_BLOCKSIZE;
- outbuf += GOST_BLOCKSIZE;
- }
- if( nbytes ) {
- cipher( c->iv, temp, c->ek );
- cfbshift( c->iv, inbuf, nbytes );
- xorblock( outbuf, inbuf, temp, nbytes );
- }
}
diff --git a/cipher/misc.c b/cipher/misc.c
index 4fe7450d..937aa61f 100644
--- a/cipher/misc.c
+++ b/cipher/misc.c
@@ -36,7 +36,6 @@ static struct { const char *name; int algo;} cipher_names[] = {
{ "SAFER_SK128", CIPHER_ALGO_SAFER_SK128 },
{ "DES_SK", CIPHER_ALGO_DES_SK },
{ "BLOWFISH", CIPHER_ALGO_BLOWFISH },
- { "GOST", CIPHER_ALGO_GOST },
{NULL} };
static struct { const char *name; int algo;} pubkey_names[] = {
diff --git a/cipher/random.c b/cipher/random.c
index 635c40a4..2f11df7c 100644
--- a/cipher/random.c
+++ b/cipher/random.c
@@ -157,7 +157,7 @@ fill_buffer( byte *buffer, size_t length, int level )
assert( length < 200 );
do {
n = read(fd, buffer, length );
- if( n > length ) {
+ if( n >= 0 && n > length ) {
log_error("bogus read from random device (n=%d)\n", n );
n = length;
}
diff --git a/mpi/ChangeLog b/mpi/ChangeLog
index 4c79cc27..ddcfce75 100644
--- a/mpi/ChangeLog
+++ b/mpi/ChangeLog
@@ -1,3 +1,7 @@
+Mon Mar 2 19:29:00 1998 Werner Koch (wk@isil.d.shuttle.de)
+
+ * Makefile.am (DISTCLEANFILES): New
+
Thu Feb 26 06:48:54 1998 Werner Koch (wk@isil.d.shuttle.de)
* config.links (X86_BROKEN_ALIGN): Added for some systems.
diff --git a/mpi/Makefile.am b/mpi/Makefile.am
index 759b33b1..e7a50d28 100644
--- a/mpi/Makefile.am
+++ b/mpi/Makefile.am
@@ -6,6 +6,8 @@ CFLAGS += -O2
SUFFIXES = .S .s
EXTRA_DIST = config.links
+DISTCLEANFILES = mpih-add1.S mpih-mul1.S mpih-mul2.S mpih-mul3.S \
+ mpih-shift.S mpih-sub1.S asm-syntax.h sysdep.h
noinst_LIBRARIES = libmpi.a
diff --git a/mpi/Makefile.in b/mpi/Makefile.in
index 831f2303..c0db398a 100644
--- a/mpi/Makefile.in
+++ b/mpi/Makefile.in
@@ -97,6 +97,8 @@ INCLUDES = -I$(top_srcdir)/include
SUFFIXES = .S .s
EXTRA_DIST = config.links
+DISTCLEANFILES = mpih-add1.S mpih-mul1.S mpih-mul2.S mpih-mul3.S \
+ mpih-shift.S mpih-sub1.S asm-syntax.h sysdep.h
noinst_LIBRARIES = libmpi.a
# noinst_HEADERS =