aboutsummaryrefslogtreecommitdiffstats
path: root/scd/app-openpgp.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2022-06-10 02:45:26 +0000
committerNIIBE Yutaka <[email protected]>2022-06-10 02:45:26 +0000
commit273b8ec1931d3aeef530e9262b2447e94d4b350a (patch)
tree768164d628c985300720be25918332a0d433d63c /scd/app-openpgp.c
parentcommon,w32: Use LoadLibraryEx to fix a warning in mingw. (diff)
downloadgnupg-273b8ec1931d3aeef530e9262b2447e94d4b350a.tar.gz
gnupg-273b8ec1931d3aeef530e9262b2447e94d4b350a.zip
scd,openpgp: Support READCERT by keygrip.
* scd/app-openpgp.c (do_readcert): Allow use of keygrip. -- GnuPG-bug-id: 6002 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/app-openpgp.c')
-rw-r--r--scd/app-openpgp.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index 3affda583..8bb346a86 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -2266,7 +2266,28 @@ do_readcert (app_t app, const char *certid,
*cert = NULL;
*certlen = 0;
- if (!ascii_strcasecmp (certid, "OPENPGP.3"))
+ if (strlen (certid) == 40)
+ {
+ int keyno;
+ const unsigned char *keygrip_str;
+
+ for (keyno = 0; keyno < 3; keyno++)
+ {
+ keygrip_str = app->app_local->pk[keyno].keygrip_str;
+ if (!strncmp (keygrip_str, certid, 40))
+ break;
+ }
+
+ if (keyno == 2)
+ ;
+ else if (keyno == 1)
+ occurrence = 1;
+ else if (keyno == 0)
+ occurrence = 2;
+ else
+ return gpg_error (GPG_ERR_INV_ID);
+ }
+ else if (!ascii_strcasecmp (certid, "OPENPGP.3"))
;
else if (!ascii_strcasecmp (certid, "OPENPGP.2"))
occurrence = 1;