diff options
Diffstat (limited to '')
-rw-r--r-- | sm/sign.c | 37 |
1 files changed, 5 insertions, 32 deletions
@@ -35,14 +35,6 @@ #include "i18n.h" - - -struct reader_cb_parm_s { - FILE *fp; -}; - - - static void hash_data (int fd, GCRY_MD_HD md) { @@ -112,19 +104,17 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) { int i, rc; KsbaError err; - KsbaWriter writer = NULL; + Base64Context b64writer = NULL; + KsbaWriter writer; KsbaCMS cms = NULL; KsbaStopReason stopreason; KsbaCert cert; KEYDB_HANDLE kh = NULL; GCRY_MD_HD data_md = NULL; - struct reader_cb_parm_s rparm; int signer; const char *algoid; int algo; - memset (&rparm, 0, sizeof rparm); - if (!detached) { rc = seterr (Not_Implemented); @@ -140,25 +130,10 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) goto leave; } - rparm.fp = fdopen ( dup (data_fd), "rb"); - if (!rparm.fp) - { - log_error ("fdopen() failed: %s\n", strerror (errno)); - rc = seterr (IO_Error); - goto leave; - } - - writer = ksba_writer_new (); - if (!writer) - { - rc = seterr (Out_Of_Core); - goto leave; - } - rc = ksba_writer_set_file (writer, out_fp); + rc = gpgsm_create_writer (&b64writer, ctrl, out_fp, &writer); if (rc) { - ksba_writer_release (writer); - rc = map_ksba_err (rc); + log_error ("can't create writer: %s\n", gnupg_strerror (rc)); goto leave; } @@ -357,10 +332,8 @@ gpgsm_sign (CTRL ctrl, int data_fd, int detached, FILE *out_fp) leave: ksba_cms_release (cms); - ksba_writer_release (writer); + gpgsm_destroy_writer (b64writer); keydb_release (kh); gcry_md_close (data_md); - if (rparm.fp) - fclose (rparm.fp); return rc; } |