mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
card: Generalize the CHV counter printing.
* tools/gpg-card.c (list_retry_counter): New. Factored out from the other functions. (cmd_verify): Re-read the chv status.
This commit is contained in:
parent
c0f50811fc
commit
e4c2d7be22
@ -830,6 +830,35 @@ list_all_kinfo (card_info_t info, keyinfolabel_t labels, estream_t fp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
list_retry_counter (card_info_t info, estream_t fp)
|
||||||
|
{
|
||||||
|
const char *s;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
tty_fprintf (fp, "PIN retry counter :");
|
||||||
|
for (i=0; i < DIM (info->chvinfo); i++)
|
||||||
|
{
|
||||||
|
if (info->chvinfo[i] >= 0)
|
||||||
|
tty_fprintf (fp, " %d", info->chvinfo[i]);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (info->chvinfo[i])
|
||||||
|
{
|
||||||
|
case -1: s = "[error]"; break;
|
||||||
|
case -2: s = "-"; break; /* No such PIN or info not available. */
|
||||||
|
case -3: s = "[blocked]"; break;
|
||||||
|
case -4: s = "[nullpin]"; break;
|
||||||
|
case -5: s = "[verified]"; break;
|
||||||
|
default: s = "[?]"; break;
|
||||||
|
}
|
||||||
|
tty_fprintf (fp, " %s", s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tty_fprintf (fp, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* List OpenPGP card specific data. */
|
/* List OpenPGP card specific data. */
|
||||||
static void
|
static void
|
||||||
list_openpgp (card_info_t info, estream_t fp, int no_key_lookup)
|
list_openpgp (card_info_t info, estream_t fp, int no_key_lookup)
|
||||||
@ -883,8 +912,7 @@ list_openpgp (card_info_t info, estream_t fp, int no_key_lookup)
|
|||||||
info->chv1_cached? _("not forced"): _("forced"));
|
info->chv1_cached? _("not forced"): _("forced"));
|
||||||
tty_fprintf (fp, "Max. PIN lengths .: %d %d %d\n",
|
tty_fprintf (fp, "Max. PIN lengths .: %d %d %d\n",
|
||||||
info->chvmaxlen[0], info->chvmaxlen[1], info->chvmaxlen[2]);
|
info->chvmaxlen[0], info->chvmaxlen[1], info->chvmaxlen[2]);
|
||||||
tty_fprintf (fp, "PIN retry counter : %d %d %d\n",
|
list_retry_counter (info, fp);
|
||||||
info->chvinfo[0], info->chvinfo[1], info->chvinfo[2]);
|
|
||||||
tty_fprintf (fp, "Signature counter : %lu\n", info->sig_counter);
|
tty_fprintf (fp, "Signature counter : %lu\n", info->sig_counter);
|
||||||
tty_fprintf (fp, "Capabilities .....:");
|
tty_fprintf (fp, "Capabilities .....:");
|
||||||
if (info->extcap.ki)
|
if (info->extcap.ki)
|
||||||
@ -927,8 +955,6 @@ list_piv (card_info_t info, estream_t fp, int no_key_lookup)
|
|||||||
{ "Key management ...:", "PIV.9D" },
|
{ "Key management ...:", "PIV.9D" },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
const char *s;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (info->chvusage[0] || info->chvusage[1])
|
if (info->chvusage[0] || info->chvusage[1])
|
||||||
{
|
{
|
||||||
@ -952,30 +978,11 @@ list_piv (card_info_t info, estream_t fp, int no_key_lookup)
|
|||||||
tty_fprintf (fp, "\n");
|
tty_fprintf (fp, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
tty_fprintf (fp, "PIN retry counter :");
|
list_retry_counter (info, fp);
|
||||||
for (i=0; i < DIM (info->chvinfo); i++)
|
|
||||||
{
|
|
||||||
if (info->chvinfo[i] > 0)
|
|
||||||
tty_fprintf (fp, " %d", info->chvinfo[i]);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (info->chvinfo[i])
|
|
||||||
{
|
|
||||||
case -1: s = "[error]"; break;
|
|
||||||
case -2: s = "-"; break; /* No such PIN or info not available. */
|
|
||||||
case -3: s = "[blocked]"; break;
|
|
||||||
case -5: s = "[verified]"; break;
|
|
||||||
default: s = "[?]"; break;
|
|
||||||
}
|
|
||||||
tty_fprintf (fp, " %s", s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tty_fprintf (fp, "\n");
|
|
||||||
list_all_kinfo (info, keyinfolabels, fp, no_key_lookup);
|
list_all_kinfo (info, keyinfolabels, fp, no_key_lookup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* List Netkey card specific data. */
|
/* List Netkey card specific data. */
|
||||||
static void
|
static void
|
||||||
list_nks (card_info_t info, estream_t fp, int no_key_lookup)
|
list_nks (card_info_t info, estream_t fp, int no_key_lookup)
|
||||||
@ -983,29 +990,8 @@ list_nks (card_info_t info, estream_t fp, int no_key_lookup)
|
|||||||
static struct keyinfolabel_s keyinfolabels[] = {
|
static struct keyinfolabel_s keyinfolabels[] = {
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
const char *s;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
tty_fprintf (fp, "PIN retry counter :");
|
list_retry_counter (info, fp);
|
||||||
for (i=0; i < DIM (info->chvinfo); i++)
|
|
||||||
{
|
|
||||||
if (info->chvinfo[i] >= 0)
|
|
||||||
tty_fprintf (fp, " %d", info->chvinfo[i]);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (info->chvinfo[i])
|
|
||||||
{
|
|
||||||
case -1: s = "[error]"; break;
|
|
||||||
case -2: s = "-"; break; /* No such PIN or info not available. */
|
|
||||||
case -3: s = "[blocked]"; break;
|
|
||||||
case -4: s = "[nullpin]"; break;
|
|
||||||
case -5: s = "[verified]"; break;
|
|
||||||
default: s = "[?]"; break;
|
|
||||||
}
|
|
||||||
tty_fprintf (fp, " %s", s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tty_fprintf (fp, "\n");
|
|
||||||
list_all_kinfo (info, keyinfolabels, fp, no_key_lookup);
|
list_all_kinfo (info, keyinfolabels, fp, no_key_lookup);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1017,14 +1003,8 @@ list_p15 (card_info_t info, estream_t fp, int no_key_lookup)
|
|||||||
static struct keyinfolabel_s keyinfolabels[] = {
|
static struct keyinfolabel_s keyinfolabels[] = {
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
int i;
|
|
||||||
|
|
||||||
tty_fprintf (fp, "PIN retry counter :");
|
list_retry_counter (info, fp);
|
||||||
for (i=0; i < DIM (info->chvinfo); i++)
|
|
||||||
{
|
|
||||||
tty_fprintf (fp, " %d", info->chvinfo[i]);
|
|
||||||
}
|
|
||||||
tty_fprintf (fp, "\n");
|
|
||||||
list_all_kinfo (info, keyinfolabels, fp, no_key_lookup);
|
list_all_kinfo (info, keyinfolabels, fp, no_key_lookup);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1347,7 +1327,7 @@ cmd_list (card_info_t info, char *argstr)
|
|||||||
static gpg_error_t
|
static gpg_error_t
|
||||||
cmd_verify (card_info_t info, char *argstr)
|
cmd_verify (card_info_t info, char *argstr)
|
||||||
{
|
{
|
||||||
gpg_error_t err;
|
gpg_error_t err, err2;
|
||||||
const char *pinref;
|
const char *pinref;
|
||||||
|
|
||||||
if (!info)
|
if (!info)
|
||||||
@ -1366,7 +1346,10 @@ cmd_verify (card_info_t info, char *argstr)
|
|||||||
if (err)
|
if (err)
|
||||||
log_error ("verify failed: %s <%s>\n",
|
log_error ("verify failed: %s <%s>\n",
|
||||||
gpg_strerror (err), gpg_strsource (err));
|
gpg_strerror (err), gpg_strsource (err));
|
||||||
return err;
|
/* In any case update the CHV status, so that the next "list" shows
|
||||||
|
* the correct retry counter values. */
|
||||||
|
err2 = scd_getattr ("CHV-STATUS", info);
|
||||||
|
return err ? err : err2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user