[git] GnuPG - branch, master, updated. gnupg-2.1.20-100-g97a2394

by NIIBE Yutaka cvs at cvs.gnupg.org
Thu Apr 27 03:37:33 CEST 2017


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".

The branch, master has been updated
       via  97a2394ecafaa6f58e4a1f70ecfd04408dc15606 (commit)
      from  2262a80c5f44433a08bc0e21b77d9efe51596f21 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 97a2394ecafaa6f58e4a1f70ecfd04408dc15606
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Thu Apr 27 10:33:58 2017 +0900

    g10: For signing, prefer available card key when no -u option.
    
    * g10/skclist.c (build_sk_list): Ask gpg-agent if card is available.
    Then, use the card key if any.
    
    --
    
    GnuPG-bug-id: 1983
    Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>

diff --git a/g10/skclist.c b/g10/skclist.c
index a016b62..489277c 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -31,6 +31,7 @@
 #include "keydb.h"
 #include "../common/util.h"
 #include "../common/i18n.h"
+#include "call-agent.h"
 
 
 /* Return true if Libgcrypt's RNG is in faked mode.  */
@@ -126,13 +127,38 @@ build_sk_list (ctrl_t ctrl,
      select the best key.  If a key specification is ambiguous and we
      are in batch mode, die.  */
 
-  if (!locusr) /* No user ids given - use the default key.  */
+  if (!locusr) /* No user ids given - use the card key or the default key.  */
     {
+      struct agent_card_info_s info;
       PKT_public_key *pk;
+      char *serialno;
 
+      memset (&info, 0, sizeof(info));
       pk = xmalloc_clear (sizeof *pk);
       pk->req_usage = use;
-      if ((err = getkey_byname (ctrl, NULL, pk, NULL, 1, NULL)))
+
+      /* Check if a card is available.  If any, use it.  */
+      err = agent_scd_serialno (&serialno, NULL);
+      if (!err)
+        {
+          xfree (serialno);
+          err = agent_scd_getattr ("KEY-FPR", &info);
+          if (err)
+            log_error ("error retrieving key fingerprint from card: %s\n",
+                       gpg_strerror (err));
+          else if (info.fpr1valid)
+            {
+              if ((err = get_pubkey_byfprint (ctrl, pk, NULL, info.fpr1, 20)))
+                {
+                  info.fpr1valid = 0;
+                  log_error ("error on card key to sign: %s, try default\n",
+                             gpg_strerror (err));
+                }
+            }
+        }
+
+      if (!info.fpr1valid
+          && (err = getkey_byname (ctrl, NULL, pk, NULL, 1, NULL)))
 	{
 	  free_public_key (pk);
 	  pk = NULL;

-----------------------------------------------------------------------

Summary of changes:
 g10/skclist.c | 30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list