NetworkManager/src/libnm-core-public
Íñigo Huguet 2ab56e82d4 libnmc: allow user input in ECHO mode for 2FA challenges
Depending on the type of challenge used in the 2FA authentication, the
user input doesn't need to be hidden and sometimes it's even undesired
(it makes more difficult to enter the text).

Allow to VPN plugins to indicate that a secret that is being requested
is a 2FA challenge with ECHO mode enabled:
- When using auth dialog: accept a new option "ForceEcho" that can be
  set to TRUE to enable ECHO.
- When using the fallback method: recognize the prefix
  "x-dynamic-challenge-echo". This indicate both that ECHO should be enabled
  and that this is a 2FA challenge (see previous commit).

The correct way to enable echo mode from VPN plugins is doing both
things: pass the hint prefixed with "x-dynamic-challenge-echo" and add the
option "ForceEcho=true" for the auth dialog.

An attempt to support ECHO mode from NM-openvpn was made by passing
"IsSecret=false", but it didn't work because nm-secret-agent-simple
ignores returned values for which "IsSecret=false". It's not a good idea
to start accepting them because we could break other plugins, and anyway
the challenge response is actually a secret, so it is better to keep it
as such and add this new "ForceEcho" option.

This is backwards compatible because existing plugins were not using the
tag nor the auth dialog option. Withouth them, the previous behaviour is
preserved. On the contrary, plugins that want to use this new feature
will need to bump their NM version dependency because old daemons will
not handle correctly the prefix tag.

Secret agents will need to be updated to check secret->force_echo if
they want to support this feature. Until they update, the only drawback
is that ECHO mode will be ignored and the user's input will be hidden.

Updated nmcli and nmtui to support ECHO mode.
2024-02-15 09:45:44 +00:00
..
meson.build HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
nm-connection.h libnm: move nm-errors.h include away from nm-connection.h 2022-11-13 23:36:37 +01:00
nm-core-types.h HSR: add support to HSR/PRP interface 2023-12-05 08:05:56 +01:00
nm-dbus-interface.h libnmc: allow user input in ECHO mode for 2FA challenges 2024-02-15 09:45:44 +00:00
nm-errors.h ifcfg-rh: add helper to set unsupported error 2023-06-29 10:18:07 +02:00
nm-keyfile.h all: adjust glib-mkenums annotations for automated formatting 2022-02-08 11:14:01 +01:00
nm-setting-6lowpan.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-8021x.h supplicant: add NMSetting8021xAuthFlags for TLS v1.3 / enable a version 2022-11-08 07:15:14 +01:00
nm-setting-adsl.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-bluetooth.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-bond-port.h bonding: add support to prio property in bond ports 2023-05-03 10:44:06 +02:00
nm-setting-bond.h bonding: add support to ns_ip6_target option 2023-03-06 15:06:41 +01:00
nm-setting-bridge-port.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-bridge.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-cdma.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-connection.h connection: deprecate NMSettingConnection autoconnect-slaves property 2024-01-31 11:29:06 +01:00
nm-setting-dcb.h all: adjust glib-mkenums annotations for automated formatting 2022-02-08 11:14:01 +01:00
nm-setting-dummy.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-ethtool.h ethtool: introduce EEE support 2023-11-03 15:41:21 +00:00
nm-setting-generic.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-gsm.h libnm: Add initial EPS parameters to gsm settings 2023-02-20 12:59:39 +01:00
nm-setting-hostname.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-hsr.h hsr: drop supervision-address from HSR setting 2023-12-19 13:54:21 +01:00
nm-setting-infiniband.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-ip-config.h libnm,nmcli: add ipvx.dhcp-dscp property 2024-02-06 14:24:39 +01:00
nm-setting-ip-tunnel.h libnm: support VTI properties in the ip-tunnel setting 2022-12-21 14:04:44 +01:00
nm-setting-ip4-config.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-ip6-config.h libnm,nmcli: add ipv6.dhcp-pd-hint property 2023-04-03 16:04:55 +02:00
nm-setting-link.h all: add "link" setting 2023-03-02 16:51:16 +01:00
nm-setting-loopback.h support loopback interface 2022-11-23 20:51:22 +01:00
nm-setting-macsec.h macsec: allow CKN shorter than 64 characters 2022-11-16 10:36:39 +01:00
nm-setting-macvlan.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-match.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-olpc-mesh.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-ovs-bridge.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-ovs-dpdk.h all: add support for ovs-dpdk n-rxq-desc and n-txq-desc 2023-01-17 08:45:04 +01:00
nm-setting-ovs-external-ids.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-ovs-interface.h ovs: add ofport_request option to ovs interface 2022-09-02 08:46:36 +00:00
nm-setting-ovs-other-config.h ovs: add support for "other_config" settings 2023-01-11 21:49:36 +01:00
nm-setting-ovs-patch.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-ovs-port.h libnm: add ovs-port.trunks property 2022-11-25 14:15:41 +01:00
nm-setting-ppp.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-pppoe.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-proxy.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-serial.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-sriov.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-tc-config.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-team-port.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-team.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-tun.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-user.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-veth.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-vlan.h libnm,nmcli: add vlan.protocol property 2022-12-14 11:33:03 +01:00
nm-setting-vpn.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting-vrf.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-vxlan.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-wifi-p2p.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-wimax.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-setting-wired.h all: adjust glib-mkenums annotations for automated formatting 2022-02-08 11:14:01 +01:00
nm-setting-wireguard.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-setting-wireless-security.h libnm: fix a large amount of Since tags 2022-11-08 11:40:18 +01:00
nm-setting-wireless.h libnm: mark unused properties "wifi.{rate,tx-power}" as deprecated 2023-03-27 11:22:44 +02:00
nm-setting-wpan.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
nm-setting.h libnm: drop _NMConnectionForEachSecretFunc from public headers 2023-02-27 14:01:09 +01:00
nm-simple-connection.h clang-format: use "IndentPPDirectives:None" instead of "BeforeHash" 2021-07-09 08:49:06 +02:00
nm-utils.h libnm: deprecate nm_utils_escape_ssid() 2023-12-13 09:06:36 +01:00
nm-version-macros.h.in version: add version 1.48 macros 2024-02-14 10:18:41 +01:00
nm-version.h version: add version 1.48 macros 2024-02-14 10:18:41 +01:00
nm-vpn-dbus-interface.h libnm: allow manually specified IP addresses to have prefix length 0 2022-05-26 19:08:28 +02:00
nm-vpn-editor-plugin.h format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
nm-vpn-plugin-info.h libnm: actually export a lot of routines that were supposed to be public 2022-11-08 11:43:00 +01:00
README.md build: move "libnm-core/" to "src/" and split it 2021-02-18 19:46:51 +01:00

libnm-core-public

This contains (mostly) header files only, which are also part of the public API of libnm.

Also, this API is implemented by the static library libnm-core-impl, which in turn is statically linked into NetworkManager core and libnm.

These headers can be used by anybody who either:

Note that there is also one source file: nm-core-enum-types.c. This source file really belongs to libnm-core-impl but it is here because it's a generated file and so far I couldn't figure out how to generate nm-core-enum-types.h here while moving nm-core-enum-types.c to libnm-core-impl.

Aside nm-core-enum-types.c, this directory only provides header files. Users should add this directory (both srcdir and builddir) to the include search path, because libnm users are used to include these headers unqualified (like #include "nm-setting.h).