aboutsummaryrefslogtreecommitdiffstats
path: root/sm/sign.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sm/sign.c37
1 files changed, 5 insertions, 32 deletions
diff --git a/sm/sign.c b/sm/sign.c
index a246511e3..42f409a7d 100644
--- a/sm/sign.c
+++ b/sm/sign.c
@@ -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;
}