diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-12-06 00:36:41 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-12-06 00:36:41 +0100 |
commit | d7a989cc7e5ae1f7ba1791fab7aecc1e06dcde63 (patch) | |
tree | 79da7f61a3e2383089c827b0f346f27863630350 | |
parent | e4192ffa8649754ebbab769495bb3ab40a7c146c (diff) | |
download | connman-d7a989cc7e5ae1f7ba1791fab7aecc1e06dcde63.tar.gz connman-d7a989cc7e5ae1f7ba1791fab7aecc1e06dcde63.tar.bz2 connman-d7a989cc7e5ae1f7ba1791fab7aecc1e06dcde63.zip |
Convert hex WEP key string into binary
-rw-r--r-- | plugins/supplicant.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/plugins/supplicant.c b/plugins/supplicant.c index 39e1624d..0a23039e 100644 --- a/plugins/supplicant.c +++ b/plugins/supplicant.c @@ -23,6 +23,7 @@ #include <config.h> #endif +#include <stdlib.h> #include <string.h> #include <dbus/dbus.h> @@ -516,9 +517,28 @@ static int set_network(struct supplicant_task *task, connman_dbus_dict_append_variant(&dict, "key_mgmt", DBUS_TYPE_STRING, &key_mgmt); - if (passphrase && strlen(passphrase) > 0) { - connman_dbus_dict_append_variant(&dict, "wep_key0", - DBUS_TYPE_STRING, &passphrase); + if (passphrase) { + int size = strlen(passphrase); + if (size == 10 || size == 26) { + unsigned char *key = malloc(13); + char tmp[3]; + int i; + memset(tmp, 0, sizeof(tmp)); + if (key == NULL) + size = 0; + for (i = 0; i < size / 2; i++) { + memcpy(tmp, passphrase + (i * 2), 2); + key[i] = (unsigned char) strtol(tmp, + NULL, 16); + } + connman_dbus_dict_append_array(&dict, + "wep_key0", DBUS_TYPE_BYTE, + &key, size / 2); + free(key); + } else + connman_dbus_dict_append_variant(&dict, + "wep_key0", DBUS_TYPE_STRING, + &passphrase); connman_dbus_dict_append_variant(&dict, "wep_tx_keyidx", DBUS_TYPE_STRING, &index); } |