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.

trunk/gpgme/ChangeLog
trunk/gpgme/engine-gpgsm.c

index 03a093a65d7371330443442b80cf6529c166a3aa..cb0c7b675e1d4b28025373b26b026f91a498cf88 100644 (file)
@@ -1,3 +1,8 @@
+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
index 63f019aa1da19de8c685ba35d8d3030ca09d9da3..bf6bf838623e4dcaaa92abf7265b83648944048d 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