Add new signature_t member chain_model.
authorWerner Koch <wk@gnupg.org>
Tue, 7 Aug 2007 15:21:50 +0000 (15:21 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 7 Aug 2007 15:21:50 +0000 (15:21 +0000)
NEWS
doc/ChangeLog
doc/gpgme.texi
gpgme/ChangeLog
gpgme/gpgme.h
gpgme/verify.c

diff --git a/NEWS b/NEWS
index f1f0845c571d834d85dbb0c2476e044465427d0a..26b10d1cb637db5da7ecce337398ec40833f045b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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)
 ------------------------------------------------
index 1109437b199d52778cb9cf506bf3083c5ddaace9..f711a126d434c79c882d147c580077a68482bb01 100644 (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>
 
        * gpgme.texi (Library Version Check): Add remark that the socket
index 61db9cf861663bebec7b7a1657ae8cf3869a42e9..f480715e26f67461adb037e532a7e21cb2609939 100644 (file)
@@ -4076,6 +4076,16 @@ Values are:
 Depending on the configuration of the engine, this metric may also be
 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
 The validity of the signature.
 
index 88006ac9698789251b0dd276e3d1e205d4b2c2de..f0622bfe221bbd03f21663ce6c812e0676c3a413 100644 (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>
 
        * w32-glib-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS flag.
@@ -12,7 +17,7 @@
 
 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.
        (TOHEX): New macro.
        (_gpgme_debug_buffer): New function.
index 9ee8b079d739fb7b2deede5e176c92a063050c8f..bd9cb8855149c0477cca867b68dc1a73f19de744 100644 (file)
@@ -1,6 +1,6 @@
 /* gpgme.h - Public interface to GnuPG Made Easy.
    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.
  
@@ -1323,8 +1323,11 @@ struct _gpgme_signature
   /* PKA status: 0 = not available, 1 = bad, 2 = okay, 3 = RFU. */
   unsigned int pka_trust : 2;
 
+  /* Validity has been verified using the chain model. */
+  unsigned int chain_model : 1;
+
   /* Internal to GPGME, do not use.  */
-  int _unused : 29;
+  int _unused : 28;
 
   gpgme_validity_t validity;
   gpgme_error_t validity_reason;
index a9730e59ec6168e3b14c2ab32af9f0057ad93ab0..71221bb71cea50470709bf6c44061483420ec5e7 100644 (file)
@@ -541,10 +541,21 @@ parse_trust (gpgme_signature_t sig, gpgme_status_code_t code, char *args)
       break;
     }
 
+  sig->validity_reason = 0;
+  sig->chain_model = 0;
   if (*args)
-    sig->validity_reason = _gpgme_map_gnupg_error (args);
-  else
-    sig->validity_reason = 0;
+    {
+      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;
 }