From 77e1132845c5b8514838418085d0ab9d109cee48 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 27 May 2020 12:14:26 +0200 Subject: [PATCH] ifcfg-rh: support persisting 802-1x.pin and pin-flags property (cherry picked from commit 655fd1ebd8c1f14dc658f728109bc41e9362d740) (cherry picked from commit 799cee50689a27d04fa5a0e84fa515a55eeea7a4) --- Makefile.am | 1 + libnm-core/nm-setting-8021x.c | 8 ++++---- src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c | 6 ++++++ src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c | 7 +++++++ .../network-scripts/ifcfg-test-wired-802-1x-password-raw | 2 ++ .../network-scripts/keys-test-wired-802-1x-password-raw | 1 + src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 3 +++ 7 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-802-1x-password-raw diff --git a/Makefile.am b/Makefile.am index d07f8b6c27..21d05788e1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3156,6 +3156,7 @@ EXTRA_DIST += \ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-hex \ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted \ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted2 \ + src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-802-1x-password-raw \ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-8021x-peap-mschapv2 \ src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-defroute-no-gatewaydev-yes \ src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway \ diff --git a/libnm-core/nm-setting-8021x.c b/libnm-core/nm-setting-8021x.c index 4938ae061b..7b24c8c33c 100644 --- a/libnm-core/nm-setting-8021x.c +++ b/libnm-core/nm-setting-8021x.c @@ -4367,8 +4367,8 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *klass) **/ /* ---ifcfg-rh--- * property: pin - * variable: (none) - * description: The property is not handled by ifcfg-rh plugin. + * variable: IEEE_8021X_PIN(+) + * description: The pin secret used for EAP authentication methods. * ---end--- */ obj_properties[PROP_PIN] = @@ -4385,8 +4385,8 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *klass) **/ /* ---ifcfg-rh--- * property: pin-flags - * variable: (none) - * description: The property is not handled by ifcfg-rh plugin. + * variable: IEEE_8021X_PIN_FLAGS(+) + * description: The secret flags for the pin property. * ---end--- */ obj_properties[PROP_PIN_FLAGS] = diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c index 824d1900b3..a82f53c5f1 100644 --- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c +++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c @@ -3641,6 +3641,12 @@ next: svGetValueBoolean (ifcfg, "IEEE_8021X_OPTIONAL", FALSE), NULL); + _secret_set_from_ifcfg (s_8021x, + ifcfg, + keys_ifcfg, + "IEEE_8021X_PIN", + NM_SETTING_802_1X_PIN); + return g_steal_pointer (&s_8021x); } diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c index 3afdb2acd1..017938ef12 100644 --- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c +++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c @@ -535,6 +535,13 @@ write_8021x_setting (NMConnection *connection, svSetValue (ifcfg, "IEEE_8021X_PHASE2_CA_PATH", nm_setting_802_1x_get_phase2_ca_path (s_8021x)); + set_secret (ifcfg, + secrets, + "IEEE_8021X_PIN", + nm_setting_802_1x_get_pin (s_8021x), + "IEEE_8021X_PIN_FLAGS", + nm_setting_802_1x_get_pin_flags (s_8021x)); + if (!write_8021x_certs (s_8021x, secrets, blobs, FALSE, ifcfg, error)) return FALSE; diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-password-raw b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-password-raw index 181ffbef81..a5434434ba 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-password-raw +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-password-raw @@ -11,3 +11,5 @@ IEEE_8021X_IDENTITY="Bill Smith" IEEE_8021X_CA_CERT=test_ca_cert.pem IEEE_8021X_INNER_AUTH_METHODS=EAP-GTC IEEE_8021X_PASSWORD_RAW=0408151623420001 +#IEEE_8021X_PIN=hallo1 +IEEE_8021X_PIN_FLAGS=0 diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-802-1x-password-raw b/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-802-1x-password-raw new file mode 100644 index 0000000000..d29a428976 --- /dev/null +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-802-1x-password-raw @@ -0,0 +1 @@ +IEEE_8021X_PIN=hallo2 diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c index 9f564c92c4..a782ccc621 100644 --- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c +++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c @@ -2037,6 +2037,9 @@ test_read_write_802_1x_password_raw (void) ==, NM_SETTING_SECRET_FLAG_NONE); + g_assert_cmpstr (nm_setting_802_1x_get_pin (s_8021x), ==, "hallo2"); + g_assert_cmpint (nm_setting_802_1x_get_pin_flags (s_8021x), ==, NM_SETTING_SECRET_FLAG_NONE); + _writer_new_connection (connection, TEST_SCRATCH_DIR, &testfile);