From b2363c1dd97d27ec8c79d508a4decc8337e3f157 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 5 Feb 2019 14:48:49 +0100 Subject: [PATCH] scd: Allow standard keyref scheme for app-openpgp. * scd/app-openpgp.c (do_change_pin): Allow prefixing the CHVNO with "OPENPGP." -- The generic keyref allows for better error detection in case a keyref is send to a wrong card. This has been taken from master commit 3231ecdafd71ac47b734469b07170756979ede72 which has additional changed for gpg-card-tool, which is only available there. Signed-off-by: Werner Koch (cherry picked from commit 6651a0640d0f1b4dd161210dc55974d9b93b7253) --- scd/app-openpgp.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 0b4b435a6..2af3988bc 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -2839,6 +2839,17 @@ do_change_pin (app_t app, ctrl_t ctrl, const char *chvnostr, int pinlen0 = 0; int pinlen = 0; + if (digitp (chvnostr)) + chvno = atoi (chvnostr); + else if (!ascii_strcasecmp (chvnostr, "OPENPGP.1")) + chvno = 1; + else if (!ascii_strcasecmp (chvnostr, "OPENPGP.2")) + chvno = 2; + else if (!ascii_strcasecmp (chvnostr, "OPENPGP.3")) + chvno = 3; + else + return gpg_error (GPG_ERR_INV_ID); + if (digitp (chvnostr)) chvno = atoi (chvnostr); else if (!ascii_strcasecmp (chvnostr, "OPENPGP.1"))