Commit Graph
100 Commits
Author SHA1 Message Date
Tobias Brunner 8a6f9ba70e kernel-netlink: Don't fallback to peer address as gateway/nexthop
This doesn't really seem useful (perhaps it was before we started to
configure the outbound interface on our routes). And it can actually
cause the route installation to fail e.g. for routes over point-to-point
interfaces where we'd get "Error: Nexthop has invalid gateway" errors.

Note that we can't return NULL if we find an interface as e.g. the updown
plugin uses this method to determine the outbound interface (it ignores
the nexthop), which it passes to the script.  If we returned NULL, it
would pass "unknown" instead, which would cause the firewall rules to
mismatch.  While it seems that 0.0.0.0/:: is ignored as nexthop by the
kernel on the installed route, I still explicitly ignore such addresses
to avoid any unintended side-effects.

The automatic route installation in the ikev2/shunt-manual-prio scenario
had to be disabled on the clients.  The reason is that the route in table
220 won't have a nexthop set (the peers are directly connected), so when
trying to reach alice or venus via SSH, which matches the port-specific
bypass policies for which we don't install throw routes, the hosts will
do ARP requests for the target IPs instead of routing the packets via
moon.

Closes strongswan/strongswan#2548
2026-02-20 12:44:55 +01:00
Tobias Brunner 116f36ba57 vici: Document attributes for additional KE methods in list-sa event 2026-02-20 12:44:55 +01:00
Tobias Brunner 1afd5a7d23 github: Replace action for TKM tests with direct "docker run" call
The action causes errors because it is not compatible to the Docker
version used in the runner images.  Unfortunately, it doesn't seem
maintained anymore.  The action is simple enough, though, so instead of
switching to a fork, we just use "docker run" directly.
2026-02-20 12:37:37 +01:00
Tobias Brunner 2a8eb92767 github: Add a link to the docs in the new issue config
Also reword the discussion link description a bit.
2026-02-17 11:18:23 +01:00
Tobias Brunner 1db0c19dff Merge branch 'icmp-forwarding'
Adds support for ICMP error forwarding that the kernel supports properly
since v6.9 (it still sends locally generated errors from the wrong source
IP, though).
2026-02-12 16:23:07 +01:00
Tobias Brunner a7c03a415e testing: Add scenarios to test ICMP forwarding 2026-02-12 16:21:37 +01:00
Tobias Brunner 22e502b286 vici: Make ICMP forwarding configurable 2026-02-12 15:33:44 +01:00
Tobias Brunner b6114e84fc child-sa: Enable ICMP forwarding on SA and policies if configured 2026-02-12 14:23:44 +01:00
Tobias Brunner 110fbcbe65 child-cfg: Add flag to enable ICMP forwarding 2026-02-12 14:23:44 +01:00
Tobias Brunner 11351f24ef kernel-netlink: Enable ICMP forwarding on inbound SA and out/fwd policies 2026-02-12 14:23:44 +01:00
Tobias Brunner 21e5edab10 kernel-ipsec: Add flags to enable ICMP error forwarding
For the Linux kernel, this has to be enabled on the inbound SA and the
out and fwd policies.
2026-02-12 14:23:44 +01:00
Tobias Brunner f10b9adec9 ipsec-types: Add a proper hash function for ipsec_sa_cfg_t
While 3c12905103 ("ipsec: Add function to compare two ipsec_sa_cfg_t
instances") added a comparison function to avoid issues with non-zeroed
padding, hashes were still calculated using chunk_hash().
2026-02-12 14:23:44 +01:00
Tobias Brunner dba2c9935a Remove accidentally committed libtool script
Fixes: 3e5a528aec ("tpm: Auto-detection of legacy TPM 2.0 devices")
2026-02-09 16:04:23 +01:00
Tobias Brunner 7cca0cb772 Merge branch 'swanctl-plugins'
Uses a separate default plugin list for swanctl (instead of just loading
all of libstrongswan's plugins) to avoid some side-effects of loaded but
unused plugins.  The load statements in the regression tests have been
updated accordingly.

A new configure option for maintainers of distributions that ship
plugins in separate packages changes the message if a plugin is not
found and reduces its log level.  This confused users of tools that don't
use modular plugin loading (e.g. pki or swanctl).

Also changes command line handling in pki and swanctl so that the shared
options can be passed before the actual command and that the debug level
also affects library/plugin initialization.

References strongswan/strongswan#2971
2026-02-06 16:10:50 +01:00
Tobias Brunner e2786cbcb8 swanctl: Add global --debug, --options and --uri arguments
Similarly to the previous commit for pki, this allows setting these
options before the command, and by pre-parsing them we can see log
messages during the initialization.
2026-02-06 11:25:13 +01:00
Tobias Brunner 0d41001e74 debug: Add helper to get the current default log level for a group 2026-02-06 11:21:34 +01:00
Tobias Brunner be68bd50b7 pki: Add global --debug and --options arguments
This allows setting the log level before initializing the library and
loading the plugins, as well as having the top-level command itself in
an options file.
2026-02-06 11:21:34 +01:00
Tobias Brunner dd7b0283ef plugin-loader: Add option to change log message if plugin is not found
Distributions like Debian/Ubuntu ship the plugins in multiple packages
that are not all installed by default.  When running tools like pki or
swanctl, which don't use modular loading with config snippets by default,
there are errors in the output if these packages and plugins are
currently not available.  In order to not alarm users, this change adds
a configure option that package maintainers can use.  It causes the log
level of the message to increase and also adds a note that mentions that
plugins are potentially available in other packages (which should be the
case unless the user tried to load a plugin, e.g. via load statement,
that is not actually built and shipped by the package maintainers).
2026-02-06 11:21:34 +01:00
Tobias Brunner 5b0d506215 testing: Remove unused revocation and constraints plugins for swanctl
swanctl doesn't do any (online) certificate validation, it just parses
and or decrypts them and passes them on to the daemon.
2026-02-06 11:21:34 +01:00
Tobias Brunner 5fe1d71204 swanctl: Use a custom default plugin list
Loading all libstrongswan plugins isn't necessary as the tool only uses
the plugins to parse/decrypt credentials.  So it's similar to pki, but
it doesn't do (online) certificate validation, access tokens, or need
access to databases.

While it's usually not an issue to load unnecessary plugins, one thing
that came up recently are the new capabilities required by the agent
plugin.  Since Debian's AppArmor policy for swanctl doesn't grant them,
this produces an error message that might confuse users.
2026-02-06 11:21:34 +01:00
Tobias Brunner c649774141 configure: Load ldap plugin in pki
It's a fetcher plugin used for online certificate validation.
2026-02-06 11:21:34 +01:00
Tobias Brunner b8d8277ae0 stream-service-unix: Remove unnecessary execute permission from sockets
References strongswan/strongswan#2983
2026-02-06 11:17:36 +01:00
Tobias Brunner 2ed929d9f6 fuzz-ike: Initialize libcharon as logging will cause crashes otherwise
The bus.h header file redirects DBG* macros to the bus but that won't be
available unless libcharon is initialized.
2026-02-06 08:12:52 +01:00
Tobias Brunner 7973080969 testing: Add a reauthentication to ikev2/dhcp-static-client-id
This verifies that we don't release the lease when the old SA is
deleted during the reauthentication.
2026-02-05 17:57:07 +01:00
Tobias Brunner 79a52c488d dhcp: Don't release the address via DHCP if it's still used
This is useful during make-before-break reauthentication, where the
new SA is created before the old one is terminated and the virtual IP
gets released.

This also changes the hash() and equals() functions to avoid potential
collisions.

References strongswan/strongswan#2967
2026-02-05 17:57:01 +01:00
Tobias Brunner 44962c4e71 Merge branch 'cifuzz'
Add CIFuzz on GitHub.

Closes strongswan/strongswan#2993
2026-02-04 12:38:37 +01:00
Tobias Brunner 8a8d4640cf github: Also run UBSan with CIFuzz 2026-02-04 12:38:28 +01:00
Tobias Brunner e73af66f4a pubkey-authenticator: Avoid conflict with config switch based on EAP-Identity
The referenced commit ignored that INVALID_ARG was returned by this
authenticator if an unsupported signature scheme is encountered.  This
caused a crash in find_alternative_eap_cfg() as no EAP identity is
stored in the current auth config.

Since we don't distinguish the situation outside of the authenticator,
we can just return FAILED.

Closes strongswan/strongswan#2979

Fixes: 2f2e4abe3c ("ikev2: Add support to switch peer configs based on EAP-Identities")
2026-01-28 14:16:23 +01:00
Tobias Brunner 353bb42937 github: Use AWS-LC 1.67.0 for tests 2026-01-28 12:03:18 +01:00
Tobias Brunner c10f66d1cc github: Use OpenSSL 3.6.1 for tests 2026-01-28 12:03:18 +01:00
Tobias Brunner 8388904cbe ike-init: Simplify adding extension notifies to IKE_SA_INIT 2026-01-28 12:03:18 +01:00
Tobias Brunner 7a36a8c220 appveyor: Reduce runtime by using lld instead of ld
In particular with the 2019 image, the time required often exceeded the
maximum of 60 minutes.  Using lld reduces the runtime quite a bit (it's
still close to the limit, though).

This doesn't work with the old OpenSSL version we use with the 2015
image (that libeay32.lib file just doesn't seem to work), so continue
to use ld (the build on that image is the quickest anyway).
2026-01-22 18:15:10 +01:00
Tobias Brunner 7fa4d54b3c array: Handle recursive calls to array_sort() if qsort_r() is not supported
Such a recursive call occurs when sorting the array of Child SAs inside
an IKE SA that causes comparisons of the child configs and their
proposals, which in turn creates a merged array of all transform types
and that uses array_sort() and array_bsearch().

Closes strongswan/strongswan#2926

Fixes: 8e7f379f71 ("ike-sa: Sort CHILD_SAs by CPU ID")
2026-01-22 18:14:58 +01:00
Tobias Brunner d0c36baef9 charon-cmd: Add support for childless IKE SA initiation
References strongswan/strongswan#1594
2026-01-15 14:12:43 +01:00
Tobias Brunner e248fac362 charon-cmd: Only use loose identity matching if no IDr is configured 2026-01-15 14:10:59 +01:00
Tobias Brunner 757dce2ed3 charon-cmd: Add support for PSK authentication with IKEv2
Can be useful for testing purposes (e.g. some public test servers use
PSKs).
2026-01-15 14:10:35 +01:00
Tobias Brunner d68044b216 identification: Add support for organizationIdentifier in DNs
These are e.g. used in eIDAS certificates.
2026-01-05 10:50:24 +01:00
Tobias Brunner f79504994a agent: Fix compiler warning when building with clang
Fixes: 8b467ad39a ("agent: Add option to open socket as specific user")
2025-12-12 15:59:38 +01:00
Tobias Brunner 9d242a4f7d ip-packet: Fix compiler warning seen on FreeBSD 15
We explicitly use untoh16() so this warning isn't relevant:

  ip_packet.c:313:42: error: taking address of packed member 'ip_len' of class or structure 'ip' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
2025-12-12 15:58:31 +01:00
Tobias Brunner db6eca56d7 cirrus: Use FreeBSD 15.0 and 14.3 2025-12-12 15:58:31 +01:00
Tobias Brunner d20a0116b2 Use Botan 3.10.0 for tests
Clean up leak-detective whitelist for newer Botan versions but add
`botan_private_key_load` as `botan_privkey_load*` won't show up anymore
without bfd-backtraces due to inlining if we don't call it directly.

Ref: https://github.com/randombit/botan/discussions/4868
2025-12-12 15:58:31 +01:00
Tobias Brunner 1ff9533348 github: Use AWS-LC 1.65.1 for tests 2025-12-12 15:58:31 +01:00
Tobias Brunner ca37563c55 nm: Version bump to 1.6.4 2025-12-12 15:35:57 +01:00
Tobias Brunner 858934550a NEWS: Add news for 6.0.4 2025-12-10 18:34:20 +01:00
Tobias Brunner d7608ca192 nm: Pass back the username auth-dialog runs as to access ssh-agent socket
This ensures we access the socket as user who NM ran the auth-dialog for,
especially for system-wide connections where the connection does not
mention a user.

We also make sure we don't use the cached socket and user of a previous
connection attempt, because system-wide connections might be used by
different users.
2025-12-10 18:34:19 +01:00
Tobias Brunner 7cc8973db7 charon-nm: Pass configured user when connecting to SSH/GPG agent
This prevents an attack similar to the one fixed previously where a
user passes the path to credentials of another user, in this case the
path to the agent socket of that user.
2025-12-10 18:34:19 +01:00
Tobias Brunner 8b467ad39a agent: Add option to open socket as specific user
This can prevent an attack where user A passes the path to user B's
ssh-agent socket to the daemon that is running as root.
2025-12-10 18:34:19 +01:00
Tobias Brunner a768f57286 nm: Create safe copies of files for user-specific connections
This ensures that only certificates/private keys accessible by the
configured user are accessed and prevents attackers from misusing
other user's credentials.

Also removed setting NM_VERSION_MIN_REQUIRED, which suppresses deprecation
warnings that were added with newer API versions, and
NM_VERSION_MAX_ALLOWED, which warns if using functions added in newer
API versions, so we always build against the latest API available.

But we check explicitly for the required function so this works with
older NM versions and automatically will use it if the function is
backported.

Note that we can't use BUILD_FROM_FILE to read the temporary files as that
uses mmap() which SELinux policies prevent us from using at the location
these files are stored ([/var]/run/NetworkManager/cert/).

Fixes: CVE-2025-9615
2025-12-10 17:12:31 +01:00
Tobias Brunner 84a5208d98 child-rekey: Prevent crash if peer rekeys a Child SA twice before sending a delete
Some (Windows) peers have been seen to initiate a second rekeying for the
same Child SA.  Presumably, this happens if a rekey request from us for
the same old Child SA arrives while it waits for the response to its
first rekey request.  Once we receive the delete for the old SA, we
conclude the rekeying with the second replacement.  However, the first
replacement remained linked to the old SA.  So this change prevents a
crash once the peer sends a delete for that first replacement (which it
seems to do after about 5 minutes).

References strongswan/strongswan#2944
Closes strongswan/strongswan#2945
2025-12-10 17:10:29 +01:00
Tobias Brunner 1454bd7bcf testing: Make per-CPU SAs scenarios more predictable by pinning IRQs to vCPUs
This ensures that packets on sun are processed on a particular CPU and
not randomly on one, which causes expected SAs not to get created or
other weird things.
2025-12-03 11:42:54 +01:00
Tobias Brunner b0e4a7d015 github: Use AWS-LC 1.65.0 for tests 2025-11-21 10:51:38 +01:00
Tobias Brunner 831d8454df Use wolfSSL 5.8.4 for tests
Also remove the --enable-md4 option.  We never supported MD4 via wolfSSL,
as it's not available via the hash API we use (would require explicit
MD4-specific functions and structures).
2025-11-21 10:49:18 +01:00
Tobias Brunner 3a5fb9175b Merge branch 'swanctl-names'
Increases buffers in settings and swanctl to allow longer connection
names (up to the limit of 256 characters imposed by VICI).  The limit
for names is now also enforced when generating VICI messages.

Closes strongswan/strongswan#2936
2025-11-20 15:54:57 +01:00
Tobias Brunner 80e2cf44a3 swanctl: Allow connection and child config names to be longer
VICI imposes an upper limit of 256 characters for names, which we should
allow for connection and child configs.
2025-11-19 10:50:06 +01:00
Tobias Brunner 9fe4f9fc9f settings: Increase buffer size for key patterns/parts when looking up settings
The buffer size for individual parts of a key now match the maximum length
of names in VICI. The full pattern should accommodate several long names
(e.g. for connections and child connections in swanctl) even if no
printf-specifiers are used.
2025-11-19 10:37:55 +01:00
Tobias Brunner 9b0b1cb24e vici: Enforce maximum length for names when building a message
Otherwise, an integer overflow will shorten the name and cause
unpredictable outcomes.
2025-11-19 10:30:39 +01:00
Tobias Brunner 641af25b10 Merge branch 'revocation-fetcher'
Combines concurrent requests for the same CRL URI by multiple threads.
So only the first thread actually fetches it, the others wait for that
result.  This is particularly helpful if the CRL can currently not
be fetched due to DNS or HTTP/LDAP timeouts as it prevents each thread
from having to wait for the complete timeouts, which reduces the number
of SAs that can concurrently be established.

A negative result is cached for a while (currently 3 times the fetch
timeout, i.e. 30 seconds by default) so requests can fail quickly and
threads can continue establishing SAs if they use a relaxed revocation
policy.

Closes strongswan/strongswan#2918
2025-11-13 18:56:57 +01:00
Tobias Brunner 041d0642a1 github: Use AWS-LC 1.64.0 for tests 2025-11-13 14:09:23 +01:00
Tobias Brunner 5e410617d4 Merge branch 'android-updates'
Fixes edge-to-edge layout issues with the settings and application
selection Activities.
2025-10-30 17:13:38 +01:00
Tobias Brunner 8155ea920c android: New release after fixing edge-to-edge layout issues 2025-10-30 17:12:54 +01:00
Tobias Brunner a4f32a5a46 android: Fix edge-to-edge layout issues with settings and app selection
Using FrameLayout for the settings instead of the recommended
FragmentContainerView because the latter makes handling insets more
complicated (fitsSystemWindows doesn't work as the fragment is responsible
for handling insets but how that should work with PreferenceFragmentCompat
is unclear).

Fixes: 2404b2bee6 ("android: Apply UI changes for edge-to-edge views in Android 15+")
2025-10-30 16:55:05 +01:00
Tobias Brunner 3741d24a25 Merge branch 'android-updates'
This fixes the vulnerability in the eap-mschapv2 plugin and an issue
with the filename of log files.  In the released app, the OpenSSL version
is also increased in order to support ML-KEM.
2025-10-27 15:37:11 +01:00
Tobias Brunner d8ff59d02f android: New release after fixing eap-mschapv2 and log file issues
OpenSSL is also updated in the released version of the app.
2025-10-27 15:13:02 +01:00
Tobias Brunner 5d98463eed android: Fix querying display name of the log file
The previous code did not necessarily provide it (in particular if the
size, or anything else, was queried as first column).
2025-10-27 14:39:55 +01:00
Tobias Brunner 69381576d7 android: Use Docker's recommended syntax for env variables 2025-10-27 14:39:55 +01:00
Tobias Brunner 1014d74e4b NEWS: Add info about CVE-2025-62291 2025-10-27 14:02:59 +01:00
Tobias Brunner c687ada6a6 eap-mschapv2: Fix length check for Failure Request packets on the client
For message lengths between 6 and 8, subtracting HEADER_LEN (9) causes
`message_len` to become negative, which is then used in calls to malloc()
and memcpy() that both take size_t arguments, causing an integer
underflow.

For 6 and 7, the huge size requested from malloc() will fail (it exceeds
PTRDIFF_MAX) and the returned NULL pointer will cause a segmentation
fault in memcpy().

However, for 8, the allocation is 0, which succeeds.  But then the -1
passed to memcpy() causes a heap-based buffer overflow (and possibly a
segmentation fault when attempting to read/write that much data).
Fortunately, if compiled with -D_FORTIFY_SOURCE=3 (the default on e.g.
Ubuntu), the compiler will use __memcpy_chk(), which prevents that buffer
overflow and causes the daemon to get aborted immediately instead.

Fixes: f98cdf7a47 ("adding plugin for EAP-MS-CHAPv2")
Fixes: CVE-2025-62291
2025-10-27 14:02:59 +01:00
Tobias Brunner 9ef637e782 eap-mschapv2: Fix length check for successful responses on the client
While wrong, this isn't an issue in practice as AUTH_RESPONSE_LEN is
long enough that subtracting HEADER_LEN is fine.

Fixes: f98cdf7a47 ("adding plugin for EAP-MS-CHAPv2")
2025-10-27 14:02:59 +01:00
Tobias Brunner ba2bc3f4fe vici: Add event listener of Python bindings to release tarball
Fixes: 4e065a9624 ("vici: Add decorators to Python bindings to simplify listening for events")
2025-10-24 15:15:45 +02:00
Tobias Brunner d3a05165d4 NEWS: Add news for 6.0.3 2025-10-17 17:20:13 +02:00
Tobias Brunner eaf0c22e8e Fixed some typos, courtesy of codespell 2025-10-17 17:20:13 +02:00
Tobias Brunner 7c74925fa1 pkcs11: Fix comment
Fixes: e9fa338e23 ("pkcs11: Improve detection of already unwrapped CKA_EC_POINTs")
2025-10-17 17:20:13 +02:00
Tobias Brunner 6b6bec7295 Merge branch 'python-decorators'
Adds decorators to simplify listening for events.

References strongswan/strongswan#2772
2025-10-16 15:05:22 +02:00
Tobias Brunner 4840507d7a vici: Allow callers of listen() to distinguish between disconnects and intended breaks 2025-10-08 16:53:01 +02:00
Tobias Brunner 8bfdf2fb60 vici: Export timeout in event listener of Python bindings
This allows running periodic tasks (e.g. check some outside condition)
and stop listening by raising the StopListening exception.
2025-10-07 09:22:40 +02:00
Tobias Brunner 79da117283 vici: Provide a way to stop listening and re-connect in Python bindings
This allows re-connecting to a new session in a disconnect listener and
continue listening without having to return from listen().  The exception
can also be used to stop listening after some condition (e.g. to wait
until a specific SA got created and then stop).
2025-10-07 09:22:38 +02:00
Tobias Brunner 4e065a9624 vici: Add decorators to Python bindings to simplify listening for events 2025-10-07 09:20:57 +02:00
Tobias Brunner a24429c678 appveyor: Change OpenSSL directory on Windows Server 2019 image
The default OpenSSL version has changed to 1.1.1 and the -v111 dir was
removed.
2025-10-06 14:45:49 +02:00
Tobias Brunner 404111b46f Merge branch 'vici-alerts'
Exposes alerts via vici protocol.

Closes strongswan/strongswan#2894
2025-10-02 10:22:51 +02:00
Tobias Brunner b83aed1362 libtls: Use correct constant in error message
Closes strongswan/strongswan#2896

Fixes: e731396280 ("tls-server: Check if peer sent hash and signature algorithms")
2025-10-02 10:02:49 +02:00
Tobias Brunner eb2d8768d8 github: Use OpenSSL 3 for macOS builds and enable additional plugins
The Homebrew formula has been using OpenSSL 3 for a while.  The eap-peap
and pkcs11 plugins also have been enabled in the formula.  The dhcp plugin
is enabled to test the port (the farp plugin was already enabled since
its port to FreeBSD/macOS).  The drbg plugin is enabled to run the ML-KEM
test vectors.
2025-10-02 09:03:37 +02:00
Tobias Brunner 6a55de1fa2 github: Build on macOS 14 instead of the deprecated macOS 13
While macos-13 was running on Intel, both macos-latest (macOS 15) and
macos-14 run on ARM64.  While there are Intel-based images for 14 and 15,
they will only be available until August 2027 (and there aren't any Intel
devices anymore anyway).
2025-10-01 19:08:51 +02:00
Tobias Brunner d0770e5362 github: Use OpenSSL 3.6.0 for tests 2025-10-01 19:08:49 +02:00
Tobias Brunner 61daa338c7 vici: Remove deprecated license classifier in Python metadata 2025-10-01 19:08:34 +02:00
Tobias Brunner bfed29705e Merge branch 'android-updates'
This fixes GUI-related compatibility issues with Android 16 and allows
(pre-)selecting on-device certificates/keys with managed profiles.  Also
fixes a typo in the managed config description that prevented
split-tunneling settings from working.
2025-10-01 15:19:18 +02:00
Tobias Brunner 74a4700b6d android: New release after updating target SDK and allowing cert selection in managed profiles 2025-10-01 15:18:27 +02:00
Tobias Brunner ce8b5ff394 android: Fix typo for split-tunneling settings in managed config description
We use the American spelling "tunneling" throughout the app.
2025-10-01 14:47:02 +02:00
Tobias Brunner cde39f4c1a android: Make a certificate alias pre-selectable in managed profiles
This allows associating a pre-installed certificate/key with a VPN
profile.  For instance, one locally generated on the device via
SCEP/ETS by the MDM.  It only works if the app is granted access to the
certificate/key (alias) by the MDM.

For now, users may still select a different certificate if one is
available (since this requires the certificate to be installed as
user-selectable there might not be).
2025-09-30 16:51:08 +02:00
Tobias Brunner 11f043c3de android: Prompt the user to edit the profile if no certificate is selected 2025-09-30 16:51:08 +02:00
Tobias Brunner 1a16b2c0cb android: Don't print "null" if no user certificate is selected 2025-09-30 11:26:41 +02:00
Tobias Brunner 4918e681ee android: Allow selecting a user certificate for managed profiles
This is only enabled for profiles that are not distributed with a
certificate.
2025-09-30 11:26:41 +02:00
Tobias Brunner eac76a1a5a android: Explicitly pull in androidx.localbroadcastmanager
Seems to not get pulled in automatically anymore.  This has actually been
deprecated for years apparently.  Unfortunately, it's not that easy to
replace, so keep it for now.
2025-09-30 11:26:41 +02:00
Tobias Brunner e26d974fe3 android: Remove redundant namespace and fix indentation in state fragment layout 2025-09-30 11:26:40 +02:00
Tobias Brunner 357b93e99d android: Use correct title for proxy server port field in managed configs 2025-09-30 11:26:40 +02:00
Tobias Brunner 3bf34f1cd5 android: Simplify theme definition due to minSdkVersion 2025-09-30 11:26:40 +02:00
Tobias Brunner 13426bd2ea android: Remove obsolete TargetApi attribute 2025-09-30 11:26:40 +02:00
Tobias Brunner 59b74c767a android: Update syntax for three values Gradle warns about
Others seem to be fine or even get an explicit error if changed, like
targetSdkVersion.
2025-09-30 11:26:40 +02:00
Tobias Brunner 19ef347628 android: Increase targetSdkVersion to 36 (Android 16) 2025-09-30 11:26:40 +02:00
Tobias Brunner 86508cdf2b android: Update NDK version 2025-09-30 11:26:40 +02:00
Tobias Brunner 2404b2bee6 android: Apply UI changes for edge-to-edge views in Android 15+
When targeting Android 15, edge-to-edge is the default and when targeting
Android 16, apps can't opt-out from this anymore.  So we update our views
and enable edge-to-edge also for older versions (avoids the black bar
behind the system UI at the bottom).  For most views we just use automatic
margins via android:fitsSystemWindows (or programmatically via
setDecorFitsSystemWindows).  However, for the profile lists and log views,
we take some extra measures that allow the lists to go behind the bottom
system UI.  Appropriate padding is applied at the bottom of the lists so
the last item(s) can be scrolled into full view.
2025-09-30 11:26:40 +02:00