diff options
Diffstat (limited to 'cipher')
-rw-r--r-- | cipher/ChangeLog | 6 | ||||
-rw-r--r-- | cipher/dsa.c | 18 | ||||
-rw-r--r-- | cipher/elgamal.c | 17 | ||||
-rw-r--r-- | cipher/primegen.c | 15 |
4 files changed, 53 insertions, 3 deletions
diff --git a/cipher/ChangeLog b/cipher/ChangeLog index fd8888d10..7507454de 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -1,3 +1,9 @@ +Thu May 18 11:38:54 CEST 2000 Werner Koch <[email protected]> + + * primegen.c (register_primegen_progress): New. + * dsa.c (register_pk_dsa_progress): New. + * elgamal.c (register_pk_elg_progress): New. + Fri Apr 14 19:37:08 CEST 2000 Werner Koch <[email protected]> * twofish.c (twofish_get_info): Fixed warning about cast. diff --git a/cipher/dsa.c b/cipher/dsa.c index 5828b9508..d7c4f6892 100644 --- a/cipher/dsa.c +++ b/cipher/dsa.c @@ -52,13 +52,29 @@ static void generate( DSA_secret_key *sk, unsigned nbits, MPI **ret_factors ); static void sign(MPI r, MPI s, MPI input, DSA_secret_key *skey); static int verify(MPI r, MPI s, MPI input, DSA_public_key *pkey); + +static void (*progress_cb) ( void *, int ); +static void *progress_cb_data; + +void +register_pk_dsa_progress ( void (*cb)( void *, int), void *cb_data ) +{ + progress_cb = cb; + progress_cb_data = cb_data; +} + + static void progress( int c ) { - fputc( c, stderr ); + if ( progress_cb ) + progress_cb ( progress_cb_data, c ); + else + fputc( c, stderr ); } + /**************** * Generate a random secret exponent k less than q */ diff --git a/cipher/elgamal.c b/cipher/elgamal.c index f968a29d4..74e159684 100644 --- a/cipher/elgamal.c +++ b/cipher/elgamal.c @@ -56,12 +56,27 @@ static void sign(MPI a, MPI b, MPI input, ELG_secret_key *skey); static int verify(MPI a, MPI b, MPI input, ELG_public_key *pkey); +static void (*progress_cb) ( void *, int ); +static void *progress_cb_data; + +void +register_pk_elg_progress ( void (*cb)( void *, int), void *cb_data ) +{ + progress_cb = cb; + progress_cb_data = cb_data; +} + + static void progress( int c ) { - fputc( c, stderr ); + if ( progress_cb ) + progress_cb ( progress_cb_data, c ); + else + fputc( c, stderr ); } + /**************** * Michael Wiener's table about subgroup sizes to match field sizes * (floating around somewhere - Fixme: need a reference) diff --git a/cipher/primegen.c b/cipher/primegen.c index 57160b2a3..b6c569de7 100644 --- a/cipher/primegen.c +++ b/cipher/primegen.c @@ -38,11 +38,24 @@ static int check_prime( MPI prime, MPI val_2 ); static int is_prime( MPI n, int steps, int *count ); static void m_out_of_n( char *array, int m, int n ); +static void (*progress_cb) ( void *, int ); +static void *progress_cb_data; + +void +register_primegen_progress ( void (*cb)( void *, int), void *cb_data ) +{ + progress_cb = cb; + progress_cb_data = cb_data; +} + static void progress( int c ) { - fputc( c, stderr ); + if ( progress_cb ) + progress_cb ( progress_cb_data, c ); + else + fputc( c, stderr ); } |