diff options
| author | vikrama <vikrama@59b500cc-1b3d-0410-9834-0bbf25fbcc57> | 2010-07-06 02:25:20 +0400 |
|---|---|---|
| committer | vikrama <vikrama@59b500cc-1b3d-0410-9834-0bbf25fbcc57> | 2010-07-06 02:25:20 +0400 |
| commit | 2cb331e8bc8a33eac647499f862707ffbdaf579b (patch) | |
| tree | 1f0475a5265b816915690ef890cfd6ae3bc59da7 | |
| parent | e107ece4f4c93510e34293888103c15f431c3ba1 (diff) | |
| download | zxing-android-embedded-2cb331e8bc8a33eac647499f862707ffbdaf579b.tar.xz | |
Bug Fix:
When a 64 bit hex password is entered, wpa_supplicant fails with the
error:
"wpa_supplicant (pid) Line 0: Invalid passphrase length 64 (expected:
8..63)"
The fix is to not quote 64 char long hexadecimal passwords. Tested
dd-wrt on a 64 char hex password.
git-svn-id: http://zxing.googlecode.com/svn/trunk/android@1468 59b500cc-1b3d-0410-9834-0bbf25fbcc57
| -rw-r--r-- | src/com/google/zxing/client/android/wifi/NetworkUtil.java | 4 | ||||
| -rw-r--r-- | src/com/google/zxing/client/android/wifi/WifiActivity.java | 14 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/com/google/zxing/client/android/wifi/NetworkUtil.java b/src/com/google/zxing/client/android/wifi/NetworkUtil.java index 9a84d439..b3740c89 100644 --- a/src/com/google/zxing/client/android/wifi/NetworkUtil.java +++ b/src/com/google/zxing/client/android/wifi/NetworkUtil.java @@ -46,7 +46,7 @@ final class NetworkUtil { int lastPos = string.length() - 1; if (lastPos < 0 || (string.charAt(0) == '"' && string.charAt(lastPos) == '"')) { return string; - } + } return '\"' + string + '\"'; } @@ -59,7 +59,7 @@ final class NetworkUtil { if (!(c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f')) { return false; } - } + } return true; } diff --git a/src/com/google/zxing/client/android/wifi/WifiActivity.java b/src/com/google/zxing/client/android/wifi/WifiActivity.java index f18282d1..bdeeb4c3 100644 --- a/src/com/google/zxing/client/android/wifi/WifiActivity.java +++ b/src/com/google/zxing/client/android/wifi/WifiActivity.java @@ -124,12 +124,22 @@ public class WifiActivity extends Activity { // Adding a WPA or WPA2 network private int changeNetworkWPA(NetworkSetting input) { WifiConfiguration config = changeNetworkCommon(input); - config.preSharedKey = NetworkUtil.convertToQuotedString(input.getPassword()); + final String pass = input.getPassword(); + // Hex passwords that are 64 bits long are not to be quoted. + if (pass.matches("[0-9A-Fa-f]{64}")){ + Log.d(TAG, "A 64 bit hex password entered."); + config.preSharedKey = pass; + } else { + Log.d(TAG, "A normal password entered: I am quoting it."); + config.preSharedKey = NetworkUtil.convertToQuotedString(pass); + } config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); - config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); // For WPA config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA2 + config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); + config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); + config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); return requestNetworkChange(config); } |
