1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-05-24 16:43:28 +02:00

patch release 0.1.1

This commit is contained in:
Werner Koch 1998-01-07 11:07:05 +00:00
parent 0d9ffec5ef
commit cf783fe54c
10 changed files with 143 additions and 141 deletions

View File

@ -1,7 +1,7 @@
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
SUBDIRS = util mpi cipher tools g10 SUBDIRS = util mpi cipher tools g10
EXTRA_DIST = EXTRA_DIST = VERSION

View File

@ -39,7 +39,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@ transform = @program_transform_name@
SUBDIRS = util mpi cipher tools g10 SUBDIRS = util mpi cipher tools g10
EXTRA_DIST = EXTRA_DIST = VERSION
ACCONFIG = acconfig.h ACCONFIG = acconfig.h
CONFIG_HEADER_IN = config.h.in CONFIG_HEADER_IN = config.h.in
mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs

1
VERSION Normal file
View File

@ -0,0 +1 @@
0.1.1

View File

@ -1,6 +1,7 @@
## Process this file with automake to produce Makefile.in ## 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 = cipher
@ -21,9 +22,9 @@ cipher_SOURCES = blowfish.c \
sha1.c \ sha1.c \
dsa.h \ dsa.h \
dsa.c \ dsa.c \
rsa.c \
rsa.h \
md.c \ md.c \
smallprime.c smallprime.c
cipher_LIBADD = @CIPHER_EXTRA_OBJS@

View File

@ -39,6 +39,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@ transform = @program_transform_name@
INCLUDES = -I$(top_srcdir)/include INCLUDES = -I$(top_srcdir)/include
EXTRA_DIST = @CIPHER_EXTRA_DIST@
noinst_LIBRARIES = cipher noinst_LIBRARIES = cipher
@ -58,10 +59,10 @@ cipher_SOURCES = blowfish.c \
sha1.c \ sha1.c \
dsa.h \ dsa.h \
dsa.c \ dsa.c \
rsa.c \
rsa.h \
md.c \ md.c \
smallprime.c smallprime.c
cipher_LIBADD = @CIPHER_EXTRA_OBJS@
mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
CONFIG_HEADER = ../config.h CONFIG_HEADER = ../config.h
LIBRARIES = $(noinst_LIBRARIES) LIBRARIES = $(noinst_LIBRARIES)
@ -80,9 +81,8 @@ LIBS = @LIBS@
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(LDFLAGS) -o $@ LINK = $(CC) $(LDFLAGS) -o $@
cipher_LIBADD =
cipher_OBJECTS = blowfish.o elgamal.o gost.o md5.o primegen.o random.o \ cipher_OBJECTS = blowfish.o elgamal.o gost.o md5.o primegen.o random.o \
rmd160.o sha1.o dsa.o rsa.o md.o smallprime.o rmd160.o sha1.o dsa.o md.o smallprime.o
EXTRA_cipher_SOURCES = EXTRA_cipher_SOURCES =
LIBFILES = libcipher.a LIBFILES = libcipher.a
AR = ar AR = ar
@ -102,7 +102,7 @@ TAR = tar
DEP_FILES = $(srcdir)/.deps/blowfish.P $(srcdir)/.deps/dsa.P \ DEP_FILES = $(srcdir)/.deps/blowfish.P $(srcdir)/.deps/dsa.P \
$(srcdir)/.deps/elgamal.P $(srcdir)/.deps/gost.P $(srcdir)/.deps/md.P \ $(srcdir)/.deps/elgamal.P $(srcdir)/.deps/gost.P $(srcdir)/.deps/md.P \
$(srcdir)/.deps/md5.P $(srcdir)/.deps/primegen.P \ $(srcdir)/.deps/md5.P $(srcdir)/.deps/primegen.P \
$(srcdir)/.deps/random.P $(srcdir)/.deps/rmd160.P $(srcdir)/.deps/rsa.P \ $(srcdir)/.deps/random.P $(srcdir)/.deps/rmd160.P \
$(srcdir)/.deps/sha1.P $(srcdir)/.deps/smallprime.P $(srcdir)/.deps/sha1.P $(srcdir)/.deps/smallprime.P
SOURCES = $(cipher_SOURCES) SOURCES = $(cipher_SOURCES)
OBJECTS = $(cipher_OBJECTS) OBJECTS = $(cipher_OBJECTS)

