diff options
Diffstat (limited to 'cipher')
-rw-r--r-- | cipher/elgamal.c | 10 | ||||
-rw-r--r-- | cipher/md.c | 18 | ||||
-rw-r--r-- | cipher/md.h | 3 |
3 files changed, 22 insertions, 9 deletions
diff --git a/cipher/elgamal.c b/cipher/elgamal.c index 13b8579fe..6defbc5f8 100644 --- a/cipher/elgamal.c +++ b/cipher/elgamal.c @@ -322,6 +322,16 @@ elg_verify(MPI a, MPI b, MPI input, ELG_public_key *pkey ) #if 0 /* t1 = (y^a mod p) * (a^b mod p) mod p */ + mpi_powm( t1, pkey->y, a, pkey->p ); + mpi_powm( t2, a, b, pkey->p ); + mpi_mulm( t1, t1, t2, pkey->p ); + + /* t2 = g ^ input mod p */ + mpi_powm( t2, pkey->g, input, pkey->p ); + + rc = !mpi_cmp( t1, t2 ); + #elif 0 + /* t1 = (y^a mod p) * (a^b mod p) mod p */ base[0] = pkey->y; exp[0] = a; base[1] = a; exp[1] = b; base[2] = NULL; exp[2] = NULL; diff --git a/cipher/md.c b/cipher/md.c index c89c8bb95..c87f3286b 100644 --- a/cipher/md.c +++ b/cipher/md.c @@ -28,7 +28,7 @@ #include "errors.h" -static FILE *dumpfp; +/*static FILE *dumpfp;*/ /**************** * Open a message digest handle for use with algorithm ALGO. @@ -40,14 +40,16 @@ md_open( int algo, int secure ) { MD_HANDLE hd; + #if 0 if( !dumpfp ) dumpfp = fopen("md.out", "w"); if( !dumpfp ) BUG(); { int i; for(i=0; i < 16; i++ ) putc('\xff', dumpfp ); } - + #endif hd = secure ? m_alloc_secure_clear( sizeof *hd ) : m_alloc_clear( sizeof *hd ); + hd->secure = secure; if( algo ) md_enable( hd, algo ); return hd; @@ -78,9 +80,9 @@ 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 ); + /*{ int i; for(i=0; i < 16; i++ ) putc('\xee', dumpfp ); }*/ + b = a->secure ? m_alloc_secure( sizeof *b ) + : m_alloc( sizeof *b ); memcpy( b, a, sizeof *a ); return b; } @@ -98,10 +100,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 ) + /* if( a->bufcount && fwrite(a->buffer, a->bufcount, 1, dumpfp ) != 1 ) BUG(); if( inlen && fwrite(inbuf, inlen, 1, dumpfp ) != 1 ) - BUG(); + BUG(); */ if( a->use_rmd160 ) { rmd160_write( &a->rmd160, a->buffer, a->bufcount ); rmd160_write( &a->rmd160, inbuf, inlen ); @@ -124,7 +126,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 ); } + /*{ int i; for(i=0; i < 16; i++ ) putc('\xcc', dumpfp ); }*/ if( a->use_rmd160 ) { byte *p; rmd160_final( &a->rmd160 ); diff --git a/cipher/md.h b/cipher/md.h index 8a7886d03..7a710e795 100644 --- a/cipher/md.h +++ b/cipher/md.h @@ -36,6 +36,7 @@ typedef struct { MD5_CONTEXT md5; byte buffer[MD_BUFFER_SIZE]; /* primary buffer */ int bufcount; + int secure; } *MD_HANDLE; @@ -55,6 +56,6 @@ void md_write( MD_HANDLE a, byte *inbuf, size_t inlen); void md_final(MD_HANDLE a); byte *md_read( MD_HANDLE a, int algo ); int md_get_algo( MD_HANDLE a ); - +#define md_is_secure(a) ((a)->secure) #endif /*G10_MD_H*/ |