]> err.no Git - yubikey-personalization/commitdiff
add yk_check_firmware2() that takes status instead of key and let yk_check_firmware...
authorKlas Lindfors <klas@yubico.com>
Fri, 9 Nov 2012 14:47:13 +0000 (15:47 +0100)
committerKlas Lindfors <klas@yubico.com>
Fri, 9 Nov 2012 14:47:13 +0000 (15:47 +0100)
for testability

libykpers-1.map
ykcore/ykcore.c
ykcore/ykcore.h
ykpersonalize.c

index 0ea98e62236d2ffa4f2b825454a0407ac1a88121..91971a36cde2294f1ed31253fe2052f54aa65bf9 100644 (file)
@@ -167,5 +167,6 @@ LIBYKPERS_1.10 {
 # Functions:
   yk_write_ndef2;
   ykp_ndef_as_text;
+  yk_check_firmware_version2;
 # Variables:
 } LIBYKPERS_1.9;
index 055af0dfe2d2193bec897867494a3fc40ca4fa8a..f3985d228d7db580d0127e094aa3b010220b9aef 100644 (file)
@@ -92,21 +92,28 @@ int yk_check_firmware_version(YK_KEY *k)
 
        if (!yk_get_status(k, &st))
                return 0;
-       if (!((st.versionMajor == 0 &&
-              (st.versionMinor == 9 ||
-               st.versionBuild == 9)) ||
-             (st.versionMajor == 1 &&
-              (st.versionMinor == 0 ||
-               st.versionMinor == 1 ||
-               st.versionMinor == 2 ||
-               st.versionMinor == 3)) ||
-             (st.versionMajor == 2 &&
-              (st.versionMinor == 0 ||
-               st.versionMinor == 1 ||
-               st.versionMinor == 2 ||
-               st.versionMinor == 3)) ||
-             (st.versionMajor == 3 &&
-              (st.versionMinor == 0)))) {
+
+       return yk_check_firmware_version2(&st);
+}
+
+
+int yk_check_firmware_version2(YK_STATUS *st)
+{
+       if (!((st->versionMajor == 0 &&
+              (st->versionMinor == 9 ||
+               st->versionBuild == 9)) ||
+             (st->versionMajor == 1 &&
+              (st->versionMinor == 0 ||
+               st->versionMinor == 1 ||
+               st->versionMinor == 2 ||
+               st->versionMinor == 3)) ||
+             (st->versionMajor == 2 &&
+              (st->versionMinor == 0 ||
+               st->versionMinor == 1 ||
+               st->versionMinor == 2 ||
+               st->versionMinor == 3)) ||
+             (st->versionMajor == 3 &&
+              (st->versionMinor == 0)))) {
                yk_errno = YK_EFIRMWARE;
                return 0;
        }
index 216a475e737df1d0d1142375333848ed5a14206d..ca70e6fd34a606588812de373ece24a8bb157ce1 100644 (file)
@@ -89,6 +89,7 @@ extern int yk_close_key(YK_KEY *k);           /* closes a previously opened key */
 extern int yk_get_status(YK_KEY *k, YK_STATUS *status /*, int forceUpdate */);
 /* checks that the firmware revision of the key is supported */
 extern int yk_check_firmware_version(YK_KEY *k);
+extern int yk_check_firmware_version2(YK_STATUS *status);
 /* Read the factory set serial number from a YubiKey 2.0 or higher. */
 extern int yk_get_serial(YK_KEY *yk, uint8_t slot, unsigned int flags, unsigned int *serial);
 /* Wait for the key to either set or clear bits in it's status byte */
index ea8a748728476ffc57f7cc46917e5bb718befe95..1b39839f70a82e7aa8f6bb597af5b8f5fc15484d 100644 (file)
@@ -109,7 +109,7 @@ int main(int argc, char **argv)
        else
                printf("Unconfigured\n");
 
-       if (!(yk_check_firmware_version(yk))) {
+       if (!(yk_check_firmware_version2(st))) {
                if (yk_errno == YK_EFIRMWARE) {
                        printf("Unsupported firmware revision - some "
                               "features may not be available\n"