mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-08 21:10:25 +01:00
2005-12-15 Dan Williams <dcbw@redhat.com>
* libnm-util/dbus-helpers.[ch] - Make this the one-stop-shop for serializing/deserializing AP & connection security settings over dbus. Both NM and applets should use this to ensure consistent dbus API going forwared. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1194 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
parent
7ea7ac394a
commit
5cf219f7c8
3 changed files with 206 additions and 32 deletions
|
|
@ -1,3 +1,11 @@
|
|||
2005-12-15 Dan Williams <dcbw@redhat.com>
|
||||
|
||||
* libnm-util/dbus-helpers.[ch]
|
||||
- Make this the one-stop-shop for serializing/deserializing
|
||||
AP & connection security settings over dbus. Both NM
|
||||
and applets should use this to ensure consistent dbus
|
||||
API going forwared.
|
||||
|
||||
2005-12-15 Robert Love <rml@novell.com>
|
||||
|
||||
Patch by Timo Hoenig <thoenig@suse.de>:
|
||||
|
|
|
|||
|
|
@ -28,27 +28,100 @@
|
|||
#include "cipher.h"
|
||||
|
||||
|
||||
static void key_append_helper (DBusMessageIter *iter, const char *key)
|
||||
static dbus_bool_t key_append_helper (DBusMessageIter *iter, const char *key)
|
||||
{
|
||||
DBusMessageIter subiter;
|
||||
int key_len;
|
||||
|
||||
g_return_if_fail (iter != NULL);
|
||||
g_return_if_fail (key != NULL);
|
||||
g_return_val_if_fail (iter != NULL, FALSE);
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
|
||||
key_len = strlen (key);
|
||||
g_return_if_fail (key_len > 0);
|
||||
g_return_val_if_fail (key_len > 0, FALSE);
|
||||
|
||||
if (!dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE_AS_STRING, &subiter))
|
||||
return;
|
||||
return FALSE;
|
||||
dbus_message_iter_append_fixed_array (&subiter, DBUS_TYPE_BYTE, &key, key_len);
|
||||
dbus_message_iter_close_container (iter, &subiter);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
dbus_bool_t nmu_dbus_message_append_wep_args (DBusMessage *message, IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid, const char *input, int auth_alg)
|
||||
static void we_cipher_append_helper (DBusMessageIter *iter, int we_cipher)
|
||||
{
|
||||
dbus_int32_t dbus_we_cipher = (dbus_int32_t) we_cipher;
|
||||
|
||||
g_return_if_fail (iter != NULL);
|
||||
|
||||
dbus_message_iter_append_basic (iter, DBUS_TYPE_INT32, &dbus_we_cipher);
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
nmu_security_serialize_wep (DBusMessageIter *iter,
|
||||
const char *key,
|
||||
int auth_alg)
|
||||
{
|
||||
g_return_val_if_fail (iter != NULL, FALSE);
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
g_return_val_if_fail ((auth_alg == IW_AUTH_ALG_OPEN_SYSTEM) || (auth_alg == IW_AUTH_ALG_SHARED_KEY), FALSE);
|
||||
|
||||
/* Second arg: hashed key (ARRAY, BYTE) */
|
||||
if (!key_append_helper (iter, key))
|
||||
return FALSE;
|
||||
|
||||
/* Third arg: WEP authentication algorithm (INT32) */
|
||||
dbus_message_iter_append_basic (iter, DBUS_TYPE_INT32, &auth_alg);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
nmu_security_deserialize_wep (DBusMessageIter *iter,
|
||||
char **key,
|
||||
int *key_len,
|
||||
int *auth_alg)
|
||||
{
|
||||
DBusMessageIter subiter;
|
||||
char * dbus_key;
|
||||
int dbus_key_len;
|
||||
dbus_int32_t dbus_auth_alg;
|
||||
|
||||
g_return_val_if_fail (iter != NULL, FALSE);
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
g_return_val_if_fail (*key == NULL, FALSE);
|
||||
g_return_val_if_fail (key_len != NULL, FALSE);
|
||||
g_return_val_if_fail (auth_alg != NULL, FALSE);
|
||||
|
||||
/* Next arg: key (ARRAY, BYTE) */
|
||||
g_return_val_if_fail ((dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_ARRAY)
|
||||
&& (dbus_message_iter_get_element_type (iter) == DBUS_TYPE_BYTE), FALSE);
|
||||
|
||||
dbus_message_iter_recurse (iter, &subiter);
|
||||
dbus_message_iter_get_fixed_array (&subiter, &dbus_key, &dbus_key_len);
|
||||
g_return_val_if_fail (dbus_key_len > 0, FALSE);
|
||||
|
||||
/* Next arg: authentication algorithm (INT32) */
|
||||
g_return_val_if_fail (dbus_message_iter_next (iter), FALSE);
|
||||
g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_INT32, FALSE);
|
||||
|
||||
dbus_message_iter_get_basic (iter, &dbus_auth_alg);
|
||||
g_return_val_if_fail ((dbus_auth_alg == IW_AUTH_ALG_OPEN_SYSTEM)
|
||||
|| (dbus_auth_alg == IW_AUTH_ALG_SHARED_KEY), FALSE);
|
||||
|
||||
*key = dbus_key;
|
||||
*key_len = dbus_key_len;
|
||||
*auth_alg = dbus_auth_alg;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
dbus_bool_t
|
||||
nmu_security_serialize_wep_with_cipher (DBusMessage *message,
|
||||
IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid,
|
||||
const char *input,
|
||||
int auth_alg)
|
||||
{
|
||||
int we_cipher = -1;
|
||||
char * key = NULL;
|
||||
dbus_bool_t result = TRUE;
|
||||
DBusMessageIter iter;
|
||||
|
|
@ -60,25 +133,99 @@ dbus_bool_t nmu_dbus_message_append_wep_args (DBusMessage *message, IEEE_802_11_
|
|||
dbus_message_iter_init_append (message, &iter);
|
||||
|
||||
/* First arg: WE Cipher (INT32) */
|
||||
we_cipher = ieee_802_11_cipher_get_we_cipher (cipher);
|
||||
dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &we_cipher);
|
||||
we_cipher_append_helper (&iter, ieee_802_11_cipher_get_we_cipher (cipher));
|
||||
|
||||
/* Second arg: hashed key (ARRAY, BYTE) */
|
||||
key = ieee_802_11_cipher_hash (cipher, ssid, input);
|
||||
key_append_helper (&iter, key);
|
||||
result = nmu_security_serialize_wep (&iter, key, auth_alg);
|
||||
g_free (key);
|
||||
|
||||
/* Third arg: WEP authentication algorithm (INT32) */
|
||||
dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &auth_alg);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
dbus_bool_t nmu_dbus_message_append_wpa_psk_args (DBusMessage *message, IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid, const char *input, int wpa_version, int key_mgt)
|
||||
dbus_bool_t
|
||||
nmu_security_serialize_wpa_psk (DBusMessageIter *iter,
|
||||
const char *key,
|
||||
int wpa_version,
|
||||
int key_mgt)
|
||||
{
|
||||
g_return_val_if_fail (iter != NULL, FALSE);
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
g_return_val_if_fail ((wpa_version == IW_AUTH_WPA_VERSION_WPA) || (wpa_version == IW_AUTH_WPA_VERSION_WPA2), FALSE);
|
||||
g_return_val_if_fail ((key_mgt == IW_AUTH_KEY_MGMT_802_1X) || (key_mgt == IW_AUTH_KEY_MGMT_PSK), FALSE);
|
||||
|
||||
/* Second arg: hashed key (ARRAY, BYTE) */
|
||||
if (!key_append_helper (iter, key))
|
||||
return FALSE;
|
||||
|
||||
/* Third arg: WPA version (INT32) */
|
||||
dbus_message_iter_append_basic (iter, DBUS_TYPE_INT32, &wpa_version);
|
||||
|
||||
/* Fourth arg: WPA key management (INT32) */
|
||||
dbus_message_iter_append_basic (iter, DBUS_TYPE_INT32, &key_mgt);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
nmu_security_deserialize_wpa_psk (DBusMessageIter *iter,
|
||||
char **key,
|
||||
int *key_len,
|
||||
int *wpa_version,
|
||||
int *key_mgt)
|
||||
{
|
||||
DBusMessageIter subiter;
|
||||
char * dbus_key;
|
||||
int dbus_key_len;
|
||||
dbus_int32_t dbus_wpa_version;
|
||||
dbus_int32_t dbus_key_mgt;
|
||||
|
||||
g_return_val_if_fail (iter != NULL, FALSE);
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
g_return_val_if_fail (*key == NULL, FALSE);
|
||||
g_return_val_if_fail (key_len != NULL, FALSE);
|
||||
g_return_val_if_fail (wpa_version != NULL, FALSE);
|
||||
g_return_val_if_fail (key_mgt != NULL, FALSE);
|
||||
|
||||
/* Next arg: key (ARRAY, BYTE) */
|
||||
g_return_val_if_fail ((dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_ARRAY)
|
||||
&& (dbus_message_iter_get_element_type (iter) == DBUS_TYPE_BYTE), FALSE);
|
||||
|
||||
dbus_message_iter_recurse (iter, &subiter);
|
||||
dbus_message_iter_get_fixed_array (&subiter, &dbus_key, &dbus_key_len);
|
||||
g_return_val_if_fail (dbus_key_len > 0, FALSE);
|
||||
|
||||
/* Next arg: WPA version (INT32) */
|
||||
g_return_val_if_fail (dbus_message_iter_next (iter), FALSE);
|
||||
g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_INT32, FALSE);
|
||||
|
||||
dbus_message_iter_get_basic (iter, &dbus_wpa_version);
|
||||
g_return_val_if_fail ((dbus_wpa_version == IW_AUTH_WPA_VERSION_WPA)
|
||||
|| (dbus_wpa_version == IW_AUTH_WPA_VERSION_WPA2), FALSE);
|
||||
|
||||
/* Next arg: WPA key management (INT32) */
|
||||
g_return_val_if_fail (dbus_message_iter_next (iter), FALSE);
|
||||
g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_INT32, FALSE);
|
||||
|
||||
dbus_message_iter_get_basic (iter, &dbus_key_mgt);
|
||||
g_return_val_if_fail ((dbus_key_mgt == IW_AUTH_KEY_MGMT_802_1X)
|
||||
|| (dbus_key_mgt == IW_AUTH_KEY_MGMT_PSK), FALSE);
|
||||
|
||||
*key = dbus_key;
|
||||
*key_len = dbus_key_len;
|
||||
*wpa_version = dbus_wpa_version;
|
||||
*key_mgt = dbus_key_mgt;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
nmu_security_serialize_wpa_psk_with_cipher (DBusMessage *message,
|
||||
IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid,
|
||||
const char *input,
|
||||
int wpa_version,
|
||||
int key_mgt)
|
||||
{
|
||||
int we_cipher = -1;
|
||||
char * key = NULL;
|
||||
dbus_bool_t result = TRUE;
|
||||
DBusMessageIter iter;
|
||||
|
|
@ -91,20 +238,12 @@ dbus_bool_t nmu_dbus_message_append_wpa_psk_args (DBusMessage *message, IEEE_802
|
|||
dbus_message_iter_init_append (message, &iter);
|
||||
|
||||
/* First arg: WE Cipher (INT32) */
|
||||
we_cipher = ieee_802_11_cipher_get_we_cipher (cipher);
|
||||
dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &we_cipher);
|
||||
we_cipher_append_helper (&iter, ieee_802_11_cipher_get_we_cipher (cipher));
|
||||
|
||||
/* Second arg: hashed key (ARRAY, BYTE) */
|
||||
key = ieee_802_11_cipher_hash (cipher, ssid, input);
|
||||
key_append_helper (&iter, key);
|
||||
result = nmu_security_serialize_wpa_psk (&iter, key, wpa_version, key_mgt);
|
||||
g_free (key);
|
||||
|
||||
/* Third arg: WPA version (INT32) */
|
||||
dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &wpa_version);
|
||||
|
||||
/* Fourth arg: WPA key management (INT32) */
|
||||
dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &key_mgt);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,11 +26,38 @@
|
|||
|
||||
#include "cipher.h"
|
||||
|
||||
dbus_bool_t nmu_dbus_message_append_wep_args (DBusMessage *message, IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid, const char *input, int auth_alg);
|
||||
dbus_bool_t nmu_security_serialize_wep (DBusMessageIter *iter,
|
||||
const char *key,
|
||||
int auth_alg);
|
||||
|
||||
dbus_bool_t nmu_dbus_message_append_wpa_psk_args (DBusMessage *message, IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid, const char *input, int wpa_version, int key_mgt);
|
||||
dbus_bool_t nmu_security_deserialize_wep (DBusMessageIter *iter,
|
||||
char **key,
|
||||
int *key_len,
|
||||
int *auth_alg);
|
||||
|
||||
dbus_bool_t nmu_security_serialize_wep_with_cipher (DBusMessage *message,
|
||||
IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid,
|
||||
const char *input,
|
||||
int auth_alg);
|
||||
|
||||
dbus_bool_t nmu_security_serialize_wpa_psk (DBusMessageIter *iter,
|
||||
const char *key,
|
||||
int wpa_version,
|
||||
int key_mgt);
|
||||
|
||||
dbus_bool_t nmu_security_deserialize_wpa_psk (DBusMessageIter *iter,
|
||||
char **key,
|
||||
int *key_len,
|
||||
int *wpa_version,
|
||||
int *key_mgt);
|
||||
|
||||
dbus_bool_t nmu_security_serialize_wpa_psk_with_cipher (DBusMessage *message,
|
||||
IEEE_802_11_Cipher *cipher,
|
||||
const char *ssid,
|
||||
const char *input,
|
||||
int wpa_version,
|
||||
int key_mgt);
|
||||
|
||||
|
||||
#endif /* DBUS_HELPERS_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue