From d7a989cc7e5ae1f7ba1791fab7aecc1e06dcde63 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 6 Dec 2008 00:36:41 +0100 Subject: [PATCH] Convert hex WEP key string into binary --- plugins/supplicant.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/plugins/supplicant.c b/plugins/supplicant.c index 39e1624..0a23039 100644 --- a/plugins/supplicant.c +++ b/plugins/supplicant.c @@ -23,6 +23,7 @@ #include #endif +#include #include #include @@ -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); } -- 2.7.4