summaryrefslogtreecommitdiff
path: root/apps/iap/iap-lingo0.c
diff options
context:
space:
mode:
authorCástor Muñoz <cmvidal@gmail.com>2014-12-06 23:27:01 +0100
committerCástor Muñoz <cmvidal@gmail.com>2015-10-07 06:15:04 +0200
commitb2d650f511d1eef08138f09ecd4e96656eef173b (patch)
treee71b58ec419eac8b81daf131529cdc4c94390032 /apps/iap/iap-lingo0.c
parentefd047a08bf990b9d10be5e5df1bce83968bd4e4 (diff)
iAP: authentication 1.0
Change-Id: I71b8e9f7ce2568c180396d6695cef18ce94ded32
Diffstat (limited to 'apps/iap/iap-lingo0.c')
-rw-r--r--apps/iap/iap-lingo0.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/apps/iap/iap-lingo0.c b/apps/iap/iap-lingo0.c
index 9e0355cb3f..e69b42beae 100644
--- a/apps/iap/iap-lingo0.c
+++ b/apps/iap/iap-lingo0.c
@@ -603,8 +603,27 @@ void iap_handlepkt_mode0(const unsigned int len, const unsigned char *buf)
break;
}
- /* We only support version 2.0 */
- if ((buf[2] != 2) || (buf[3] != 0)) {
+ device.auth.version = (buf[2] << 8) | buf[3];
+
+ /* We support authentication versions 1.0 and 2.0 */
+ if (device.auth.version == 0x100) {
+ /* If we could really do authentication we'd have to
+ * check the certificate here. Since we can't, just acknowledge
+ * the packet with an "everything OK" AckDevAuthenticationInfo
+ *
+ * Skip GetAccessoryInfo process, this command together with
+ * authentication level 2 were added in iAP release 24, it is
+ * not be supported by devices authenticating at level 1.
+ */
+ IAP_TX_INIT(0x00, 0x16);
+ IAP_TX_PUT(0x00);
+
+ iap_send_tx();
+ device.auth.state = AUST_CERTDONE;
+ break;
+ }
+
+ if (device.auth.version != 0x200) {
/* Version mismatches are signalled by AckDevAuthenticationInfo
* with the status set to Authentication Information unsupported
*/