aboutsummaryrefslogtreecommitdiffstats
path: root/scd/command.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2003-09-30 17:35:05 +0000
committerWerner Koch <[email protected]>2003-09-30 17:35:05 +0000
commit59a61b3c93f6a109f1e1bfe94fd0ab4a28169a9e (patch)
tree6c9cf4322312c53c9bb9b928ff9b79c426cff6b0 /scd/command.c
parent* keylist.c (print_card_serialno): New. (diff)
downloadgnupg-59a61b3c93f6a109f1e1bfe94fd0ab4a28169a9e.tar.gz
gnupg-59a61b3c93f6a109f1e1bfe94fd0ab4a28169a9e.zip
* command.c (cmd_getattr): New command GETATTR.
* app.c (app_setattr): New. (do_getattr): New. (do_learn_status): Reimplemented in terms of do_getattr. * app-openpgp.c (do_change_pin): Make sure CVH1 and CHV2 are always synced. (verify_chv2, verify_chv3): New. Factored out common code. (do_setattr, do_sign, do_auth, do_decipher): Change the names of the prompts to match that we have only 2 different PINs. (app_select_openpgp): Check whether the card enforced CHV1. (convert_sig_counter_value): New. Factor out code from get_sig_counter.
Diffstat (limited to 'scd/command.c')
-rw-r--r--scd/command.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/scd/command.c b/scd/command.c
index 9f242bfab..fc5efa708 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -702,6 +702,41 @@ cmd_pkdecrypt (ASSUAN_CONTEXT ctx, char *line)
}
+/* GETATTR <name>
+
+ This command is used to retrieve data from a smartcard. The
+ allowed names depend on the currently selected smartcard
+ application. NAME must be percent and '+' escaped. The value is
+ returned through status message, see the LESRN command for details.
+
+ However, the current implementation assumes that Name is not escaped;
+ this works as long as noone uses arbitrary escaping.
+
+*/
+static int
+cmd_getattr (ASSUAN_CONTEXT ctx, char *line)
+{
+ CTRL ctrl = assuan_get_pointer (ctx);
+ int rc;
+ char *keyword;
+
+ if ((rc = open_card (ctrl)))
+ return rc;
+
+ keyword = line;
+ for (; *line && !spacep (line); line++)
+ ;
+ if (*line)
+ *line++ = 0;
+
+ /* (We ignore any garbage for now.) */
+
+ rc = app_getattr (ctrl->app_ctx, ctrl, keyword);
+
+ return map_to_assuan_status (rc);
+}
+
+
/* SETATTR <name> <value>
This command is used to store data on a a smartcard. The allowed
@@ -908,6 +943,7 @@ register_commands (ASSUAN_CONTEXT ctx)
{ "PKDECRYPT", cmd_pkdecrypt },
{ "INPUT", NULL },
{ "OUTPUT", NULL },
+ { "GETATTR", cmd_getattr },
{ "SETATTR", cmd_setattr },
{ "GENKEY", cmd_genkey },
{ "RANDOM", cmd_random },