From e955ca245ea08e68ae2397f1583c8728d72acbd8 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 15 Nov 2018 13:57:31 +0900 Subject: [PATCH] card: Display UIF setting. * g10/call-agent.h (agent_card_info_s): Add UIF fields. * g10/call-agent.c (learn_status_cb): Put UIF DOs info. * g10/card-util.c (current_card_status): Output for UIF. Signed-off-by: NIIBE Yutaka --- g10/call-agent.c | 11 +++++++++++ g10/call-agent.h | 3 ++- g10/card-util.c | 11 +++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/g10/call-agent.c b/g10/call-agent.c index 2dbacf4ef..11011aea4 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -711,6 +711,17 @@ learn_status_cb (void *opaque, const char *line) { parm->kdf_do_enabled = 1; } + else if (keywordlen == 5 && !memcmp (keyword, "UIF-", 4) + && strchr("123", keyword[4])) + { + unsigned char *data; + int no = keyword[4] - '1'; + + log_assert (no >= 0 && no <= 2); + data = unescape_status_string (line); + parm->uif[no] = (data[0] != 0xff); + xfree (data); + } return 0; } diff --git a/g10/call-agent.h b/g10/call-agent.h index 1d232f7be..8ea8ffea6 100644 --- a/g10/call-agent.h +++ b/g10/call-agent.h @@ -72,7 +72,8 @@ struct agent_card_info_s unsigned int bt:1; /* Button for confirmation available. */ } extcap; unsigned int status_indicator; - int kdf_do_enabled; /* Card has a KDF object */ + int kdf_do_enabled; /* True if card has a KDF object. */ + int uif[3]; /* True if User Interaction Flag is on. */ }; diff --git a/g10/card-util.c b/g10/card-util.c index 8de061aa4..eca248433 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -516,6 +516,11 @@ current_card_status (ctrl_t ctrl, estream_t fp, { es_fprintf (fp, "kdf:%s:\n", info.kdf_do_enabled ? "on" : "off"); } + if (info.extcap.bt) + { + es_fprintf (fp, "uif:%d:%d:%d:\n", + info.uif[0], info.uif[1], info.uif[2]); + } for (i=0; i < 4; i++) { @@ -627,6 +632,12 @@ current_card_status (ctrl_t ctrl, estream_t fp, tty_fprintf (fp, "KDF setting ......: %s\n", info.kdf_do_enabled ? "on" : "off"); } + if (info.extcap.bt) + { + tty_fprintf (fp, "UIF setting ......: Sign=%s Decrypt=%s Auth=%s\n", + info.uif[0] ? "on" : "off", info.uif[1] ? "on" : "off", + info.uif[2] ? "on" : "off"); + } tty_fprintf (fp, "Signature key ....:"); print_shax_fpr (fp, info.fpr1len? info.fpr1:NULL, info.fpr1len); if (info.fpr1len && info.fpr1time)