Add new signature_t member chain_model.

This commit is contained in:
Werner Koch 2007-08-07 15:21:50 +00:00
parent 5e00a176f5
commit bc82a66514
6 changed files with 43 additions and 6 deletions

4
NEWS
View File

@ -2,6 +2,10 @@ Noteworthy changes in version 1.1.6 (unreleased)
------------------------------------------------ ------------------------------------------------
* Interface changes relative to the 1.1.1 release:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gpgme_signature_t EXTENDED: New field chain_model.
Noteworthy changes in version 1.1.5 (2007-07-09) Noteworthy changes in version 1.1.5 (2007-07-09)
------------------------------------------------ ------------------------------------------------

View File

@ -1,3 +1,7 @@
2007-08-07 Werner Koch <wk@g10code.com>
* gpgme.texi (Verify): Describe chain_model.
2007-07-12 Werner Koch <wk@g10code.com> 2007-07-12 Werner Koch <wk@g10code.com>
* gpgme.texi (Library Version Check): Add remark that the socket * gpgme.texi (Library Version Check): Add remark that the socket

View File

@ -4076,6 +4076,16 @@ Values are:
Depending on the configuration of the engine, this metric may also be Depending on the configuration of the engine, this metric may also be
reflected by the validity of the signature. reflected by the validity of the signature.
@item unsigned int chain_model : 1
This is true if the validity of the signature has been checked using the
chain model. In the chain model the time the signature has been created
must be within the validity period of the certificate and the time the
certificate itself has been created must be within the validity period
of the issuing certificate. In contrast the default validation model
checks the validity of signature as well at the entire certificate chain
at the current time.
@item gpgme_validity_t validity @item gpgme_validity_t validity
The validity of the signature. The validity of the signature.

View File

@ -1,3 +1,8 @@
2007-08-07 Werner Koch <wk@g10code.com>
* gpgme.h (struct _gpgme_signature): Add member CHAIN_MODEL.
* verify.c (parse_trust): Set Chain_MODEL.
2007-08-02 Werner Koch <wk@g10code.com> 2007-08-02 Werner Koch <wk@g10code.com>
* w32-glib-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS flag. * w32-glib-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS flag.
@ -12,7 +17,7 @@
2007-07-17 Marcus Brinkmann <marcus@g10code.de> 2007-07-17 Marcus Brinkmann <marcus@g10code.de>
* debug.c:;5B Include <errno.h> and "debug.h". * debug.c: Include <errno.h> and "debug.h".
(_gpgme_debug): Save and restore ERRNO. (_gpgme_debug): Save and restore ERRNO.
(TOHEX): New macro. (TOHEX): New macro.
(_gpgme_debug_buffer): New function. (_gpgme_debug_buffer): New function.

View File

@ -1,6 +1,6 @@
/* gpgme.h - Public interface to GnuPG Made Easy. /* gpgme.h - Public interface to GnuPG Made Easy.
Copyright (C) 2000 Werner Koch (dd9jn) Copyright (C) 2000 Werner Koch (dd9jn)
Copyright (C) 2001, 2002, 2003, 2004, 2005 g10 Code GmbH Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 g10 Code GmbH
This file is part of GPGME. This file is part of GPGME.
@ -1323,8 +1323,11 @@ struct _gpgme_signature
/* PKA status: 0 = not available, 1 = bad, 2 = okay, 3 = RFU. */ /* PKA status: 0 = not available, 1 = bad, 2 = okay, 3 = RFU. */
unsigned int pka_trust : 2; unsigned int pka_trust : 2;
/* Validity has been verified using the chain model. */
unsigned int chain_model : 1;
/* Internal to GPGME, do not use. */ /* Internal to GPGME, do not use. */
int _unused : 29; int _unused : 28;
gpgme_validity_t validity; gpgme_validity_t validity;
gpgme_error_t validity_reason; gpgme_error_t validity_reason;

View File

@ -541,10 +541,21 @@ parse_trust (gpgme_signature_t sig, gpgme_status_code_t code, char *args)
break; break;
} }
if (*args)
sig->validity_reason = _gpgme_map_gnupg_error (args);
else
sig->validity_reason = 0; sig->validity_reason = 0;
sig->chain_model = 0;
if (*args)
{
sig->validity_reason = _gpgme_map_gnupg_error (args);
while (*args && *args != ' ')
args++;
if (*args)
{
while (*args == ' ')
args++;
if (!strncmp (args, "cm", 2) && (args[2] == ' ' || !args[2]))
sig->chain_model = 1;
}
}
return 0; return 0;
} }