diff options
author | Werner Koch <[email protected]> | 2001-12-15 12:36:39 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2001-12-15 12:36:39 +0000 |
commit | 1301c0b5efda39c5257dd9dbde87211a4b54c9d2 (patch) | |
tree | cbf4ded1d97a541cb8aaf7715c8954016a98cdf3 | |
parent | * keylist.c (list_cert_colon): Kludge to show an email address (diff) | |
download | gnupg-1301c0b5efda39c5257dd9dbde87211a4b54c9d2.tar.gz gnupg-1301c0b5efda39c5257dd9dbde87211a4b54c9d2.zip |
* decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
* sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
-rw-r--r-- | sm/ChangeLog | 5 | ||||
-rw-r--r-- | sm/decrypt.c | 3 | ||||
-rw-r--r-- | sm/encrypt.c | 2 | ||||
-rw-r--r-- | sm/fingerprint.c | 2 | ||||
-rw-r--r-- | sm/sign.c | 44 |
5 files changed, 50 insertions, 6 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog index d8bdc8106..235c8582e 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,3 +1,8 @@ +2001-12-15 Werner Koch <[email protected]> + + * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*. + * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED. + 2001-12-14 Werner Koch <[email protected]> * keylist.c (list_cert_colon): Kludge to show an email address diff --git a/sm/decrypt.c b/sm/decrypt.c index 6e88565b4..4038f8d27 100644 --- a/sm/decrypt.c +++ b/sm/decrypt.c @@ -453,9 +453,12 @@ gpgsm_decrypt (CTRL ctrl, int in_fd, FILE *out_fp) log_error ("write failed: %s\n", gnupg_strerror (rc)); goto leave; } + gpgsm_status (ctrl, STATUS_DECRYPTION_OKAY, NULL); leave: + if (rc) + gpgsm_status (ctrl, STATUS_DECRYPTION_FAILED, NULL); ksba_cms_release (cms); gpgsm_destroy_reader (b64reader); gpgsm_destroy_writer (b64writer); diff --git a/sm/encrypt.c b/sm/encrypt.c index bbf3c4571..b8981508a 100644 --- a/sm/encrypt.c +++ b/sm/encrypt.c @@ -407,6 +407,8 @@ gpgsm_encrypt (CTRL ctrl, CERTLIST recplist, int data_fd, FILE *out_fp) } /* If no recipient list is given, use a default one */ + /* FIXME: we shoudl not do this but return an error and a + STATUS_NO_RECP */ if (!recplist) { help_recplist.cert = get_default_recipient (); diff --git a/sm/fingerprint.c b/sm/fingerprint.c index ead5cec50..005f10f1f 100644 --- a/sm/fingerprint.c +++ b/sm/fingerprint.c @@ -81,7 +81,7 @@ gpgsm_get_fingerprint (KsbaCert cert, int algo, char *array, int *r_len) } -/* Return an allocated buffer with the formatted fungerprint */ +/* Return an allocated buffer with the formatted fingerprint */ char * gpgsm_get_fingerprint_string (KsbaCert cert, int algo) { @@ -119,12 +119,13 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) KsbaWriter writer; KsbaCMS cms = NULL; KsbaStopReason stopreason; - KsbaCert cert; + KsbaCert cert = NULL; KEYDB_HANDLE kh = NULL; GCRY_MD_HD data_md = NULL; int signer; const char *algoid; int algo; + time_t signed_at; if (!detached) { @@ -262,8 +263,9 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) goto leave; } } -#if 0 - err = ksba_cms_set_signing_time (cms, signer, 0 /*now*/); + + signed_at = time (NULL); + err = ksba_cms_set_signing_time (cms, signer, signed_at); if (err) { log_error ("ksba_cms_set_signing_time failed: %s\n", @@ -271,7 +273,7 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) rc = map_ksba_err (err); goto leave; } -#endif + do { err = ksba_cms_build (cms, &stopreason); @@ -313,7 +315,8 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) { /* This is all an temporary hack */ char *sigval; - + + ksba_cert_release (cert); cert = get_default_signer (); if (!cert) { @@ -339,6 +342,34 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) rc = map_ksba_err (err); goto leave; } + + /* And write a status message */ + { + char *buf, *fpr; + + fpr = gpgsm_get_fingerprint_hexstring (cert, GCRY_MD_SHA1); + if (!fpr) + { + rc = seterr (Out_Of_Core); + goto leave; + } + rc = asprintf (&buf, "%c %d %d 00 %lu %s", + detached? 'D':'S', + GCRY_PK_RSA, /* FIXME: get pk algo from cert */ + algo, + (ulong)signed_at, + fpr); + xfree (fpr); + if (rc < 0) + { + rc = seterr (Out_Of_Core); + goto leave; + } + rc = 0; + gpgsm_status (ctrl, STATUS_SIG_CREATED, buf ); + free (buf); /* yes, we must use the regular free() here */ + } + } } } @@ -350,9 +381,12 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) log_error ("write failed: %s\n", gnupg_strerror (rc)); goto leave; } + log_info ("signature created\n"); + leave: + ksba_cert_release (cert); ksba_cms_release (cms); gpgsm_destroy_writer (b64writer); keydb_release (kh); |