mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
scd: Add option --clear to PASSWD.
* scd/command.c (cmd_passwd): Add option --clear. (send_status_printf): New. * scd/app-common.h (APP_CHANGE_FLAG_CLEAR): New. * scd/app-nks.c (do_change_pin): Return an error if that option is used. * scd/app-openpgp.c (do_change_pin): Ditto. -- Card application may support this option to clear the PIN verification status of a specific PIN. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
ec56996029
commit
29929e6552
7 changed files with 46 additions and 6 deletions
|
@ -1215,12 +1215,13 @@ cmd_random (assuan_context_t ctx, char *line)
|
|||
|
||||
|
||||
static const char hlp_passwd[] =
|
||||
"PASSWD [--reset] [--nullpin] <chvno>\n"
|
||||
"PASSWD [--reset] [--nullpin] [--clear] <chvno>\n"
|
||||
"\n"
|
||||
"Change the PIN or, if --reset is given, reset the retry counter of\n"
|
||||
"the card holder verification vector CHVNO. The option --nullpin is\n"
|
||||
"used for TCOS cards to set the initial PIN. The format of CHVNO\n"
|
||||
"depends on the card application.";
|
||||
"used for TCOS cards to set the initial PIN. The option --clear clears\n"
|
||||
"the security status associated with the PIN so that the PIN needs to\n"
|
||||
"be presented again. The format of CHVNO depends on the card application.";
|
||||
static gpg_error_t
|
||||
cmd_passwd (assuan_context_t ctx, char *line)
|
||||
{
|
||||
|
@ -1233,6 +1234,8 @@ cmd_passwd (assuan_context_t ctx, char *line)
|
|||
flags |= APP_CHANGE_FLAG_RESET;
|
||||
if (has_option (line, "--nullpin"))
|
||||
flags |= APP_CHANGE_FLAG_NULLPIN;
|
||||
if (has_option (line, "--clear"))
|
||||
flags |= APP_CHANGE_FLAG_CLEAR;
|
||||
|
||||
line = skip_options (line);
|
||||
|
||||
|
@ -1243,6 +1246,11 @@ cmd_passwd (assuan_context_t ctx, char *line)
|
|||
line++;
|
||||
*line = 0;
|
||||
|
||||
/* Do not allow other flags aside of --clear. */
|
||||
if ((flags & APP_CHANGE_FLAG_CLEAR) && (flags & ~APP_CHANGE_FLAG_CLEAR))
|
||||
return set_error (GPG_ERR_UNSUPPORTED_OPERATION,
|
||||
"--clear used with other options");
|
||||
|
||||
if ((rc = open_card (ctrl)))
|
||||
return rc;
|
||||
|
||||
|
@ -1922,6 +1930,26 @@ send_status_direct (ctrl_t ctrl, const char *keyword, const char *args)
|
|||
}
|
||||
|
||||
|
||||
/* This status functions expects a printf style format string. No
|
||||
* filtering of the data is done instead the orintf formatted data is
|
||||
* send using assuan_send_status. */
|
||||
gpg_error_t
|
||||
send_status_printf (ctrl_t ctrl, const char *keyword, const char *format, ...)
|
||||
{
|
||||
gpg_error_t err;
|
||||
va_list arg_ptr;
|
||||
assuan_context_t ctx;
|
||||
|
||||
if (!ctrl || !ctrl->server_local || !(ctx = ctrl->server_local->assuan_ctx))
|
||||
return 0;
|
||||
|
||||
va_start (arg_ptr, format);
|
||||
err = vprint_assuan_status (ctx, keyword, format, arg_ptr);
|
||||
va_end (arg_ptr);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
popup_prompt (void *opaque, int on)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue