aboutsummaryrefslogtreecommitdiffstats
path: root/g10/cardglue.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2003-10-21 18:22:21 +0000
committerWerner Koch <[email protected]>2003-10-21 18:22:21 +0000
commit441aeb85f21436b1ae2ecd1de420138016baba57 (patch)
treefc1c2ed359f38e7700ef53c0872117f571712d4b /g10/cardglue.c
parent* configure.ac: Include -ldl when card support is used. (diff)
downloadgnupg-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.c23
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);
+}
+