539 Commits
Author SHA1 Message Date
Tobias Brunner e0fd0f51ea configure: Disable IKEv1 support by default
The protocol has long been replaced by IKEv2 and is officially deprecated
since several years (RFC 9395).  As a first step to removing support for
it completely, this makes the configure option disabled by default and
warns users about its use.
2026-07-28 08:39:47 +02:00
Tobias Brunner 2f9b52bd1b tnccs-dynamic: Remove unused plugin
With only TNCCS-2.0 supported, there is no need for this plugin.
2026-07-27 08:09:39 +02:00
Tobias Brunner ec2a501d8e tnccs-11: Remove legacy TNCCS-1.1 implementation
There is no reason to keep this around anymore (has been superseded by
TNCCS-2.0 a long time ago).  Removed the corresponding test scenarios.

Since this is the last user of libxml, also removed those references.
2026-07-27 08:09:39 +02:00
Tobias Brunner 1fa33a0631 tnc-ifmap: Remove prototypical IF-MAP plugin
This was primarily used in our labs to visualize some TNC aspects but
the third-party daemon and frontend we used have not seen any development
in a decade.  There never was any industry interest in this protocol
anyway, so just remove it.
2026-07-27 08:09:39 +02:00
Tobias Brunner 3a23a56b29 soup: Remove limited fetcher plugin
Besides the relatively recent update to libsoup-3, this has not seen
much development and lacks several features.  There does not seem to be
any advantage over using the curl plugin.  So just remove it to reduce
the maintenance burden.
2026-07-27 08:09:39 +02:00
Tobias Brunner 7d122d5a98 gcrypt: Remove limited crypto plugin
This has not seen any significant changes for years.  So it lacks support
for modern algorithms and would require quite some work for an overhaul.
Given that we support several other crypto backends, let's just remove
this to reduce the maintenance burden.

The test scenarios and other references are also removed.
2026-07-27 08:09:39 +02:00
Tobias Brunner 248c915593 af-alg: Remove plugin for deprecated AF_ALG interface
The 7.2 kernel has officially deprecated the interface and it will soon
be removed (support for hardware crypto offload has already been removed).

Also removed the corresponding test scenarios.
2026-07-27 08:09:39 +02:00
Tobias Brunner 10beab8bcd padlock: Remove legacy hardware crypto plugin
Unlikely there is even still hardware that would support this.

Also removed the CPU feature detection for these chips.
2026-07-24 15:44:44 +02:00
Tobias Brunner 9f6273786e led: Remove unused plugin
This was originally developed for a custom device.  No known users for
years.
2026-07-24 15:20:24 +02:00
Tobias Brunner 8b2e60b62b duplicheck: Remove confusing plugin
This plugin was developed for a customer who had very specific
requirements.  It never did anything useful for regular users and
usually caused confusing errors if they enabled it by mistake.  So
just remove it.
2026-07-24 15:20:24 +02:00
Tobias Brunner 67327e9074 blowfish: Remove legacy Blowfish implementation
There is no reason to use Blowfish nowadays.  Given that there are some
other plugins that still provide it, there is especially no reason to
maintain this custom implementation.  Also removed the two test scenarios
that used the plugin to avoid promoting the use of this algorithm.
2026-07-24 15:20:24 +02:00
Tobias Brunner e535ba99ac android-dns: Remove legacy Android DNS plugin
This was written for the original native Android port.  It was never used
by the later Android app.
2026-07-24 14:59:55 +02:00
Tobias Brunner eb50fd9d15 keychain: Remove unused macOS KeyChain plugin
The macOS frontend was the only user of this plugin.
2026-07-24 14:59:55 +02:00
Tobias Brunner 60846f24bf libfast: Remove FastCGI application server library
The two users (manager, medsrv) are gone, so there is no reason to keep
this around.
2026-07-24 14:59:51 +02:00
Tobias Brunner ac690f1a5e medsrv/medcli: Remove prototypical medsrv web application and plugins
This was from a student project that has never been developed further.
And similar to the manager web application it lacks all sorts of modern
standards.  So just remove it and the two plugins it relied on.

The test scenario is renamed to avoid confusion (neither of the two
p2pnat scenarios uses medsrv/medcli).
2026-07-24 14:45:27 +02:00
Tobias Brunner 96b0011d30 smp: Remove legacy configuration/control interface
This has been replaced by VICI years ago, the only remaining user was
the manager.  So remove this as well.
2026-07-24 14:44:54 +02:00
Tobias Brunner f55bb2b384 manager: Remove legacy PoC manager web application
This has not been developed for years and as far as web applications
go it has some serious (security) issues.  So just remove it.
2026-07-24 14:17:47 +02:00
Tobias Brunner 8efb533008 capabilities: Log warning if UID changes and no capability backend is compiled in
In this case, we preserve the complete set of capabilities not just the
ones we actually need.  Removing the `prctl()` call isn't an option as
the daemon wouldn't be functional without the capabilities.  But we now
warn users about this.  We also only call `prctl()` if we actually switch
to a non-zero UID, `has_capability()` in turn already checks that we are
running as root in the `!CAPABILITIES` case.

A similar warning has been added to the configure script if a user has
been set at compile time.
2026-07-24 08:47:37 +02:00
Tobias Brunner e37aac7b4f ldap: Replace deprecated function calls and support LDAPS
The use of the deprecated `ldap_init()` meant that LDAPS, although
announced by the plugin, was not actually supported.  The plugin just
always used a plaintext connection.  Now we use the current API and
get support for LDAPS (requires a bit of an awkward URI construction).
Based on the URI's scheme we also set an option to enforce a certificate
check.  The new NEWCTX option creates a connection-specific TLS context.
Without that we get a global default context once bind is called that is
not freed until the daemon exits (it leaks in LD and also seems unsafe
in regards to multiple threads fetching CRLs via LDAP).

