gpg: Fix computation of compliance with CO_DE_VS.
authorJustus Winter <justus@g10code.com>
Thu, 8 Jun 2017 11:55:47 +0000 (13:55 +0200)
committerJustus Winter <justus@g10code.com>
Thu, 8 Jun 2017 11:57:53 +0000 (13:57 +0200)
* g10/mainproc.c (proc_encrypted): Symmetric encryption is also in
compliance with CO_DE_VS.

GnuPG-bug-id: 3059
Signed-off-by: Justus Winter <justus@g10code.com>
g10/mainproc.c

index 26cd0a9..2db8de1 100644 (file)
@@ -602,8 +602,8 @@ proc_encrypted (CTX c, PACKET *pkt)
 
   /* Compute compliance with CO_DE_VS.  */
   if (!result && is_status_enabled ()
-      /* Symmetric encryption voids compliance.  */
-      && c->symkeys == 0
+      /* Symmetric encryption and asymmetric encryption voids compliance.  */
+      && ((c->symkeys > 0) != (c->pkenc_list != NULL))
       /* Overriding session key voids compliance.  */
       && opt.override_session_key == NULL
       /* Check symmetric cipher.  */
@@ -613,7 +613,8 @@ proc_encrypted (CTX c, PACKET *pkt)
       int compliant = 1;
       PKT_public_key *pk = xmalloc (sizeof *pk);
 
-      log_assert (c->pkenc_list || !"where else did the session key come from!?");
+      log_assert (c->pkenc_list || c->symkeys
+                  || !"where else did the session key come from!?");
 
       /* Now check that every key used to encrypt the session key is
        * compliant.  */