diff options
Diffstat (limited to 'g10')
-rw-r--r-- | g10/ChangeLog | 8 | ||||
-rw-r--r-- | g10/seskey.c | 4 | ||||
-rw-r--r-- | g10/status.c | 24 |
3 files changed, 23 insertions, 13 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog index c3f9ce50b..c91022a1e 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,11 @@ +2006-10-05 Werner Koch <[email protected]> + + * status.c (progress_cb): Changed to libgcrypt API. + (set_status_fd): Register the progress cb. + + * seskey.c (encode_md_value): Check that the hash algo is valid + before getting the OID. + 2006-10-04 Werner Koch <[email protected]> * passphrase.c: Allow for a static passphrase in batch mode. diff --git a/g10/seskey.c b/g10/seskey.c index 2ef00869f..c0efc3ae7 100644 --- a/g10/seskey.c +++ b/g10/seskey.c @@ -267,7 +267,9 @@ encode_md_value (PKT_public_key *pk, PKT_secret_key *sk, byte *asn; size_t asnlen; - rc = gcry_md_algo_info (hash_algo, GCRYCTL_GET_ASNOID, NULL, &asnlen); + rc = gcry_md_test_algo (hash_algo); + if (!rc) + rc = gcry_md_algo_info (hash_algo, GCRYCTL_GET_ASNOID, NULL, &asnlen); if (rc) log_fatal ("can't get OID of algo %d: %s\n", hash_algo, gpg_strerror (rc)); diff --git a/g10/status.c b/g10/status.c index 2098d6738..b0d0cd74c 100644 --- a/g10/status.c +++ b/g10/status.c @@ -45,15 +45,17 @@ static FILE *statusfp; static void -progress_cb ( void *ctx, int c ) +progress_cb (void *ctx, const char *what, int printchar, + int current, int total) { - char buf[50]; - - if ( c == '\n' ) - sprintf ( buf, "%.20s X 100 100", (char*)ctx ); - else - sprintf ( buf, "%.20s %c 0 0", (char*)ctx, c ); - write_status_text ( STATUS_PROGRESS, buf ); + char buf[50]; + + if ( printchar == '\n' && !strcmp (what, "primegen") ) + snprintf (buf, sizeof buf -1, "%.20s X 100 100", what ); + else + snprintf (buf, sizeof buf -1, "%.20s %c %d %d", + what, printchar=='\n'?'X':printchar, current, total ); + write_status_text (STATUS_PROGRESS, buf); } static const char * @@ -209,10 +211,8 @@ set_status_fd ( int fd ) fd, strerror(errno)); } last_fd = fd; -#warning Use libgrypt calls for progress indicators -/* register_primegen_progress ( progress_cb, "primegen" ); */ -/* register_pk_dsa_progress ( progress_cb, "pk_dsa" ); */ -/* register_pk_elg_progress ( progress_cb, "pk_elg" ); */ + + gcry_set_progress_handler ( progress_cb, NULL ); } int |