From 5264d3f58e8a8362900c3518bdd683ff9a23cccc Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 26 May 2022 12:01:16 +0900 Subject: scd: Return USAGE information for KEYINFO command. * scd/command.c (hlp_keyinfo): Update. (send_keyinfo): Add a USAGE argument. * scd/scdaemon.h (send_keyinfo): Add a USAGE argument. * scd/app-nks.c (set_usage_string): New. (do_learn_status_core, do_readkey): Use set_usage_string. (do_with_keygrip): Add USAGE to call send_keyinfo, using set_usage_string. * scd/app-openpgp.c (get_usage_string): New. (send_keypair_info): Use get_usage_string. (send_keyinfo_if_available): Add USAGE to call send_keyinfo, using get_usage_string. * scd/app-p15.c (set_usage_string): New. (send_keypairinfo): Use set_usage_string. (do_with_keygrip): Add USAGE to call send_keyinfo, using set_usage_string. * scd/app-piv.c (do_with_keygrip): Add USAGE to call send_keyinfo. -- Signed-off-by: NIIBE Yutaka --- scd/app-nks.c | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'scd/app-nks.c') diff --git a/scd/app-nks.c b/scd/app-nks.c index 31b91ac93..8b962722e 100644 --- a/scd/app-nks.c +++ b/scd/app-nks.c @@ -814,6 +814,21 @@ get_nks_tag (app_t app, int nks_app_id) return tag; } +static void +set_usage_string (char usagebuf[5], int i) +{ + int usageidx = 0; + if (filelist[i].issignkey) + usagebuf[usageidx++] = 's'; + if (filelist[i].isauthkey) + usagebuf[usageidx++] = 'a'; + if (filelist[i].isencrkey) + usagebuf[usageidx++] = 'e'; + if (!usageidx) + usagebuf[usageidx++] = '-'; + usagebuf[usageidx] = 0; +} + static void do_learn_status_core (app_t app, ctrl_t ctrl, unsigned int flags, int nks_app_id) @@ -856,7 +871,6 @@ do_learn_status_core (app_t app, ctrl_t ctrl, unsigned int flags, { char gripstr[40+1]; char usagebuf[5]; - int usageidx = 0; char *algostr = NULL; err = keygripstr_from_pk_file (app, filelist[i].fid, @@ -869,15 +883,7 @@ do_learn_status_core (app_t app, ctrl_t ctrl, unsigned int flags, { snprintf (id_buf, sizeof id_buf, "NKS-%s.%04X", tag, filelist[i].fid); - if (filelist[i].issignkey) - usagebuf[usageidx++] = 's'; - if (filelist[i].isauthkey) - usagebuf[usageidx++] = 'a'; - if (filelist[i].isencrkey) - usagebuf[usageidx++] = 'e'; - if (!usageidx) - usagebuf[usageidx++] = '-'; - usagebuf[usageidx] = 0; + set_usage_string (usagebuf, i); send_status_info (ctrl, "KEYPAIRINFO", gripstr, 40, id_buf, strlen (id_buf), @@ -1280,7 +1286,6 @@ do_readkey (app_t app, ctrl_t ctrl, const char *keyid, unsigned int flags, { char *algostr; char usagebuf[5]; - int usageidx = 0; char id_buf[100]; if (app_help_get_keygrip_string_pk (*pk, *pklen, NULL, NULL, NULL, @@ -1290,15 +1295,7 @@ do_readkey (app_t app, ctrl_t ctrl, const char *keyid, unsigned int flags, snprintf (id_buf, sizeof id_buf, "NKS-%s.%04X", get_nks_tag (app, filelist[i].nks_app_id), filelist[i].fid); - if (filelist[i].issignkey) - usagebuf[usageidx++] = 's'; - if (filelist[i].isauthkey) - usagebuf[usageidx++] = 'a'; - if (filelist[i].isencrkey) - usagebuf[usageidx++] = 'e'; - if (!usageidx) - usagebuf[usageidx++] = '-'; - usagebuf[usageidx] = 0; + set_usage_string (usagebuf, i); send_status_info (ctrl, "KEYPAIRINFO", keygripstr, strlen (keygripstr), id_buf, strlen (id_buf), @@ -2334,6 +2331,7 @@ do_with_keygrip (app_t app, ctrl_t ctrl, int action, { char idbuf[20]; const char *tagstr; + char usagebuf[5]; if (app->app_local->active_nks_app == NKS_APP_ESIGN) tagstr = "ESIGN"; @@ -2348,7 +2346,8 @@ do_with_keygrip (app_t app, ctrl_t ctrl, int action, snprintf (idbuf, sizeof idbuf, "NKS-%s.%04X", tagstr, filelist[idx].fid); - send_keyinfo (ctrl, data, keygripstr, serialno, idbuf); + set_usage_string (usagebuf, idx); + send_keyinfo (ctrl, data, keygripstr, serialno, idbuf, usagebuf); } } -- cgit v1.2.3