View File

@ -1,5 +1,5 @@
/* rmd160.c - RIPE-MD160 /* rmd160.c - RIPE-MD160
* Copyright (c) 1997 by Werner Koch (dd9jn) * Copyright (c) 1997 by Werner Koch (dd9jn)
* *
* This file is part of G10. * This file is part of G10.
* *
@ -48,20 +48,20 @@
* *
* nonlinear functions at bit level: exor, mux, -, mux, - * nonlinear functions at bit level: exor, mux, -, mux, -
* *
* f(j, x, y, z) = x XOR y XOR z (0 <= j <= 15) * f(j, x, y, z) = x XOR y XOR z (0 <= j <= 15)
* f(j, x, y, z) = (x AND y) OR (NOT(x) AND z) (16 <= j <= 31) * f(j, x, y, z) = (x AND y) OR (NOT(x) AND z) (16 <= j <= 31)
* f(j, x, y, z) = (x OR NOT(y)) XOR z (32 <= j <= 47) * f(j, x, y, z) = (x OR NOT(y)) XOR z (32 <= j <= 47)
* f(j, x, y, z) = (x AND z) OR (y AND NOT(z)) (48 <= j <= 63) * f(j, x, y, z) = (x AND z) OR (y AND NOT(z)) (48 <= j <= 63)
* f(j, x, y, z) = x XOR (y OR NOT(z)) (64 <= j <= 79) * f(j, x, y, z) = x XOR (y OR NOT(z)) (64 <= j <= 79)
* *
* *
* added constants (hexadecimal) * added constants (hexadecimal)
* *
* K(j) = 0x00000000 (0 <= j <= 15) * K(j) = 0x00000000 (0 <= j <= 15)
* K(j) = 0x5A827999 (16 <= j <= 31) int(2**30 x sqrt(2)) * K(j) = 0x5A827999 (16 <= j <= 31) int(2**30 x sqrt(2))
* K(j) = 0x6ED9EBA1 (32 <= j <= 47) int(2**30 x sqrt(3)) * K(j) = 0x6ED9EBA1 (32 <= j <= 47) int(2**30 x sqrt(3))
* K(j) = 0x8F1BBCDC (48 <= j <= 63) int(2**30 x sqrt(5)) * K(j) = 0x8F1BBCDC (48 <= j <= 63) int(2**30 x sqrt(5))
* K(j) = 0xA953FD4E (64 <= j <= 79) int(2**30 x sqrt(7)) * K(j) = 0xA953FD4E (64 <= j <= 79) int(2**30 x sqrt(7))
* K'(j) = 0x50A28BE6 (0 <= j <= 15) int(2**30 x cbrt(2)) * K'(j) = 0x50A28BE6 (0 <= j <= 15) int(2**30 x cbrt(2))
* K'(j) = 0x5C4DD124 (16 <= j <= 31) int(2**30 x cbrt(3)) * K'(j) = 0x5C4DD124 (16 <= j <= 31) int(2**30 x cbrt(3))
* K'(j) = 0x6D703EF3 (32 <= j <= 47) int(2**30 x cbrt(5)) * K'(j) = 0x6D703EF3 (32 <= j <= 47) int(2**30 x cbrt(5))
@ -71,7 +71,7 @@
* *
* selection of message word * selection of message word
* *
* r(j) = j (0 <= j <= 15) * r(j) = j (0 <= j <= 15)
* r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8 * r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
* r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12 * r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
* r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2 * r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
@ -100,7 +100,7 @@
* initial value (hexadecimal) * initial value (hexadecimal)
* *
* h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476; * h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476;
* h4 = 0xC3D2E1F0; * h4 = 0xC3D2E1F0;
* *
* *
* RIPEMD-160: pseudo-code * RIPEMD-160: pseudo-code
@ -112,17 +112,17 @@
* *
* *
* for i := 0 to t-1 { * for i := 0 to t-1 {
* A := h0; B := h1; C := h2; D = h3; E = h4; * A := h0; B := h1; C := h2; D = h3; E = h4;
* A' := h0; B' := h1; C' := h2; D' = h3; E' = h4; * A' := h0; B' := h1; C' := h2; D' = h3; E' = h4;
* for j := 0 to 79 { * for j := 0 to 79 {
* T := rol_s(j)(A [+] f(j, B, C, D) [+] X[i][r(j)] [+] K(j)) [+] E; * T := rol_s(j)(A [+] f(j, B, C, D) [+] X[i][r(j)] [+] K(j)) [+] E;
* A := E; E := D; D := rol_10(C); C := B; B := T; * A := E; E := D; D := rol_10(C); C := B; B := T;
* T := rol_s'(j)(A' [+] f(79-j, B', C', D') [+] X[i][r'(j)] * T := rol_s'(j)(A' [+] f(79-j, B', C', D') [+] X[i][r'(j)]
[+] K'(j)) [+] E'; [+] K'(j)) [+] E';
* A' := E'; E' := D'; D' := rol_10(C'); C' := B'; B' := T; * A' := E'; E' := D'; D' := rol_10(C'); C' := B'; B' := T;
* } * }
* T := h1 [+] C [+] D'; h1 := h2 [+] D [+] E'; h2 := h3 [+] E [+] A'; * T := h1 [+] C [+] D'; h1 := h2 [+] D [+] E'; h2 := h3 [+] E [+] A';
* h3 := h4 [+] A [+] B'; h4 := h0 [+] B [+] C'; h0 := T; * h3 := h4 [+] A [+] B'; h4 := h0 [+] B [+] C'; h0 := T;
* } * }
*/ */
@ -159,29 +159,29 @@ static void
transform( RMDHANDLE hd, byte *data ) transform( RMDHANDLE hd, byte *data )
{ {
static int r[80] = { static int r[80] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 }; 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 };
static int rr[80] = { static int rr[80] = {
5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 }; 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 };
static int s[80] = { static int s[80] = {
11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 }; 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 };
static int ss[80] = { static int ss[80] = {
8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 }; 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 };
u32 a,b,c,d,e,aa,bb,cc,dd,ee,t; u32 a,b,c,d,e,aa,bb,cc,dd,ee,t;
int rbits, j; int rbits, j;
#ifdef BIG_ENDIAN_HOST #ifdef BIG_ENDIAN_HOST
@ -190,14 +190,14 @@ transform( RMDHANDLE hd, byte *data )
u32 *x; u32 *x;
#endif #endif
#define K(a) ( (a) < 16 ? 0x00000000 : \ #define K(a) ( (a) < 16 ? 0x00000000 : \
(a) < 32 ? 0x5A827999 : \ (a) < 32 ? 0x5A827999 : \
(a) < 48 ? 0x6ED9EBA1 : \ (a) < 48 ? 0x6ED9EBA1 : \
(a) < 64 ? 0x8F1BBCDC : 0xA953FD4E ) (a) < 64 ? 0x8F1BBCDC : 0xA953FD4E )
#define KK(a) ( (a) < 16 ? 0x50A28BE6 : \ #define KK(a) ( (a) < 16 ? 0x50A28BE6 : \
(a) < 32 ? 0x5C4DD124 : \ (a) < 32 ? 0x5C4DD124 : \
(a) < 48 ? 0x6D703EF3 : \ (a) < 48 ? 0x6D703EF3 : \
(a) < 64 ? 0x7A6D76E9 : 0x00000000 ) (a) < 64 ? 0x7A6D76E9 : 0x00000000 )
#define F0(x,y,z) ( (x) ^ (y) ^ (z) ) #define F0(x,y,z) ( (x) ^ (y) ^ (z) )
#define F1(x,y,z) ( ((x) & (y)) | (~(x) & (z)) ) #define F1(x,y,z) ( ((x) & (y)) | (~(x) & (z)) )
@ -205,10 +205,10 @@ transform( RMDHANDLE hd, byte *data )
#define F3(x,y,z) ( ((x) & (z)) | ((y) & ~(z)) ) #define F3(x,y,z) ( ((x) & (z)) | ((y) & ~(z)) )
#define F4(x,y,z) ( (x) ^ ((y) | ~(z)) ) #define F4(x,y,z) ( (x) ^ ((y) | ~(z)) )
#define F(a,x,y,z) ( (a) < 16 ? F0((x),(y),(z)) : \ #define F(a,x,y,z) ( (a) < 16 ? F0((x),(y),(z)) : \
(a) < 32 ? F1((x),(y),(z)) : \ (a) < 32 ? F1((x),(y),(z)) : \
(a) < 48 ? F2((x),(y),(z)) : \ (a) < 48 ? F2((x),(y),(z)) : \
(a) < 64 ? F3((x),(y),(z)) : \ (a) < 64 ? F3((x),(y),(z)) : \
F4((x),(y),(z)) ) F4((x),(y),(z)) )
#define rol(n,x) ( ((x) << (n)) | ((x) >> (32-(n))) ) #define rol(n,x) ( ((x) << (n)) | ((x) >> (32-(n))) )
@ -217,14 +217,14 @@ transform( RMDHANDLE hd, byte *data )
{ int i; { int i;
byte *p2, *p1; byte *p2, *p1;
for(i=0, p1=data, p2=(byte*)x; i < 16; i++, p2 += 4 ) { for(i=0, p1=data, p2=(byte*)x; i < 16; i++, p2 += 4 ) {
p2[3] = *p1++; p2[3] = *p1++;
p2[2] = *p1++; p2[2] = *p1++;
p2[1] = *p1++; p2[1] = *p1++;
p2[0] = *p1++; p2[0] = *p1++;
} }
} }
#else #else
x = data; x = (u32*)data;
#endif #endif
a = aa = hd->h0; a = aa = hd->h0;
@ -234,20 +234,20 @@ transform( RMDHANDLE hd, byte *data )
e = ee = hd->h4; e = ee = hd->h4;
for(j=0; j < 80; j++ ) { for(j=0; j < 80; j++ ) {
t = a + F( j, b, c, d ) + x[ r[j] ] + K(j); t = a + F( j, b, c, d ) + x[ r[j] ] + K(j);
rbits = s[j]; rbits = s[j];
a = rol(rbits, t) + e; a = rol(rbits, t) + e;
c = rol(10,c); c = rol(10,c);
t = a; a = e; e = d; d = c; c = b; b = t; t = a; a = e; e = d; d = c; c = b; b = t;
t = aa + F(79-j, bb, cc, dd ) + x[ rr[j] ] + KK(j); t = aa + F(79-j, bb, cc, dd ) + x[ rr[j] ] + KK(j);
rbits = ss[j]; rbits = ss[j];
aa = rol(rbits, t) + ee; aa = rol(rbits, t) + ee;
cc = rol(10,cc); cc = rol(10,cc);
t = aa; aa = ee; ee = dd; dd = cc; cc = bb; bb = t; t = aa; aa = ee; ee = dd; dd = cc; cc = bb; bb = t;
} }
t = hd->h1 + c + dd; t = hd->h1 + c + dd;
hd->h1 = hd->h2 + d + ee; hd->h1 = hd->h2 + d + ee;
hd->h2 = hd->h3 + e + aa; hd->h2 = hd->h3 + e + aa;
hd->h3 = hd->h4 + a + bb; hd->h3 = hd->h4 + a + bb;
@ -264,7 +264,7 @@ rmd160_open( int secure )
RMDHANDLE hd; RMDHANDLE hd;
hd = secure? m_alloc_secure( sizeof *hd ) hd = secure? m_alloc_secure( sizeof *hd )
: m_alloc( sizeof *hd ); : m_alloc( sizeof *hd );
initialize(hd); initialize(hd);
return hd; return hd;
} }
@ -277,7 +277,7 @@ rmd160_copy( RMDHANDLE a )
assert(a); assert(a);
b = m_is_secure(a)? m_alloc_secure( sizeof *b ) b = m_is_secure(a)? m_alloc_secure( sizeof *b )
: m_alloc( sizeof *b ); : m_alloc( sizeof *b );
memcpy( b, a, sizeof *a ); memcpy( b, a, sizeof *a );
return b; return b;
} }
@ -298,7 +298,7 @@ void
rmd160_close(RMDHANDLE hd) rmd160_close(RMDHANDLE hd)
{ {
if( hd ) if( hd )
m_free(hd); m_free(hd);
} }
@ -310,29 +310,29 @@ void
rmd160_write( RMDHANDLE hd, byte *inbuf, size_t inlen) rmd160_write( RMDHANDLE hd, byte *inbuf, size_t inlen)
{ {
if( hd->bufcount == 64 ) { /* flush the buffer */ if( hd->bufcount == 64 ) { /* flush the buffer */
transform( hd, hd->buffer ); transform( hd, hd->buffer );
hd->bufcount = 0; hd->bufcount = 0;
hd->nblocks++; hd->nblocks++;
} }
if( !inbuf ) if( !inbuf )
return; return;
if( hd->bufcount ) { if( hd->bufcount ) {
for( ; inlen && hd->bufcount < 64; inlen-- ) for( ; inlen && hd->bufcount < 64; inlen-- )
hd->buffer[hd->bufcount++] = *inbuf++; hd->buffer[hd->bufcount++] = *inbuf++;
rmd160_write( hd, NULL, 0 ); rmd160_write( hd, NULL, 0 );
if( !inlen ) if( !inlen )
return; return;
} }
while( inlen >= 64 ) { while( inlen >= 64 ) {
transform( hd, inbuf ); transform( hd, inbuf );
hd->bufcount = 0; hd->bufcount = 0;
hd->nblocks++; hd->nblocks++;
inlen -= 64; inlen -= 64;
inbuf += 64; inbuf += 64;
} }
for( ; inlen && hd->bufcount < 64; inlen-- ) for( ; inlen && hd->bufcount < 64; inlen-- )
hd->buffer[hd->bufcount++] = *inbuf++; hd->buffer[hd->bufcount++] = *inbuf++;
} }
@ -354,27 +354,27 @@ rmd160_final(RMDHANDLE hd)
msb = 0; msb = 0;
t = hd->nblocks; t = hd->nblocks;
if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */ if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */
msb++; msb++;
msb += t >> 26; msb += t >> 26;
t = lsb; t = lsb;
if( (lsb = t + hd->bufcount) < t ) /* add the bufcount */ if( (lsb = t + hd->bufcount) < t ) /* add the bufcount */
msb++; msb++;
t = lsb; t = lsb;
if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */ if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */
msb++; msb++;
msb += t >> 29; msb += t >> 29;
if( hd->bufcount < 56 ) { /* enough room */ if( hd->bufcount < 56 ) { /* enough room */
hd->buffer[hd->bufcount++] = 0x80; /* pad */ hd->buffer[hd->bufcount++] = 0x80; /* pad */
while( hd->bufcount < 56 ) while( hd->bufcount < 56 )
hd->buffer[hd->bufcount++] = 0; /* pad */ hd->buffer[hd->bufcount++] = 0; /* pad */
} }
else { /* need one extra block */ else { /* need one extra block */
hd->buffer[hd->bufcount++] = 0x80; /* pad character */ hd->buffer[hd->bufcount++] = 0x80; /* pad character */
while( hd->bufcount < 64 ) while( hd->bufcount < 64 )
hd->buffer[hd->bufcount++] = 0; hd->buffer[hd->bufcount++] = 0;
rmd160_write(hd, NULL, 0); /* flush */; rmd160_write(hd, NULL, 0); /* flush */;
memset(hd->buffer, 0, 56 ); /* fill next block with zeroes */ memset(hd->buffer, 0, 56 ); /* fill next block with zeroes */
} }
/* append the 64 bit count */ /* append the 64 bit count */
hd->buffer[56] = lsb ; hd->buffer[56] = lsb ;
@ -389,8 +389,8 @@ rmd160_final(RMDHANDLE hd)
p = hd->buffer; p = hd->buffer;
#ifdef BIG_ENDIAN_HOST #ifdef BIG_ENDIAN_HOST
#define X(a) do { *p++ = hd->h##a ; *p++ = hd->h##a >> 8; \ #define X(a) do { *p++ = hd->h##a ; *p++ = hd->h##a >> 8; \
*p++ = hd->h##a >> 16; *p++ = hd->h##a >> 24; } while(0) *p++ = hd->h##a >> 16; *p++ = hd->h##a >> 24; } while(0)
#else /* little endian */ #else /* little endian */
#define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0) #define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0)
#endif #endif
@ -401,7 +401,7 @@ rmd160_final(RMDHANDLE hd)
X(4); X(4);
#undef X #undef X
initialize( hd ); /* prepare for next cycle */ initialize( hd ); /* prepare for next cycle */
return hd->buffer; /* now contains the digest */ return hd->buffer; /* now contains the digest */
} }

