aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2001-11-23 11:52:09 +0000
committerMarcus Brinkmann <[email protected]>2001-11-23 11:52:09 +0000
commit8c3726d6349408ec50448ee9b19f5d1c3333696f (patch)
treef7eee5ca8915752ac88d84e35a919624525b20a4
parentsigning of mail bodies is working now - buuuuut: I changed the behaviour of t... (diff)
downloadgpgme-8c3726d6349408ec50448ee9b19f5d1c3333696f.tar.gz
gpgme-8c3726d6349408ec50448ee9b19f5d1c3333696f.zip
2001-11-23 Marcus Brinkmann <[email protected]>
* engine-gpgsm.c (_gpgme_gpgsm_op_sign): Implement it according to the current protocol definition.
-rw-r--r--gpgme/ChangeLog5
-rw-r--r--gpgme/engine-gpgsm.c24
2 files changed, 27 insertions, 2 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 03a093a6..cb0c7b67 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,5 +1,10 @@
2001-11-23 Marcus Brinkmann <[email protected]>
+ * engine-gpgsm.c (_gpgme_gpgsm_op_sign): Implement it according to
+ the current protocol definition.
+
+2001-11-23 Marcus Brinkmann <[email protected]>
+
* engine-gpgsm.c (_gpgme_gpgsm_new): Set CLOEXEC flag for parent
ends of the pipe.
diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c
index 63f019aa..bf6bf838 100644
--- a/gpgme/engine-gpgsm.c
+++ b/gpgme/engine-gpgsm.c
@@ -395,8 +395,28 @@ _gpgme_gpgsm_op_sign (GpgsmObject gpgsm, GpgmeData in, GpgmeData out,
GpgmeSigMode mode, int use_armor,
int use_textmode, GpgmeCtx ctx /* FIXME */)
{
- /* FIXME */
- return mk_error (Not_Implemented);
+ AssuanError err;
+
+ if (!gpgsm)
+ return mk_error (Invalid_Value);
+
+ gpgsm->command = xtrystrdup (mode == GPGME_SIG_MODE_DETACH
+ ? "VERIFY --detach" : "VERIFY");
+ if (!gpgsm->command)
+ return mk_error (Out_Of_Core);
+
+ gpgsm->input_data = in;
+ err = gpgsm_set_fd (gpgsm->assuan_ctx, "INPUT", gpgsm->input_fd_server);
+ if (err)
+ return mk_error (General_Error); /* FIXME */
+ gpgsm->output_data = out;
+ err = gpgsm_set_fd (gpgsm->assuan_ctx, "OUTPUT", gpgsm->output_fd_server);
+ if (err)
+ return mk_error (General_Error); /* FIXME */
+ _gpgme_io_close (gpgsm->message_fd);
+ gpgsm->message_fd = -1;
+
+ return 0;
}
GpgmeError