WPS: Report only the carrier record from NFC to wpa_supplicant
authorJouni Malinen <j@w1.fi>
Sun, 10 Feb 2013 16:42:43 +0000 (18:42 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 10 Feb 2013 16:42:43 +0000 (18:42 +0200)
Since there could be multiple carrier records, it is cleaner to report
only the WPS carrier record instead of full NFC connection handover
select to wpa_supplicant.

Signed-hostap: Jouni Malinen <j@w1.fi>

wpa_supplicant/examples/wps-nfc.py

index a2e8df4..1ab59c3 100755 (executable)
@@ -115,10 +115,25 @@ def wps_handover_init(peer):
         nfc.llcp.shutdown()
         client.close()
         return
+    if message.type != "urn:nfc:wkt:Hs":
+        print "Response was not Hs - received: " + message.type
+        nfc.llcp.shutdown()
+        client.close()
+        return
 
+    print "Received message"
+    print message.pretty()
+    message = nfc.ndef.HandoverSelectMessage(message)
     print "Handover select received"
     print message.pretty()
-    wpas_put_handover_sel(message)
+
+    for carrier in message.carriers:
+        print "Remote carrier type: " + carrier.type
+        if carrier.type == "application/vnd.wfa.wsc":
+            print "WPS carrier type match - send to wpa_supplicant"
+            wpas_put_handover_sel(carrier.record)
+            wifi = nfc.ndef.WifiConfigRecord(carrier.record)
+            print wifi.pretty()
 
     print "Remove peer"
     nfc.llcp.shutdown()