diff options
author | Werner Koch <[email protected]> | 2005-05-23 20:16:21 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2005-05-23 20:16:21 +0000 |
commit | 2f63b5299c23f1073b8d7d9540875134b6f81007 (patch) | |
tree | fad1503bb4e9b286d604fd6365c79110f26dfcce /g10/cardglue.c | |
parent | * cardglue.c (open_card): Check USE_AGENT. (diff) | |
download | gnupg-2f63b5299c23f1073b8d7d9540875134b6f81007.tar.gz gnupg-2f63b5299c23f1073b8d7d9540875134b6f81007.zip |
* app-openpgp.c, app-common.h: Again updated from gnupg 1.9 CVS.
* cardglue.c (open_card): Check USE_AGENT.
(agent_scd_checkpin): Implemented Assuan part.
(agent_scd_change_pin): Ditto.
Diffstat (limited to 'g10/cardglue.c')
-rw-r--r-- | g10/cardglue.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/g10/cardglue.c b/g10/cardglue.c index c55579f09..f8272ecd2 100644 --- a/g10/cardglue.c +++ b/g10/cardglue.c @@ -1293,7 +1293,6 @@ int agent_scd_change_pin (int chvno) { app_t app; - char chvnostr[20]; int reset = 0; int rc; @@ -1306,10 +1305,19 @@ agent_scd_change_pin (int chvno) if (app->assuan_ctx) { - rc = gpg_error (GPG_ERR_CARD); + char line[ASSUAN_LINELENGTH]; + + snprintf (line, DIM(line)-1, "SCD PASSWD%s %d", + reset? " --reset":"", chvno); + line[DIM(line)-1] = 0; + rc = test_transact (assuan_transact (app->assuan_ctx, line, + NULL, NULL, NULL, NULL, NULL, NULL), + "SCD PASSWD"); } else { + char chvnostr[50]; + sprintf (chvnostr, "%d", chvno); rc = app->fnc.change_pin (app, NULL, chvnostr, reset, pin_cb, NULL); @@ -1335,7 +1343,14 @@ agent_scd_checkpin (const char *serialnobuf) if (app->assuan_ctx) { - rc = gpg_error (GPG_ERR_CARD); + char line[ASSUAN_LINELENGTH]; + + if (15 + strlen (serialnobuf) > DIM(line)-1) + return gpg_error (GPG_ERR_CARD); + stpcpy (stpcpy (line, "SCD CHECKPIN "), serialnobuf); + rc = test_transact (assuan_transact (app->assuan_ctx, line, + NULL, NULL, NULL, NULL, NULL, NULL), + "SCD CHECKPIN"); } else { |