doc/
authorMarcus Brinkmann <mb@g10code.com>
Thu, 28 Apr 2005 16:11:34 +0000 (16:11 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 28 Apr 2005 16:11:34 +0000 (16:11 +0000)
2005-04-28  Marcus Brinkmann  <marcus@g10code.de>

        * gpgme.texi (Included Certificates): Document
        GPGME_INCLUDE_CERTS_DEFAULT.

gpgme/
2005-04-28  Marcus Brinkmann  <marcus@g10code.de>

        * gpgme.h (GPGME_INCLUDE_CERTS_DEFAULT): New macro.
        * engine-gpgsm.c (gpgsm_sign): Send the include-certs option after
        the reset, just for cleanliness, and do not sent it at all if the
        default is requested.
        * gpgme.c (gpgme_set_include_certs): Allow to use
        GPGME_INCLUDE_CERTS_DEFAULT.

NEWS
doc/ChangeLog
doc/gpgme.texi
gpgme/ChangeLog
gpgme/engine-gpgsm.c
gpgme/gpgme.c
gpgme/gpgme.h

diff --git a/NEWS b/NEWS
index 221ec47..431b1e1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,10 +4,21 @@ Noteworthy changes in version 1.1.0 (unreleased)
  * You can now configure the backend engine file name and home
    directory to be used, as default and per context.
 
+ * Previousy, GPGME would use a default "include certs" of 1.  This
+   has been changed.  Now GPGME will use the crypto backend engines
+   default unless you set the value with gpgme_set_include_certs()
+   explicitely.  A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
+   as a value to explicitely request the new default behaviour.
+
+   Because the default changes, this is a slight change of the API
+   semantics.  We consider it to be a bug fix.
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 gpgme_set_engine_info          NEW
 gpgme_ctx_get_engine_info      NEW
 gpgme_ctx_set_engine_info      NEW
+gpgme_set_include_certs                CHANGED DEFAULT
+GPGME_INCLUDE_CERTS_DEFAULT    NEW
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
index d53f017..5061d3a 100644 (file)
@@ -1,3 +1,8 @@
+2005-04-28  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.texi (Included Certificates): Document
+       GPGME_INCLUDE_CERTS_DEFAULT.
+
 2005-01-12  Marcus Brinkmann  <marcus@g10code.de>
 
        * gpgme.texi (Engine Configuration): New section.
index f68b41b..9c6b42f 100644 (file)
@@ -2028,6 +2028,9 @@ default, only the sender's certificate is included.  The possible
 values of @var{nr_of_certs} are:
 
 @table @code
+@item GPGME_INCLUDE_CERTS_DEFAULT
+Fall back to the default of the crypto backend.  This is the default
+for GPGME.
 @item -2
 Include all certificates except the root certificate.
 @item -1
index 0a4a9ae..275db84 100644 (file)
@@ -1,3 +1,12 @@
+2005-04-28  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (GPGME_INCLUDE_CERTS_DEFAULT): New macro.
+       * engine-gpgsm.c (gpgsm_sign): Send the include-certs option after
+       the reset, just for cleanliness, and do not sent it at all if the
+       default is requested.
+       * gpgme.c (gpgme_set_include_certs): Allow to use
+       GPGME_INCLUDE_CERTS_DEFAULT.
+
 2005-04-21  Werner Koch  <wk@g10code.com>
 
        * verify.c (calc_sig_summary): Set the key revoked bit.
index ea6ccc7..c96be88 100644 (file)
@@ -1437,19 +1437,27 @@ gpgsm_sign (void *engine, gpgme_data_t in, gpgme_data_t out,
   if (!gpgsm)
     return gpg_error (GPG_ERR_INV_VALUE);
 
-  if (asprintf (&assuan_cmd, "OPTION include-certs %i", include_certs) < 0)
-    return gpg_error_from_errno (errno);
-  err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, assuan_cmd, NULL,NULL);
-  free (assuan_cmd);
-  if (err)
-    return err;
-
   /* We must send a reset because we need to reset the list of
      signers.  Note that RESET does not reset OPTION commands. */
   err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, "RESET", NULL, NULL);
   if (err)
     return err;
 
+  if (include_certs != GPGME_INCLUDE_CERTS_DEFAULT)
+    {
+      /* FIXME: Make sure that if we run multiple operations, that we
+        can reset any previously set value in case the default is
+        requested.  */
+
+      if (asprintf (&assuan_cmd, "OPTION include-certs %i", include_certs) < 0)
+       return gpg_error_from_errno (errno);
+      err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, assuan_cmd,
+                                        NULL, NULL);
+      free (assuan_cmd);
+      if (err)
+       return err;
+    }
+
   for (i = 0; (key = gpgme_signers_enum (ctx, i)); i++)
     {
       const char *s = key->subkeys ? key->subkeys->fpr : NULL;
index 9e5171c..5eb40be 100644 (file)
@@ -222,12 +222,14 @@ gpgme_get_textmode (gpgme_ctx_t ctx)
 
 
 /* Set the number of certifications to include in an S/MIME message.
-   The default is 1 (only the cert of the sender).  -1 means all
-   certs, and -2 means all certs except the root cert.  */
+   The default is GPGME_INCLUDE_CERTS_DEFAULT.  -1 means all certs,
+   and -2 means all certs except the root cert.  */
 void
 gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs)
 {
-  if (nr_of_certs < -2)
+  if (nr_of_certs == GPGME_INCLUDE_CERTS_DEFAULT)
+    ctx->include_certs = GPGME_INCLUDE_CERTS_DEFAULT;
+  else if (nr_of_certs < -2)
     ctx->include_certs = -2;
   else
     ctx->include_certs = nr_of_certs;
index 3db2d97..c3f5123 100644 (file)
@@ -706,6 +706,9 @@ void gpgme_set_textmode (gpgme_ctx_t ctx, int yes);
 /* Return non-zero if text mode is set in CTX.  */
 int gpgme_get_textmode (gpgme_ctx_t ctx);
 
+/* Use whatever the default of the backend crypto engine is.  */
+#define GPGME_INCLUDE_CERTS_DEFAULT    -256
+
 /* Include up to NR_OF_CERTS certificates in an S/MIME message.  */
 void gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs);