[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