summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvikrama <vikrama@59b500cc-1b3d-0410-9834-0bbf25fbcc57>2010-07-06 02:25:20 +0400
committervikrama <vikrama@59b500cc-1b3d-0410-9834-0bbf25fbcc57>2010-07-06 02:25:20 +0400
commit2cb331e8bc8a33eac647499f862707ffbdaf579b (patch)
tree1f0475a5265b816915690ef890cfd6ae3bc59da7
parente107ece4f4c93510e34293888103c15f431c3ba1 (diff)
downloadzxing-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.java4
-rw-r--r--src/com/google/zxing/client/android/wifi/WifiActivity.java14
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);
}