]> err.no Git - yubikey-personalization/commitdiff
add -p switch for programming sequence
authorKlas Lindfors <klas@yubico.com>
Tue, 16 Oct 2012 06:53:06 +0000 (08:53 +0200)
committerKlas Lindfors <klas@yubico.com>
Tue, 16 Oct 2012 06:53:06 +0000 (08:53 +0200)
ykinfo.1
ykinfo.c

index 26ce5ef9653471918515e5b7d89f051e1c39cb9d..fbeb59d35c5899ca5b173c72566d42e3888b408a 100644 (file)
--- a/ykinfo.1
+++ b/ykinfo.1
@@ -35,7 +35,7 @@
 ykinfo - Get basic information from a YubiKey
 .SH SYNOPSIS
 .B ykinfo
-[\fI-s\fR] [\fI-m\fR] [\fI-H\fR] [\fI-v\fR] [\fI-t\fR] [\fI-q\fR] [\fI-h\fR]
+[\fI-s\fR] [\fI-m\fR] [\fI-H\fR] [\fI-v\fR] [\fI-t\fR] [\fI-p\fR] [\fI-q\fR] [\fI-h\fR]
 .SH DESCRIPTION
 .PP
 Get basic information from a YubiKey. Can get serial number, version and current
@@ -58,6 +58,9 @@ get the version and output it.
 \fB\-t\fR
 get the touch level and output it.
 .TP
+\fB\-p\fR
+get the programming sequence and output it.
+.TP
 \fB\-q\fR
 modifier, only show the relevant data from the YubiKey, no extra information.
 .TP
@@ -66,12 +69,13 @@ modifier, only show the relevant data from the YubiKey, no extra information.
 Output of all information from a YubiKey
 
 .nf
-$ \fBykinfo \-s \-m \-H \-v \-t\fR
+$ \fBykinfo \-s \-m \-H \-v \-t \-p\fR
 serial: 1077254
 serial_hex: 107006
 serial_modhex: bcicch
 version: 2.2.3
 touch_level: 1793
+programming_sequence: 1
 $
 .fi
 
index 1d4e6aa6cf7626f5437ab8a2457f97378defa4d1..4f6d415659d39e86a3b277a8e936b2bb7f782fc8 100644 (file)
--- a/ykinfo.c
+++ b/ykinfo.c
@@ -48,6 +48,7 @@ const char *usage =
        "\t-H        Get serial in hex from YubiKey\n"
        "\t-v        Get version from YubiKey\n"
        "\t-t        Get touchlevel from YubiKey\n"
+       "\t-p        Get programming sequence from YubiKey\n"
        "\n"
        "\t-q        Only output information from YubiKey\n"
        "\n"
@@ -55,7 +56,7 @@ const char *usage =
        "\n"
        "\n"
        ;
-const char *optstring = "smHvtqh";
+const char *optstring = "smHvtpqh";
 
 static void report_yk_error(void)
 {
@@ -72,7 +73,7 @@ static void report_yk_error(void)
 
 static int parse_args(int argc, char **argv,
                bool *serial_dec, bool *serial_modhex, bool *serial_hex,
-               bool *version, bool *touch_level, bool *quiet,
+               bool *version, bool *touch_level, bool *pgm_seq, bool *quiet,
                int *exit_code)
 {
        int c;
@@ -94,6 +95,9 @@ static int parse_args(int argc, char **argv,
                case 't':
                        *touch_level = true;
                        break;
+               case 'p':
+                       *pgm_seq = true;
+                       break;
                case 'q':
                        *quiet = true;
                        break;
@@ -106,7 +110,7 @@ static int parse_args(int argc, char **argv,
        }
 
        if (!*serial_dec && !*serial_modhex && !*serial_hex &&
-                       !*version && !*touch_level) {
+                       !*version && !*touch_level && !*pgm_seq) {
                /* no options at all */
                fputs("You must give at least one option.\n", stderr);
                fputs(usage, stderr);
@@ -129,6 +133,7 @@ int main(int argc, char **argv)
        bool serial_hex = false;
        bool version = false;
        bool touch_level = false;
+       bool pgm_seq = false;
 
        bool quiet = false;
 
@@ -136,7 +141,7 @@ int main(int argc, char **argv)
 
        if (! parse_args(argc, argv,
                                &serial_dec, &serial_modhex, &serial_hex,
-                               &version, &touch_level, &quiet,
+                               &version, &touch_level, &pgm_seq, &quiet,
                                &exit_code))
                exit(exit_code);
 
@@ -180,7 +185,7 @@ int main(int argc, char **argv)
                        printf("%s\n", modhex_serial);
                }
        }
-       if(version || touch_level) {
+       if(version || touch_level || pgm_seq) {
                YK_STATUS *st = ykds_alloc();
                if(!yk_get_status(yk, st)) {
                        ykds_free(st);
@@ -198,6 +203,11 @@ int main(int argc, char **argv)
                                printf("touch_level: ");
                        printf("%d\n", ykds_touch_level(st));
                }
+               if(pgm_seq) {
+                       if(!quiet)
+                               printf("programming_sequence: ");
+                       printf("%d\n", ykds_pgm_seq(st));
+               }
                ykds_free(st);
        }