aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--NEWS11
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gpgme.texi3
-rw-r--r--gpgme/ChangeLog9
-rw-r--r--gpgme/engine-gpgsm.c22
-rw-r--r--gpgme/gpgme.c8
-rw-r--r--gpgme/gpgme.h3
7 files changed, 51 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index 221ec476..431b1e19 100644
--- 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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/ChangeLog b/doc/ChangeLog
index d53f017b..5061d3a3 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-28 Marcus Brinkmann <[email protected]>
+
+ * gpgme.texi (Included Certificates): Document
+ GPGME_INCLUDE_CERTS_DEFAULT.
+
2005-01-12 Marcus Brinkmann <[email protected]>
* gpgme.texi (Engine Configuration): New section.
diff --git a/doc/gpgme.texi b/doc/gpgme.texi
index f68b41be..9c6b42fb 100644
--- a/doc/gpgme.texi
+++ b/doc/gpgme.texi
@@ -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
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 0a4a9ae2..275db84b 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,3 +1,12 @@
+2005-04-28 Marcus Brinkmann <[email protected]>
+
+ * 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 <[email protected]>
* verify.c (calc_sig_summary): Set the key revoked bit.
diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c
index ea6ccc74..c96be888 100644
--- a/gpgme/engine-gpgsm.c
+++ b/gpgme/engine-gpgsm.c
@@ -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;
diff --git a/gpgme/gpgme.c b/gpgme/gpgme.c
index 9e5171c9..5eb40bea 100644
--- a/gpgme/gpgme.c
+++ b/gpgme/gpgme.c
@@ -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;
diff --git a/gpgme/gpgme.h b/gpgme/gpgme.h
index 3db2d972..c3f5123b 100644
--- a/gpgme/gpgme.h
+++ b/gpgme/gpgme.h
@@ -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);