aboutsummaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
Diffstat (limited to 'g10')
-rw-r--r--g10/ChangeLog8
-rw-r--r--g10/seskey.c4
-rw-r--r--g10/status.c24
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