* packet.h, main.h, sig-check.c (signature_check2, check_key_signature2,
[gnupg.git] / g10 / mainproc.c
index faba197..0bd1a56 100644 (file)
@@ -722,9 +722,9 @@ do_check_sig( CTX c, KBNODE node, int *is_selfsig, int *is_expkey )
     }
     else
        return G10ERR_SIG_CLASS;
-    rc = signature_check2( sig, md, &dummy, is_expkey );
+    rc = signature_check2( sig, md, &dummy, is_expkey, NULL );
     if( rc == G10ERR_BAD_SIGN && md2 )
-       rc = signature_check2( sig, md2, &dummy, is_expkey );
+       rc = signature_check2( sig, md2, &dummy, is_expkey, NULL );
     md_close(md);
     md_close(md2);
 
@@ -1278,6 +1278,28 @@ check_sig_and_print( CTX c, KBNODE node )
        if( keyserver_import_keyid ( sig->keyid )==0 )
            rc = do_check_sig(c, node, NULL, &is_expkey );
     }
+
+    /* If the key still isn't found, try to inform the user where it
+       can be found. */
+
+    if(rc==G10ERR_NO_PUBKEY && opt.verify_options&VERIFY_SHOW_KEYSERVER)
+      {
+       const byte *p;
+       int seq=0;
+       size_t n;
+
+       while((p=enum_sig_subpkt(sig->hashed,SIGSUBPKT_PREF_KS,&n,&seq,NULL)))
+         {
+           /* According to my favorite copy editor, in English
+              grammar, you say "at" if the key is located on a web
+              page, but "from" if it is located on a keyserver.  I'm
+              not going to even try to make two strings here :) */
+           log_info(_("Key available at: ") );
+           print_string( log_stream(), p, n, 0 );
+           putc( '\n', log_stream() );
+         }
+      }
+
     if( !rc || rc == G10ERR_BAD_SIGN ) {
        KBNODE un, keyblock;
        int count=0, statno;
@@ -1402,8 +1424,15 @@ check_sig_and_print( CTX c, KBNODE node )
 
        if( !rc )
          {
-           show_notation(sig,0,1);
-           show_policy_url(sig,0,1);
+           if(opt.verify_options&VERIFY_SHOW_POLICY)
+             show_policy_url(sig,0,1);
+           else
+             show_policy_url(sig,0,2);
+
+           if(opt.verify_options&VERIFY_SHOW_NOTATION)
+             show_notation(sig,0,1);
+           else
+             show_notation(sig,0,2);
          }
 
        if( !rc && is_status_enabled() ) {