aboutsummaryrefslogtreecommitdiffstats
path: root/tools/card-call-scd.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2019-02-05 13:48:49 +0000
committerWerner Koch <[email protected]>2019-02-05 14:01:45 +0000
commit3231ecdafd71ac47b734469b07170756979ede72 (patch)
tree223b0e777109729dd7f26f8334815d2457e3ca15 /tools/card-call-scd.c
parentcard: Implement non-interactive mode. (diff)
downloadgnupg-3231ecdafd71ac47b734469b07170756979ede72.tar.gz
gnupg-3231ecdafd71ac47b734469b07170756979ede72.zip
scd: Allow standard keyref scheme for app-openpgp.
* scd/app-openpgp.c (do_change_pin): Allow prefixing the CHVNO with "OPENPGP." * tools/card-call-scd.c (scd_change_pin): Change API to use strings. * tools/gpg-card-tool.c (cmd_passwd): Adjust for change. (cmd_unblock): Ditto. -- The generic keyref allows for better error detection in case a keyref is send to a wrong card. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tools/card-call-scd.c')
-rw-r--r--tools/card-call-scd.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/tools/card-call-scd.c b/tools/card-call-scd.c
index c51282f14..7add56daf 100644
--- a/tools/card-call-scd.c
+++ b/tools/card-call-scd.c
@@ -1368,28 +1368,23 @@ scd_cardlist (strlist_t *result)
* 101: Set a new PIN and reset the retry counter
* 102: For v1 cars: Same as 101.
* For v2 cards: Set a new Reset Code.
- * SERIALNO is not used.
*/
gpg_error_t
-scd_change_pin (int chvno)
+scd_change_pin (const char *pinref, int reset_mode)
{
gpg_error_t err;
char line[ASSUAN_LINELENGTH];
- const char *reset = "";
struct default_inq_parm_s dfltparm;
memset (&dfltparm, 0, sizeof dfltparm);
- if (chvno >= 100)
- reset = "--reset";
- chvno %= 100;
-
err = start_agent (0);
if (err)
return err;
dfltparm.ctx = agent_ctx;
- snprintf (line, sizeof line, "SCD PASSWD %s %d", reset, chvno);
+ snprintf (line, sizeof line, "SCD PASSWD%s %s",
+ reset_mode? " --reset":"", pinref);
err = assuan_transact (agent_ctx, line,
NULL, NULL,
default_inq_cb, &dfltparm,