diff options
author | Evan Broder <evan@ebroder.net> | 2011-11-17 16:36:18 -0800 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2011-11-21 23:51:01 -0600 |
commit | 9fc134ee83ee4444517448efaee774dc9feebd65 (patch) | |
tree | 8398ca25be91c206388e645edcc525dc50c76958 | |
parent | b08e2b8932ed6aa735b4ef4ed04fc173f275b16e (diff) |
keyfile: Read and write the new 8021x.password-raw field
-rw-r--r-- | src/settings/plugins/keyfile/reader.c | 20 | ||||
-rw-r--r-- | src/settings/plugins/keyfile/writer.c | 28 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c index dd1868c95d..f973ce8b4c 100644 --- a/src/settings/plugins/keyfile/reader.c +++ b/src/settings/plugins/keyfile/reader.c @@ -823,6 +823,22 @@ ssid_parser (NMSetting *setting, const char *key, GKeyFile *keyfile, const char } } +static void +password_raw_parser (NMSetting *setting, const char *key, GKeyFile *keyfile, const char *keyfile_path) +{ + const char *setting_name = nm_setting_get_name (setting); + GByteArray *array; + + array = get_uchar_array (keyfile, setting_name, key, FALSE, TRUE); + if (array) { + g_object_set (setting, key, array, NULL); + g_byte_array_free (array, TRUE); + } else { + g_warning ("%s: ignoring invalid raw password for %s / %s", + __func__, setting_name, key); + } +} + static char * get_cert_path (const char *keyfile_path, GByteArray *cert_path) { @@ -1022,6 +1038,10 @@ static KeyParser key_parsers[] = { TRUE, ssid_parser }, { NM_SETTING_802_1X_SETTING_NAME, + NM_SETTING_802_1X_PASSWORD_RAW, + TRUE, + password_raw_parser }, + { NM_SETTING_802_1X_SETTING_NAME, NM_SETTING_802_1X_CA_CERT, TRUE, cert_parser }, diff --git a/src/settings/plugins/keyfile/writer.c b/src/settings/plugins/keyfile/writer.c index 2babe2671c..3bc8260907 100644 --- a/src/settings/plugins/keyfile/writer.c +++ b/src/settings/plugins/keyfile/writer.c @@ -532,6 +532,31 @@ ssid_writer (GKeyFile *file, } } +static void +password_raw_writer (GKeyFile *file, + const char *keyfile_dir, + const char *uuid, + NMSetting *setting, + const char *key, + const GValue *value) +{ + const char *setting_name = nm_setting_get_name (setting); + GByteArray *array; + int i, *tmp_array; + + g_return_if_fail (G_VALUE_HOLDS (value, DBUS_TYPE_G_UCHAR_ARRAY)); + + array = (GByteArray *) g_value_get_boxed (value); + if (!array || !array->len) + return; + + tmp_array = g_new (gint, array->len); + for (i = 0; i < array->len; i++) + tmp_array[i] = (int) array->data[i]; + g_key_file_set_integer_list (file, setting_name, key, tmp_array, array->len); + g_free (tmp_array); +} + typedef struct ObjectType { const char *key; const char *suffix; @@ -791,6 +816,9 @@ static KeyWriter key_writers[] = { NM_SETTING_WIRELESS_SSID, ssid_writer }, { NM_SETTING_802_1X_SETTING_NAME, + NM_SETTING_802_1X_PASSWORD_RAW, + password_raw_writer }, + { NM_SETTING_802_1X_SETTING_NAME, NM_SETTING_802_1X_CA_CERT, cert_writer }, { NM_SETTING_802_1X_SETTING_NAME, |