aboutsummaryrefslogtreecommitdiffstats
path: root/agent/divert-scd.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/divert-scd.c')
-rw-r--r--agent/divert-scd.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/agent/divert-scd.c b/agent/divert-scd.c
index f176a6b94..a2de217bd 100644
--- a/agent/divert-scd.c
+++ b/agent/divert-scd.c
@@ -166,6 +166,8 @@ encode_md_for_card (const unsigned char *digest, size_t digestlen, int algo,
'A' = The PIN is an Admin PIN, SO-PIN or alike.
'P' = The PIN is a PUK (Personal Unblocking Key).
'R' = The PIN is a Reset Code.
+ 'I' = Ignore using the default prompt and use 'info' as the entire
+ prompt. Cannot be used with other flags.
Example:
@@ -185,6 +187,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
int newpin = 0;
int resetcode = 0;
int is_puk = 0;
+ int ignore = 0;
const char *again_text = NULL;
const char *prompt = "PIN";
@@ -212,6 +215,8 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
prompt = _("Reset Code");
resetcode = 1;
}
+ else if (*s == 'I')
+ ignore = 1;
}
info = ends+1;
any_flags = 1;
@@ -219,6 +224,9 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
else if (info && *info == '|')
log_debug ("pin_cb called without proper PIN info hack\n");
+ if (ignore)
+ any_flags = 0;
+
/* If BUF has been passed as NULL, we are in keypad mode: The
callback opens the popup and immediatley returns. */
if (!buf)
@@ -305,8 +313,8 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
}
else
{
- char *desc;
- if ( asprintf (&desc,
+ char *desc = NULL;
+ if (!ignore && asprintf (&desc,
_("Please enter the PIN%s%s%s to unlock the card"),
info? " (`":"",
info? info:"",