mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-11 09:18:38 +02:00
merge: branch 'iwd-passphrase-storage-options_main'
Draft: wifi: iwd: Honor passphrase storage option https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2402
This commit is contained in:
commit
2891b43b57
2 changed files with 34 additions and 2 deletions
|
|
@ -1314,6 +1314,8 @@ get_agent_request_network_path(GDBusMethodInvocation *invocation)
|
|||
|
||||
if (nm_streq(method_name, "RequestPassphrase"))
|
||||
g_variant_get(params, "(&o)", &network_path);
|
||||
else if (nm_streq(method_name, "RequestPassphraseWithOptions"))
|
||||
g_variant_get(params, "(&o)", &network_path);
|
||||
else if (nm_streq(method_name, "RequestPrivateKeyPassphrase"))
|
||||
g_variant_get(params, "(&o)", &network_path);
|
||||
else if (nm_streq(method_name, "RequestUserNameAndPassword"))
|
||||
|
|
@ -1333,6 +1335,18 @@ get_agent_request_network_path(GDBusMethodInvocation *invocation)
|
|||
* name and key so the caller can send a NM secrets request with this data.
|
||||
* Return TRUE in either case, return FALSE if an error is detected.
|
||||
*/
|
||||
static gboolean
|
||||
psk_should_store_in_iwd(NMSettingWirelessSecurity *s_wireless_sec)
|
||||
{
|
||||
NMSettingSecretFlags psk_flags;
|
||||
|
||||
psk_flags = nm_setting_wireless_security_get_psk_flags(s_wireless_sec);
|
||||
|
||||
return !NM_FLAGS_ANY(psk_flags,
|
||||
NM_SETTING_SECRET_FLAG_AGENT_OWNED
|
||||
| NM_SETTING_SECRET_FLAG_NOT_SAVED);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
try_reply_agent_request(NMDeviceIwd *self,
|
||||
NMConnection *connection,
|
||||
|
|
@ -1351,7 +1365,7 @@ try_reply_agent_request(NMDeviceIwd *self,
|
|||
|
||||
*replied = FALSE;
|
||||
|
||||
if (nm_streq(method_name, "RequestPassphrase")) {
|
||||
if (NM_IN_STRSET(method_name, "RequestPassphrase", "RequestPassphraseWithOptions")) {
|
||||
if (!s_wireless_sec)
|
||||
return FALSE;
|
||||
|
||||
|
|
@ -1361,7 +1375,20 @@ try_reply_agent_request(NMDeviceIwd *self,
|
|||
if (psk) {
|
||||
_LOGD(LOGD_DEVICE | LOGD_WIFI, "Returning the PSK to the IWD Agent");
|
||||
|
||||
g_dbus_method_invocation_return_value(invocation, g_variant_new("(s)", psk));
|
||||
if (nm_streq(method_name, "RequestPassphraseWithOptions")) {
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}"));
|
||||
g_variant_builder_add(&builder,
|
||||
"{sv}",
|
||||
"Store",
|
||||
g_variant_new_boolean(psk_should_store_in_iwd(
|
||||
s_wireless_sec)));
|
||||
g_dbus_method_invocation_return_value(
|
||||
invocation,
|
||||
g_variant_new("(s@a{sv})", psk, g_variant_builder_end(&builder)));
|
||||
} else
|
||||
g_dbus_method_invocation_return_value(invocation, g_variant_new("(s)", psk));
|
||||
*replied = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -355,6 +355,11 @@ static const GDBusInterfaceInfo iwd_agent_iface_info = NM_DEFINE_GDBUS_INTERFACE
|
|||
"RequestPassphrase",
|
||||
.in_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("network", "o"), ),
|
||||
.out_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("passphrase", "s"), ), ),
|
||||
NM_DEFINE_GDBUS_METHOD_INFO(
|
||||
"RequestPassphraseWithOptions",
|
||||
.in_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("network", "o"), ),
|
||||
.out_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("passphrase", "s"),
|
||||
NM_DEFINE_GDBUS_ARG_INFO("options", "a{sv}"), ), ),
|
||||
NM_DEFINE_GDBUS_METHOD_INFO(
|
||||
"RequestPrivateKeyPassphrase",
|
||||
.in_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("network", "o"), ),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue