2001-11-23 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Fri, 23 Nov 2001 11:52:09 +0000 (11:52 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Fri, 23 Nov 2001 11:52:09 +0000 (11:52 +0000)
* engine-gpgsm.c (_gpgme_gpgsm_op_sign): Implement it according to
the current protocol definition.

gpgme/ChangeLog
gpgme/engine-gpgsm.c

index 03a093a..cb0c7b6 100644 (file)
@@ -1,5 +1,10 @@
 2001-11-23  Marcus Brinkmann  <marcus@g10code.de>
 
+       * engine-gpgsm.c (_gpgme_gpgsm_op_sign): Implement it according to
+       the current protocol definition.
+
+2001-11-23  Marcus Brinkmann  <marcus@g10code.de>
+
        * engine-gpgsm.c (_gpgme_gpgsm_new): Set CLOEXEC flag for parent
        ends of the pipe.
 
index 63f019a..bf6bf83 100644 (file)
@@ -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