diff options
author | Werner Koch <[email protected]> | 2003-10-21 18:22:21 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2003-10-21 18:22:21 +0000 |
commit | 441aeb85f21436b1ae2ecd1de420138016baba57 (patch) | |
tree | fc1c2ed359f38e7700ef53c0872117f571712d4b /g10/cardglue.c | |
parent | * configure.ac: Include -ldl when card support is used. (diff) | |
download | gnupg-441aeb85f21436b1ae2ecd1de420138016baba57.tar.gz gnupg-441aeb85f21436b1ae2ecd1de420138016baba57.zip |
* passphrase.c (ask_passphrase): Add optional promptid arg.
Changed all callers.
* cardglue.c (pin_cb): Use it here, so the machine interface can
tell whether the Admin PIN is requested.
* cardglue.c (agent_scd_checkpin): New.
* misc.c (openpgp_pk_algo_usage): Added AUTH usage.
* app-openpgp.c (check_against_given_fingerprint): New. Factored
out that code elsewhere.
(do_check_pin): New.
* card-util.c (card_edit): New command "passwd". Add logic to
check the PIN in advance.
(card_status): Add new args to return the serial number. Changed
all callers.
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); +} + |