View File

@ -8,7 +8,7 @@ AC_CONFIG_AUX_DIR(scripts)
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADER(config.h)
VERSION=0.1.0 VERSION=`cat ./VERSION`
PACKAGE=g10 PACKAGE=g10
AC_SUBST(VERSION) AC_SUBST(VERSION)
AC_SUBST(PACKAGE) AC_SUBST(PACKAGE)
@ -24,6 +24,10 @@ fi
dnl some additional macros dnl some additional macros
dnl WK_MSG_PRINT(STRING)
define(WK_MSG_PRINT,
[echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG ])
dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME) dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
AC_DEFUN(WK_CHECK_TYPEDEF, AC_DEFUN(WK_CHECK_TYPEDEF,
[AC_MSG_CHECKING(for $1 typedef) [AC_MSG_CHECKING(for $1 typedef)
@ -163,7 +167,7 @@ fi
dnl setup assembler stuff dnl setup assembler stuff
AC_MSG_CHECKING(configure mpi) AC_MSG_CHECKING(for mpi assembler functions)
mpi_config_done="no" mpi_config_done="no"
AC_CACHE_VAL(ac_cv_mpi_config_done, AC_CACHE_VAL(ac_cv_mpi_config_done,
[ ac_cv_mpi_config_done="$mpi_config_done" ]) [ ac_cv_mpi_config_done="$mpi_config_done" ])
@ -173,6 +177,7 @@ else
ac_cv_mpi_config_done="" ac_cv_mpi_config_done=""
if test -f ./mpi/config.links ; then if test -f ./mpi/config.links ; then
. ./mpi/config.links . ./mpi/config.links
ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
AC_LINK_FILES( ${mpi_ln_src}, ${mpi_ln_dst} ) AC_LINK_FILES( ${mpi_ln_src}, ${mpi_ln_dst} )
ac_cv_mpi_config_done="yes" ac_cv_mpi_config_done="yes"
AC_MSG_RESULT(done) AC_MSG_RESULT(done)
@ -181,18 +186,31 @@ else
AC_MSG_ERROR([mpi/config.links missing!]) AC_MSG_ERROR([mpi/config.links missing!])
fi fi
fi fi
MPI_EXTRA_ASM_OBJS=""
if test "$ac_cv_mpi_extra_asm_modules" != ""; then
WK_MSG_PRINT([mpi extra asm functions:])
for i in $ac_cv_mpi_extra_asm_modules; do
WK_MSG_PRINT([$i])
MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
done
AC_MSG_RESULT()
fi
AC_SUBST(MPI_EXTRA_ASM_OBJS)
dnl checking whether we have the RSA source dnl checking whether we have other cipher source files
dnl Add stuff to insert this into the makefile CIPHER_EXTRA_OBJS=""
dnl AC_SUBST(add_cipher_SOURCES) CIPHER_EXTRA_DIST=""
AC_CACHE_CHECK(for rsa source, ac_cv_have_rsa_cipher, AC_CACHE_CHECK(for extra cipher modules, ac_cv_have_rsa_cipher,
[if test -f cipher/rsa.c && test -f cipher/rsa.h; then [if test -f cipher/rsa.c && test -f cipher/rsa.h; then
ac_cv_have_rsa_cipher=yes; else ac_cv_have_rsa_cipher=no; fi]) ac_cv_have_rsa_cipher=yes; else ac_cv_have_rsa_cipher=no; fi])
if test $ac_cv_have_rsa_cipher = yes; then if test $ac_cv_have_rsa_cipher = yes; then
AC_DEFINE(HAVE_RSA_CIPHER) AC_DEFINE(HAVE_RSA_CIPHER)
CIPHER_EXTRA_OBJS="rsa.o"
CIPHER_EXTRA_DIST="rsa.c rsa.h"
fi fi
AC_SUBST(CIPHER_EXTRA_OBJS)
AC_SUBST(CIPHER_EXTRA_DIST)
AC_OUTPUT([ Makefile \ AC_OUTPUT([ Makefile \
util/Makefile \ util/Makefile \

View File

@ -36,16 +36,6 @@ mpi_LIBADD = mpih-mul1.o \
mpih-mul3.o \ mpih-mul3.o \
mpih-add1.o \ mpih-add1.o \
mpih-sub1.o \ mpih-sub1.o \
mpih-shift.o mpih-shift.o @MPI_EXTRA_ASM_OBJS@
#mpi_DEPENDENCIES = mpih-mul1.S \
# mpih-mul2.S \
# mpih-mul3.S \
# mpih-add1.S \
# mpih-sub1.S \
# mpih-shift.S
#
##DISTCLEANFILES = @MPI_DISTCLEANFILES@

View File

@ -72,7 +72,7 @@ mpi_LIBADD = mpih-mul1.o \
mpih-mul3.o \ mpih-mul3.o \
mpih-add1.o \ mpih-add1.o \
mpih-sub1.o \ mpih-sub1.o \
mpih-shift.o mpih-shift.o @MPI_EXTRA_ASM_OBJS@
mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
CONFIG_HEADER = ../config.h CONFIG_HEADER = ../config.h
LIBRARIES = $(noinst_LIBRARIES) LIBRARIES = $(noinst_LIBRARIES)
@ -273,14 +273,6 @@ mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean maintainer-clean-generic clean mostlyclean distclean maintainer-clean
CFLAGS += -O2 CFLAGS += -O2
#mpi_DEPENDENCIES = mpih-mul1.S \
# mpih-mul2.S \
# mpih-mul3.S \
# mpih-add1.S \
# mpih-sub1.S \
# mpih-shift.S
#
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .c .o $(SUFFIXES) .SUFFIXES: .c .o $(SUFFIXES)

View File

@ -44,8 +44,8 @@
*/ */
.code .code
.export __mpihelp_add_n .export mpihelp_add_n
__mpihelp_add_n mpihelp_add_n
.proc .proc
.callinfo frame=0,no_calls .callinfo frame=0,no_calls
.entry .entry