aboutsummaryrefslogtreecommitdiffstats
path: root/scd
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-08-05 14:19:32 +0000
committerWerner Koch <[email protected]>2024-08-05 14:19:32 +0000
commita8cef7ebc2b8c3aa1477b61fecfaa8e5d63446d7 (patch)
tree9075b0342a709f8b08471f007eee7b5410fff03e /scd
parentscd: New getinfo subcommand "dump_state". (diff)
downloadgnupg-a8cef7ebc2b8c3aa1477b61fecfaa8e5d63446d7.tar.gz
gnupg-a8cef7ebc2b8c3aa1477b61fecfaa8e5d63446d7.zip
scd: New getinfo subcommand "manufacturer"
* scd/command.c (cmd_getinfo): Add subcommand "manufacturer". * scd/app-openpgp.c (get_manufacturer): Rename to ... (app_openpgp_manufacturer): this and make global. -- Example: $ gpg-connect-agent 'scd getinfo manufacturer 42' /bye D Magrathea OK
Diffstat (limited to 'scd')
-rw-r--r--scd/app-common.h1
-rw-r--r--scd/app-openpgp.c6
-rw-r--r--scd/command.c8
3 files changed, 12 insertions, 3 deletions
diff --git a/scd/app-common.h b/scd/app-common.h
index f4035f766..03b6c4884 100644
--- a/scd/app-common.h
+++ b/scd/app-common.h
@@ -335,6 +335,7 @@ card_t app_do_with_keygrip (ctrl_t ctrl, int action, const char *keygrip_str,
/*-- app-openpgp.c --*/
gpg_error_t app_select_openpgp (app_t app);
+const char *app_openpgp_manufacturer (unsigned int no);
/*-- app-nks.c --*/
gpg_error_t app_select_nks (app_t app);
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index 4af4f880e..250c4142e 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -290,8 +290,8 @@ static gpg_error_t change_keyattr_from_string
/* Return the OpenPGP card manufacturer name. */
-static const char *
-get_manufacturer (unsigned int no)
+const char *
+app_openpgp_manufacturer (unsigned int no)
{
/* Note: Make sure that there is no colon or linefeed in the string. */
switch (no)
@@ -1273,7 +1273,7 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name)
return send_status_printf
(ctrl, table[idx].name, "%u %s",
app->app_local->manufacturer,
- get_manufacturer (app->app_local->manufacturer));
+ app_openpgp_manufacturer (app->app_local->manufacturer));
}
if (table[idx].special == -9)
{
diff --git a/scd/command.c b/scd/command.c
index b607523dd..b386b9c5f 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -1878,6 +1878,8 @@ static const char hlp_getinfo[] =
" cmd_has_option CMD OPT\n"
" - Returns OK if command CMD has option OPT.\n"
" dump_state - Dump internal infos to the log stream.\n"
+ " manufacturer NUMBER\n"
+ " - Return a description of the OpenPGP manufacturer id.\n"
" apdu_strerror NUMBER\n"
" - Return a string for a status word.\n";
static gpg_error_t
@@ -2004,6 +2006,12 @@ cmd_getinfo (assuan_context_t ctx, char *line)
{
rc = app_send_active_apps (NULL, ctrl);
}
+ else if ((s=has_leading_keyword (line, "manufacturer")))
+ {
+ unsigned long ul = strtoul (s, NULL, 0);
+ s = app_openpgp_manufacturer (ul);
+ rc = assuan_send_data (ctx, s, strlen (s));
+ }
else if ((s=has_leading_keyword (line, "apdu_strerror")))
{
unsigned long ul = strtoul (s, NULL, 0);