]> err.no Git - yubikey-personalization/commitdiff
add checks for neo to the capabilities that matter
authorKlas Lindfors <klas@yubico.com>
Wed, 25 Apr 2012 11:04:00 +0000 (13:04 +0200)
committerKlas Lindfors <klas@yubico.com>
Wed, 25 Apr 2012 11:04:00 +0000 (13:04 +0200)
ykpers.c

index 8f48485f7e28e592973694ed1c5da610506205a5..e67f96038ea4903c6b9f6233e0894f762ea49f37 100644 (file)
--- a/ykpers.c
+++ b/ykpers.c
@@ -361,6 +361,23 @@ static bool vcheck_v23_or_greater(const YKP_CONFIG *cfg)
                cfg->yk_major_version > 2;
 }
 
+static bool vcheck_neo(const YKP_CONFIG *cfg)
+{
+       return (cfg->yk_major_version == 2 &&
+                       cfg->yk_minor_version == 1 &&
+                       cfg->yk_build_version >= 4 &&
+                       cfg->yk_build_version != 9);
+
+}
+
+static bool vcheck_neo_after_4(const YKP_CONFIG *cfg)
+{
+       return (cfg->yk_major_version == 2 &&
+                       cfg->yk_minor_version == 1 &&
+                       cfg->yk_build_version > 4 &&
+                       cfg->yk_build_version != 9);
+}
+
 static bool capability_has_hidtrig(const YKP_CONFIG *cfg)
 {
        return vcheck_v1(cfg);
@@ -373,17 +390,17 @@ static bool capability_has_ticket_first(const YKP_CONFIG *cfg)
 
 static bool capability_has_static(const YKP_CONFIG *cfg)
 {
-       return vcheck_all(cfg);
+       return vcheck_all(cfg) && !vcheck_neo_after_4(cfg);
 }
 
 static bool capability_has_static_extras(const YKP_CONFIG *cfg)
 {
-       return vcheck_no_v1(cfg);
+       return vcheck_no_v1(cfg) && !vcheck_neo_after_4(cfg);
 }
 
 static bool capability_has_slot_two(const YKP_CONFIG *cfg)
 {
-       return vcheck_no_v1(cfg);
+       return vcheck_no_v1(cfg) && !vcheck_neo(cfg);
 }
 
 static bool capability_has_chal_resp(const YKP_CONFIG *cfg)
@@ -393,17 +410,17 @@ static bool capability_has_chal_resp(const YKP_CONFIG *cfg)
 
 static bool capability_has_oath_imf(const YKP_CONFIG *cfg)
 {
-       return vcheck_v22_or_greater(cfg);
+       return vcheck_v22_or_greater(cfg) || vcheck_neo(cfg);
 }
 
 static bool capability_has_serial(const YKP_CONFIG *cfg)
 {
-       return vcheck_v22_or_greater(cfg);
+       return vcheck_v22_or_greater(cfg) || vcheck_neo(cfg);
 }
 
 static bool capability_has_oath(const YKP_CONFIG *cfg)
 {
-       return vcheck_v21_or_greater(cfg);
+       return vcheck_v21_or_greater(cfg) || vcheck_neo(cfg);
 }
 
 static bool capability_has_ticket_mods(const YKP_CONFIG *cfg)