diff options
Diffstat (limited to '')
-rw-r--r-- | g10/cardglue.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/g10/cardglue.c b/g10/cardglue.c index 0cbb70336..b258e390f 100644 --- a/g10/cardglue.c +++ b/g10/cardglue.c @@ -508,13 +508,16 @@ pin_cb (void *opaque, const char *info, char **retstr) { char *value; int canceled; + int isadmin = (info && strstr (info, "dmin")); + *retstr = NULL; log_debug ("asking for PIN '%s'\n", info); value = ask_passphrase (info, - info && strstr (info, "dmin")? - _("Enter Admin PIN: ") : _("Enter PIN: "), + isadmin? "passphrase.adminpin.ask" + : "passphrase.pin.ask", + isadmin? _("Enter Admin PIN: ") : _("Enter PIN: "), &canceled); if (!value && canceled) return -1; @@ -645,7 +648,6 @@ agent_scd_pkdecrypt (const char *serialno, const unsigned char *indata, size_t indatalen, unsigned char **r_buf, size_t *r_buflen) { - APP app; *r_buf = NULL; @@ -680,3 +682,18 @@ agent_scd_change_pin (int chvno) pin_cb, NULL); } +/* Perform a CHECKPIN operation. SERIALNO should be the seriial + number of the card - optioanlly followed by the fingerprint; + however the fingerprint is ignored here. */ +int +agent_scd_checkpin (const char *serialnobuf) +{ + APP app; + + app = current_app? current_app : open_card (); + if (!app) + return gpg_error (GPG_ERR_CARD); + + return app->fnc.check_pin (app, serialnobuf, pin_cb, NULL); +} + |