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.
This commit is contained in:
Marcus Brinkmann 2005-04-28 16:11:34 +00:00
parent 826736608a
commit 02a1dbee30
7 changed files with 51 additions and 10 deletions

11
NEWS
View File

@ -4,10 +4,21 @@ Noteworthy changes in version 1.1.0 (unreleased)
* You can now configure the backend engine file name and home * You can now configure the backend engine file name and home
directory to be used, as default and per context. 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_set_engine_info NEW
gpgme_ctx_get_engine_info NEW gpgme_ctx_get_engine_info NEW
gpgme_ctx_set_engine_info NEW gpgme_ctx_set_engine_info NEW
gpgme_set_include_certs CHANGED DEFAULT
GPGME_INCLUDE_CERTS_DEFAULT NEW
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View 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> 2005-01-12 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Engine Configuration): New section. * gpgme.texi (Engine Configuration): New section.

View File

@ -2028,6 +2028,9 @@ default, only the sender's certificate is included. The possible
values of @var{nr_of_certs} are: values of @var{nr_of_certs} are:
@table @code @table @code
@item GPGME_INCLUDE_CERTS_DEFAULT
Fall back to the default of the crypto backend. This is the default
for GPGME.
@item -2 @item -2
Include all certificates except the root certificate. Include all certificates except the root certificate.
@item -1 @item -1

View 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> 2005-04-21 Werner Koch <wk@g10code.com>
* verify.c (calc_sig_summary): Set the key revoked bit. * verify.c (calc_sig_summary): Set the key revoked bit.

View File

@ -1437,19 +1437,27 @@ gpgsm_sign (void *engine, gpgme_data_t in, gpgme_data_t out,
if (!gpgsm) if (!gpgsm)
return gpg_error (GPG_ERR_INV_VALUE); 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 /* We must send a reset because we need to reset the list of
signers. Note that RESET does not reset OPTION commands. */ signers. Note that RESET does not reset OPTION commands. */
err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, "RESET", NULL, NULL); err = gpgsm_assuan_simple_command (gpgsm->assuan_ctx, "RESET", NULL, NULL);
if (err) if (err)
return 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++) for (i = 0; (key = gpgme_signers_enum (ctx, i)); i++)
{ {
const char *s = key->subkeys ? key->subkeys->fpr : NULL; const char *s = key->subkeys ? key->subkeys->fpr : NULL;

View File

@ -222,12 +222,14 @@ gpgme_get_textmode (gpgme_ctx_t ctx)
/* Set the number of certifications to include in an S/MIME message. /* 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 The default is GPGME_INCLUDE_CERTS_DEFAULT. -1 means all certs,
certs, and -2 means all certs except the root cert. */ and -2 means all certs except the root cert. */
void void
gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs) 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; ctx->include_certs = -2;
else else
ctx->include_certs = nr_of_certs; ctx->include_certs = nr_of_certs;

View 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. */ /* Return non-zero if text mode is set in CTX. */
int gpgme_get_textmode (gpgme_ctx_t 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. */ /* 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); void gpgme_set_include_certs (gpgme_ctx_t ctx, int nr_of_certs);