diff options
author | NIIBE Yutaka <[email protected]> | 2022-06-10 02:45:26 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2022-06-10 02:45:26 +0000 |
commit | 273b8ec1931d3aeef530e9262b2447e94d4b350a (patch) | |
tree | 768164d628c985300720be25918332a0d433d63c /scd/app-openpgp.c | |
parent | common,w32: Use LoadLibraryEx to fix a warning in mingw. (diff) | |
download | gnupg-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.c | 23 |
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; |