Fixes: 552cc11b1f ("merged the modularization branch (credentials) back to trunk")
Fixes: 8c06e9c0ed ("added #define LDAP_DEPRECATED in order to use old ldap_init() function")
2026-07-24 08:47:37 +02:00
Andreas Steffen 5973ff8e41 Version bump to 6.0.7 2026-06-07 19:54:14 +02:00
Tobias Brunner 172c2a39d2 configure: Fix check for option that indicates if plugins are packaged separately
The option was renamed with 7f9f9bd375 ("Fixed some typos, courtesy of
codespell"), the check was not.

Fixes: dd7b0283ef ("plugin-loader: Add option to change log message if plugin is not found")
2026-05-28 12:34:12 +02:00
Andreas Steffen 4d709df8b2 Version bump to 6.0.6 2026-04-22 07:55:01 +02:00
Tobias Brunner 444a1dc0e3 fuzz: Create fuzzers with default and custom crypto plugins
The pa_tnc fuzzer does not rely on any plugins and the pb_tnc fuzzer is
a bit special in that it does use code from the tnccs-20 plugin, but that
doesn't actually have to be loaded as such. The fuzzer directly calls
statically linked code from the plugin.
2026-04-08 15:56:42 +02:00
Andreas Steffen 62f5d17c12 Version bump to 6.0.5 2026-03-23 13:41:52 +01:00
Tobias Brunner b23387a3d6 conf: Install charon-specific snippets also when charon itself is not built
To make the default strongswan.conf, with `load_modular` enabled, work
if charon itself is not built, we enable generating the charon-specific
snippets also for the two other daemons that fall back on reading
options from the `charon` section.
2026-03-17 08:32:34 +01:00
Tobias Brunner 0d10fa6dda conf: Generate and install config snippets also for charon-cmd and charon-nm
This allows easier customization for distributions (e.g. disable some
plugins by default).
2026-03-17 08:08:38 +01:00
Andreas Steffen 8fd2c3a3bc Version bump to 6.0.5dr1 2026-03-12 18:37:36 +01:00
Tobias Brunner 7f9f9bd375 Fixed some typos, courtesy of codespell 2026-03-02 16:30:12 +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 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
Andreas Steffen d1c259f44b Version bump to 6.0.4 2025-12-12 15:32:29 +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
Andreas Steffen 909f52875e Version bump to 6.0.4rc1 2025-12-08 08:22:18 +01:00
Andreas Steffen 472dcd8bb5 Version bump to 6.0.3 2025-10-27 14:02:59 +01:00
Andreas Steffen 4cf88da4d7 Version bump 6.0.3rc1 2025-10-24 15:21:52 +02:00
Andreas Steffen 2b13873c0f Version bump to 6.0.3dr1 2025-09-22 18:57:54 +02:00
Andreas Steffen 23eb1e0945 Version bump to 6.0.2 2025-07-13 09:56:49 +02:00
Andreas Steffen bd65a21ce0 Version bump to 6.0.2rc1 2025-07-07 18:25:37 +02:00
Andreas Steffen 1f42640c43 Version bump to 6.0.2dr3 2025-07-03 11:43:53 +02:00
Andreas Steffen faf7ad2331 Version bump to 6.0.2dr2 2025-06-05 13:43:21 +02:00
Andreas Steffen 2fa8f4a90f Version bump to 6.0.2dr1 2025-06-04 19:58:23 +02:00
Mike Gorse 6ddabf52d5 soup: Port to libsoup 3 2025-06-04 19:08:07 +02:00
Tobias Brunner a7a3c4a22a conf: Document global IP-TFS settings 2025-05-28 16:37:46 +02:00
Tobias Brunner 7de05b918c identification: Add support for POSIX regular expressions
When cross-compiling for Windows on Ubuntu, we don't have POSIX regular
expressions available (there does not seem to be any alternative libraries
either), but since the tests are not executed that's OK.  On AppVeyor,
MSYS2 has libgnurx installed, which works fine but requires explicit
linking with `-lregex`.

This is loosely based on a patch by Thomas Egerer.
2025-05-28 09:58:17 +02:00
Tobias Brunner 94cc07cab4 uci: Remove obsolete and broken plugin
The plugin was apparently broken for years because it uses functions that
don't exist anymore.  It was quite limited anyway, so it was never really
used in OpenWrt to begin with (instead they generate configs in a custom
init script).
2025-05-19 17:17:45 +02:00
Tobias Brunner e8e5e2d441 configure: Simplify inclusion of M4 macros 2025-05-13 18:45:45 +02:00
Tobias Brunner 7ec0101250 Include lib-prefix.m4 directly and remove gettext dependency
A recent gettext release (0.25 via Homebrew) installs the M4 macros in a
different location (<prefix>/share/gettext/m4 instead of
<prefix>/share/aclocal). According to the commit messages to avoid "bad
interactions between autoreconf and autopoint".  Since we only depend
on gettext for that macro and this move makes it complicated, we can also
just integrate the macro from gnulib directly (which gettext 0.18+ relies
on anyway).
2025-05-13 17:15:23 +02:00
Tobias Brunner 6cbd93838b Add configure option to disable testing key exchange methods
If this is used, the functionality to set a private key/value/seed for
key exchange methods is removed (including from the interface to avoid
accidentally forgetting to wrap implementations and uses of set_seed()).

The set_seed() method is assigned outside the INIT() macro to avoid
potentially undefined behavior (preprocessing directives in macro
arguments).

The test done by the crypto tester is a simple functionality test.
2025-04-10 08:31:09 +02:00
Andreas Steffen 1e8cca4004 Version bump to 6.0.1 2025-03-10 19:19:37 +01:00