strongswan.git
16 months agokernel-netlink: Support extended table IDs for custom routes
Tobias Brunner [Tue, 24 Sep 2019 10:59:00 +0000 (12:59 +0200)]
kernel-netlink: Support extended table IDs for custom routes

This adds support for installing routes in tables with IDs > 255.

16 months agovici: List additional information for deleted CHILD_SAs
Tobias Brunner [Thu, 10 Oct 2019 13:33:45 +0000 (15:33 +0200)]
vici: List additional information for deleted CHILD_SAs

If a CHILD_SA is terminated, the updown event is triggered after the
CHILD_SA is set to state CHILD_DELETED, so no usage stats or detail
information like SPIs were reported.  However, when an IKEv2 SA is
terminated, the updown event for its children is triggered without
changing the state first, that is, they usually remain in state
INSTALLED and detailed data was reported in the event.  IKEv1
CHILD_SAs are always terminated individually, i.e. with state
change and no extra data so far.

With this change usage stats are also returned for individually deleted
CHILD_SAs as long as the SA has not yet expired.

Fixes #3198.

16 months agokernel-pfkey: Clear receive buffer before sending request
Tobias Brunner [Fri, 25 Oct 2019 09:07:11 +0000 (11:07 +0200)]
kernel-pfkey: Clear receive buffer before sending request

Many of the messages sent by the kernel, including confirmations to our
requests, are sent as broadcasts to all PF_KEY sockets.  So if an
external tool is used to manage SAs/policies (e.g. unrelated to IPsec)
the receive buffer might be filled, resulting in errors like these:

  error sending to PF_KEY socket: No buffer space available

To avoid this, just clear the buffer before sending any message.

Fixes #3225.

16 months agoMerge branch 'proposal-flags'
Tobias Brunner [Thu, 24 Oct 2019 15:47:45 +0000 (17:47 +0200)]
Merge branch 'proposal-flags'

This uses flags for proposal selection and cloning that control
whether DH groups and algorithms from a private range are skipped, and
for selection whether configured or supplied proposals/algorithms are
preferred.

16 months agoproposal: Remove unused strip_dh() method
Tobias Brunner [Thu, 5 Sep 2019 16:02:47 +0000 (18:02 +0200)]
proposal: Remove unused strip_dh() method

16 months agoproposal: Add selection flags to clone() method
Tobias Brunner [Thu, 5 Sep 2019 15:29:00 +0000 (17:29 +0200)]
proposal: Add selection flags to clone() method

This avoids having to call strip_dh() in child_cfg_t::get_proposals().
It also inverts the ALLOW_PRIVATE flag (i.e. makes it SKIP_PRIVATE) so
nothing has to be supplied to clone complete proposals.

16 months agoquick-mode: Promote selected DH group instead of stripping all others
Tobias Brunner [Thu, 5 Sep 2019 15:23:57 +0000 (17:23 +0200)]
quick-mode: Promote selected DH group instead of stripping all others

Since only the first DH group is encoded for IKEv1 this should have the
same effect as removing all other groups.

16 months agoproposal: Extract proposal selection code in ike/child_cfg_t
Tobias Brunner [Wed, 4 Sep 2019 14:25:18 +0000 (16:25 +0200)]
proposal: Extract proposal selection code in ike/child_cfg_t

Also invert the PREFER_CONFIGURED flag (i.e. make it PREFER_SUPPLIED)
so the default, without flags, is what we preferred so far.

16 months agoproposal: Handle skipping DH groups directly in select() and matches()
Tobias Brunner [Wed, 4 Sep 2019 09:25:12 +0000 (11:25 +0200)]
proposal: Handle skipping DH groups directly in select() and matches()

Also renames the flag.

16 months agoproposal: Use flags to select/match proposals
Thomas Egerer [Tue, 3 Sep 2019 11:24:08 +0000 (13:24 +0200)]
proposal: Use flags to select/match proposals

During proposal selection with ike/child_cfgs a couple of boolean
variables can be set (e.g. private, prefer_self, strip_dh). To simplify
the addition of new parameters, these functions now use a set of flags
instead of indiviual boolean values.

Signed-off-by: Thomas Egerer <thomas.egerer@secunet.com>
16 months agotravis: Bump wolfSSL to 4.2.0
Tobias Brunner [Wed, 23 Oct 2019 15:50:20 +0000 (17:50 +0200)]
travis: Bump wolfSSL to 4.2.0

16 months agoMerge branch 'ipv6-addrs-mobike'
Tobias Brunner [Tue, 22 Oct 2019 12:15:27 +0000 (14:15 +0200)]
Merge branch 'ipv6-addrs-mobike'

Address enumeration on Linux now ignores deprecated addresses and
whether temporary or permanent IPv6 addresses are included now depends
on the charon.prefer_temporary_addrs setting.

Closes #3192.

16 months agokernel-netlink: Enumerate temporary IPv6 addresses according to config
Tobias Brunner [Fri, 4 Oct 2019 13:34:04 +0000 (15:34 +0200)]
kernel-netlink: Enumerate temporary IPv6 addresses according to config

This way we announce only permanent addresses via MOBIKE by default, and
temporary ones if the option is enabled.

16 months agokernel-netlink: Don't enumerate deprecated IPv6 addresses
Tobias Brunner [Fri, 4 Oct 2019 08:39:26 +0000 (10:39 +0200)]
kernel-netlink: Don't enumerate deprecated IPv6 addresses

16 months agoutils: Handle NULL consistently if memwipe() is implemented via explicit_bzero()
Tobias Brunner [Thu, 17 Oct 2019 11:09:54 +0000 (13:09 +0200)]
utils: Handle NULL consistently if memwipe() is implemented via explicit_bzero()

Our own implementation ignores NULL values, however, explicit_bzero()
can't handle that, as indicated by the `__nonnull ((1))` attribute in the
function's signature in string.h, and causes a segmentation fault.  This
was noticed in one of the unit tests for NewHope.  Since we usually use
memwipe() via chunk_clear(), which already ignores NULL pointers, this
is not that much of an issue in practice.

Fixes: 149d1bbb055a ("memory: Use explicit_bzero() as memwipe() if available")

16 months agotravis: Switch to the Ubuntu 18.04 (bionic) image for tests
Tobias Brunner [Thu, 17 Oct 2019 06:31:51 +0000 (08:31 +0200)]
travis: Switch to the Ubuntu 18.04 (bionic) image for tests

Do two full build tests on 16.04 (xenial) and the two for OpenSSL 1.0
also run there.  Since 18.04 ships OpenSSL 1.1.1, which conflicts with
our custom built version, we skip that until OpenSSL 3.0 is released.
A workaround is required for an issue with sonarqube on bionic.

16 months agoprf-plus: Fail after counter has wrapped around
Tobias Brunner [Fri, 18 Oct 2019 14:53:35 +0000 (16:53 +0200)]
prf-plus: Fail after counter has wrapped around

The behavior is undefined if this happens (RFC 7296, section 2.13).
Instead of switching to the non-counter mode, or letting the counter
wrap, this makes it clear that the usage was not as intended.

16 months agoprf-plus: Fix a potential memory leak if get_bytes() fails
Tobias Brunner [Fri, 18 Oct 2019 13:11:26 +0000 (15:11 +0200)]
prf-plus: Fix a potential memory leak if get_bytes() fails

16 months agodrbg-ctr: Remove unused variable
Tobias Brunner [Mon, 21 Oct 2019 08:32:42 +0000 (10:32 +0200)]
drbg-ctr: Remove unused variable

16 months agowolfssl: Fix for issue with blinding not defined
David Garske [Fri, 18 Oct 2019 23:09:36 +0000 (16:09 -0700)]
wolfssl: Fix for issue with blinding not defined

Closes strongswan/strongswan#156.

16 months agoVersion bump to 5.8.2dr1 5.8.2dr1
Andreas Steffen [Fri, 18 Oct 2019 14:26:41 +0000 (16:26 +0200)]
Version bump to 5.8.2dr1

16 months agotesting: Added drbg plugin where required
Andreas Steffen [Fri, 18 Oct 2019 12:38:43 +0000 (14:38 +0200)]
testing: Added drbg plugin where required

16 months agogmp: Use NIST DRBG for RSA key pair generation
Andreas Steffen [Wed, 16 Oct 2019 09:57:22 +0000 (11:57 +0200)]
gmp: Use NIST DRBG for RSA key pair generation

16 months agostroke: List drbgs in list_algs
Andreas Steffen [Tue, 15 Oct 2019 21:04:56 +0000 (23:04 +0200)]
stroke: List drbgs in list_algs

16 months agovici: List drbgs in get_algorithms
Andreas Steffen [Tue, 15 Oct 2019 20:30:40 +0000 (22:30 +0200)]
vici: List drbgs in get_algorithms

16 months agontru: Replaced ntru_drbg by drbg
Andreas Steffen [Thu, 10 Oct 2019 10:50:08 +0000 (12:50 +0200)]
ntru: Replaced ntru_drbg by drbg

16 months agodrbg: Implemented NIST SP-800-90A DRBG
Andreas Steffen [Wed, 9 Oct 2019 22:00:05 +0000 (00:00 +0200)]
drbg: Implemented NIST SP-800-90A DRBG

16 months agoMerge branch 'android-updates'
Tobias Brunner [Tue, 15 Oct 2019 15:26:16 +0000 (17:26 +0200)]
Merge branch 'android-updates'

Makes the local identity configurable and includes a fix for Android 10,
plus a break-before-make reauth issue (not Android specific) and some
deprecation workarounds.

16 months agoandroid: New release after making local identity configurable
Tobias Brunner [Tue, 8 Oct 2019 13:34:00 +0000 (15:34 +0200)]
android: New release after making local identity configurable

This also includes a fix for Android 10 and some older fixes for
API level 28 compatibility and a crash on Huawei devices.  The API
used to detect network changes is also replaced on newer Android
versions and an issue with DELETES received during break-before-make
reauthentication is also fixed.

16 months agoike-delete: Continue break-before-make reauth if server concurrently deletes SA
Tobias Brunner [Mon, 14 Oct 2019 15:24:15 +0000 (17:24 +0200)]
ike-delete: Continue break-before-make reauth if server concurrently deletes SA

There seem to be servers around that, upon receiving a delete from the
client, instead of responding with an empty INFORMATIONAL, send a delete
themselves.

16 months agoandroid: Replace deprecated CONNECTIVITY_ACTION on newer Android versions
Tobias Brunner [Mon, 14 Oct 2019 13:03:10 +0000 (15:03 +0200)]
android: Replace deprecated CONNECTIVITY_ACTION on newer Android versions

It was deprecated in API level 28, registerNetworkCallback is available
since API level 21, but ConnectivityManager got some updates with 24
(e.g. default network handling) so we start using it then.

16 months agoandroid: Don't use specific key types to select user certificates
Tobias Brunner [Tue, 8 Oct 2019 13:51:18 +0000 (15:51 +0200)]
android: Don't use specific key types to select user certificates

Android 10 will honor the preselection and could, thus, hide some
installed certificates if we only pass "RSA".  The dialog will also only
be shown if there are actually certificates installed (i.e. users will
have to do that manually outside of the app or via profile import).

Fixes #3196.

16 months agoandroid: Import local identity for all authentication types
Tobias Brunner [Tue, 8 Oct 2019 13:13:55 +0000 (15:13 +0200)]
android: Import local identity for all authentication types

16 months agoandroid: Allow configuration of client identity for all authentication types
Tobias Brunner [Tue, 8 Oct 2019 13:02:30 +0000 (15:02 +0200)]
android: Allow configuration of client identity for all authentication types

This replaces the drop-down box to select certificate identities with a
text field (in the advanced settings) with auto-completion for SANs
contained in the certificate.

The field is always shown and allows using an IKE identity different from
the username for EAP authentication (e.g. to configure a more complete
identity to select a specific config on the server).

Fixes #3134.

16 months agoandroid: Rename adapter for gateway address auto-completion
Tobias Brunner [Tue, 8 Oct 2019 12:51:31 +0000 (14:51 +0200)]
android: Rename adapter for gateway address auto-completion

16 months agoandroid: No auto-completion required for DNS server text box
Tobias Brunner [Tue, 8 Oct 2019 12:49:16 +0000 (14:49 +0200)]
android: No auto-completion required for DNS server text box

16 months agoandroid: Add helper to read strings from text boxes
Tobias Brunner [Tue, 8 Oct 2019 12:46:38 +0000 (14:46 +0200)]
android: Add helper to read strings from text boxes

16 months agoandroid: Fix deprecation warning related to FragmentPagerAdapter
Tobias Brunner [Tue, 8 Oct 2019 13:21:00 +0000 (15:21 +0200)]
android: Fix deprecation warning related to FragmentPagerAdapter

16 months agoandroid: Update AndroidX libraries
Tobias Brunner [Mon, 7 Oct 2019 15:00:11 +0000 (17:00 +0200)]
android: Update AndroidX libraries

16 months agoandroid: Update Gradle plugin
Tobias Brunner [Mon, 7 Oct 2019 14:42:00 +0000 (16:42 +0200)]
android: Update Gradle plugin

16 months agokernel-pfkey: Pass ESN flag to kernel if ESN is enabled
Patryk Duda [Tue, 17 Sep 2019 08:12:49 +0000 (08:12 +0000)]
kernel-pfkey: Pass ESN flag to kernel if ESN is enabled

This patch adds passing the ESN flag to the kernel if ESN was negotiated
and the appropriate flag is present in the kernel headers, which will
be the case in future FreeBSD releases.

Signed-off-by: Patryk Duda <pdk@semihalf.com>
Closes strongswan/strongswan#155.

16 months agoUse Botan 2.12.1 for tests
Tobias Brunner [Mon, 14 Oct 2019 09:43:58 +0000 (11:43 +0200)]
Use Botan 2.12.1 for tests

16 months agoUse Botan 2.12.0 for tests
Tobias Brunner [Mon, 7 Oct 2019 12:31:40 +0000 (14:31 +0200)]
Use Botan 2.12.0 for tests

16 months agovici: Use unique names for CHILD_SAs in the child-updown event too
Felix Kaiser [Fri, 4 Oct 2019 06:18:30 +0000 (23:18 -0700)]
vici: Use unique names for CHILD_SAs in the child-updown event too

The unique names were introduced for the list-sas command in commit
04c0219e55d9338b6492548c073189bfd3d5431b.  However, the child-updown
event wasn't updated to match.  Even though the documentation suggests
that the section name of the CHILD_SAs are the same in both messages.

The original name is already being returned in the "name" attribute,
so it'll still be available.

Example:

    >>> import vici, json
    >>> s = vici.Session()

    # First, for comparison, the list-sas command:
    >>> print(json.dumps(list(s.list_sas()), sort_keys=True, indent=4, separators=(',', ': ')))
    [
        {
            "vti0": {
                "child-sas": {
                    "vti0-1": {
                        ...

    # A child-updown event before the change:
    >>> for x in s.listen(["child-updown"]): print(json.dumps(x, sort_keys=True, indent=4, separators=(',', ': ')))
    [
        "child-updown",
        {
            "vti0": {
                "child-sas": {
                    "vti0": {   # <-- wrong: inconsistent with list-sas
                        ...

    # A child-updown event after the change:
    >>> s = vici.Session()
    >>> for x in s.listen(["child-updown"]): print(json.dumps(x, sort_keys=True, indent=4, separators=(',', ': ')))
    [
        "child-updown",
        {
            "vti0": {
                "child-sas": {
                    "vti0-1": {  # <-- fixed

Closes strongswan/strongswan#153.

17 months agofuzz: Add fuzzer for identification_t
Tobias Brunner [Thu, 26 Jul 2018 08:01:46 +0000 (10:01 +0200)]
fuzz: Add fuzzer for identification_t

17 months agotravis: Bump tpm2-tss to 2.3.1
Tobias Brunner [Thu, 26 Sep 2019 09:50:46 +0000 (11:50 +0200)]
travis: Bump tpm2-tss to 2.3.1

17 months agowolfssl: Fixes for building with OpenSSL compatibility layer
David Garske [Tue, 24 Sep 2019 18:38:36 +0000 (11:38 -0700)]
wolfssl: Fixes for building with OpenSSL compatibility layer

Resolves conflicts with building against wolfSSL when
`--enable-opensslextra` is set, namely the `WOLFSSL_HMAC_H_`,
`RNG` and `ASN1_*` name conflicts.

Closes strongswan/strongswan#151.

17 months agoopenssl: Don't manually seed DRBG with OpenSSL 1.1.1
Tobias Brunner [Thu, 12 Sep 2019 14:15:46 +0000 (16:15 +0200)]
openssl: Don't manually seed DRBG with OpenSSL 1.1.1

According to the documentation, it's generally not necessary to manually
seed OpenSSL's DRBG (and it actually can cause the daemon to lock up
during start up on systems with low entropy if OpenSSL is already trying
to seed it itself and holds the lock).  While that might already have been
the case with earlier versions, it's not explicitly stated in their
documentation.  So we keep the code for these versions.

17 months agotravis: Bump OpenSSL to 1.1.1d
Tobias Brunner [Tue, 10 Sep 2019 14:33:18 +0000 (16:33 +0200)]
travis: Bump OpenSSL to 1.1.1d

17 months agodaemon: Correctly re-register custom loggers in set_level()
Tobias Brunner [Fri, 20 Sep 2019 12:13:56 +0000 (14:13 +0200)]
daemon: Correctly re-register custom loggers in set_level()

Fixes: 2080c7e1e232 ("charon: Add custom logger to daemon")
Fixes #3182.

17 months agocharon-nm: Move D-Bus conf file to $(datadir)/dbus-1/system.d
worldofpeace [Mon, 16 Sep 2019 16:11:21 +0000 (12:11 -0400)]
charon-nm: Move D-Bus conf file to $(datadir)/dbus-1/system.d

Since D-Bus 1.9.18 configuration files installed by third-party should
go in share/dbus-1/system.d. The old location is for sysadmin overrides.

Closes strongswan/strongswan#150.

17 months agoconf: Fix typo in documentation of charon.rdn_matching
Tobias Brunner [Tue, 3 Sep 2019 08:26:29 +0000 (10:26 +0200)]
conf: Fix typo in documentation of charon.rdn_matching

Fixes #3165.

17 months agoVersion bump to 5.8.1 5.8.1
Andreas Steffen [Mon, 2 Sep 2019 12:39:16 +0000 (14:39 +0200)]
Version bump to 5.8.1

18 months agoVersion bump to 5.8.1rc2 5.8.1rc2
Andreas Steffen [Thu, 29 Aug 2019 09:15:18 +0000 (11:15 +0200)]
Version bump to 5.8.1rc2

18 months agoVersion bump to 5.8.1rc1
Andreas Steffen [Wed, 28 Aug 2019 14:30:24 +0000 (16:30 +0200)]
Version bump to 5.8.1rc1

18 months agoFixed some typos, courtesy of codespell
Tobias Brunner [Wed, 28 Aug 2019 12:03:41 +0000 (14:03 +0200)]
Fixed some typos, courtesy of codespell

18 months agoNEWS: Added some news for 5.8.1
Tobias Brunner [Wed, 28 Aug 2019 10:17:44 +0000 (12:17 +0200)]
NEWS: Added some news for 5.8.1

18 months agoikev2: Check the length of received COOKIE notifies
Tobias Brunner [Tue, 27 Aug 2019 16:32:32 +0000 (18:32 +0200)]
ikev2: Check the length of received COOKIE notifies

As specified by RFC 7296, section 2.6, the data associated with COOKIE
notifications MUST be between 1 and 64 octets in length (inclusive).

Fixes #3160.

18 months agolibipsec: Fix compiler warning with GCC 9
Tobias Brunner [Wed, 28 Aug 2019 07:53:19 +0000 (09:53 +0200)]
libipsec: Fix compiler warning with GCC 9

The compiler complains that "taking address of packed member ... of
class or structure 'ip6_hdr' may result in an unaligned pointer value".
We don't care if the address is aligned as we explicitly use untoh16()
to convert the read value.

18 months agocirrus: Run automated tests on FreeBSD via Cirrus CI
Tobias Brunner [Tue, 27 Aug 2019 16:22:33 +0000 (18:22 +0200)]
cirrus: Run automated tests on FreeBSD via Cirrus CI

18 months agoFix issue with $< automatic variable on FreeBSD
Tobias Brunner [Fri, 23 Aug 2019 07:40:59 +0000 (09:40 +0200)]
Fix issue with $< automatic variable on FreeBSD

BSD make only evaluates $< for implicit rules, so building from the
repository won't work unless GNU make is installed and used, or we
replace affected uses like this.

18 months agoMerge branch 'android-updates'
Tobias Brunner [Mon, 26 Aug 2019 09:28:43 +0000 (11:28 +0200)]
Merge branch 'android-updates'

Some fixes for Android 9 (28) and other issues.  Also migrated to
AndroidX.

Closes strongswan/strongswan#148.

18 months agoandroid: Avoid crash related to TileService on Huawei devices
Tobias Brunner [Fri, 16 Aug 2019 15:04:28 +0000 (17:04 +0200)]
android: Avoid crash related to TileService on Huawei devices

No idea when exactly this happens but on many Huawei devices (and
only on them) it seems that onStartListening is sometimes called after
onDestroy i.e. when the database was already closed.  This caused an
InvalidStateException in getProfile via updateTile when retrieving the
current profile.  It's possible that it happens during shutdown (there
have been similar reports related to TileService implementations) so
users might not even notice, but it pollutes the Play Console, so this
workaround now makes sure the database is open when updateTile is called.

18 months agoandroid: Fix null pointer dereference in TextInputLayoutHelper
Tobias Brunner [Tue, 13 Aug 2019 13:26:22 +0000 (15:26 +0200)]
android: Fix null pointer dereference in TextInputLayoutHelper

The AndroidX/Material version of TextInputLayout actually supports a
helper text, but it is always shown, so we continue to use our version.

18 months agoandroid: Replace deprecated Html.fromHtml with version from AndroidX
Tobias Brunner [Tue, 13 Aug 2019 13:37:05 +0000 (15:37 +0200)]
android: Replace deprecated Html.fromHtml with version from AndroidX

18 months agoandroid: Migrate from support libraries to AndroidX
Tobias Brunner [Tue, 13 Aug 2019 13:01:31 +0000 (15:01 +0200)]
android: Migrate from support libraries to AndroidX

The support libraries will not be developed further.

18 months agoandroid: Request FOREGROUND_SERVICE permission
Tobias Brunner [Tue, 13 Aug 2019 12:42:39 +0000 (14:42 +0200)]
android: Request FOREGROUND_SERVICE permission

This is required since API 28 to call Service.startForeground.

18 months agoandroid: Switch to Loaders from the support library
Tobias Brunner [Tue, 13 Aug 2019 12:28:31 +0000 (14:28 +0200)]
android: Switch to Loaders from the support library

They are officially deprecated as of API 28 (recommended replacement is
a combination of ViewModels and LiveData, maybe something to look into
later).

18 months agoandroid: Set compile-/targetSdkVersion to 28
Tobias Brunner [Tue, 13 Aug 2019 12:16:11 +0000 (14:16 +0200)]
android: Set compile-/targetSdkVersion to 28

This is mandatory for new apps since August 1, 2019 and will be for existing
apps in November 1, 2019.

18 months agoandroid: Update Gradle plugin
Tobias Brunner [Tue, 13 Aug 2019 12:07:28 +0000 (14:07 +0200)]
android: Update Gradle plugin

18 months agoidentification: Optionally match RDNs in any order and accept missing RDNs
Tobias Brunner [Thu, 9 May 2019 11:09:40 +0000 (13:09 +0200)]
identification: Optionally match RDNs in any order and accept missing RDNs

18 months agoRun gperf with --output-file instead of output redirection
Martin Willi [Mon, 15 Jul 2019 05:43:06 +0000 (07:43 +0200)]
Run gperf with --output-file instead of output redirection

When missing gperf, the redirection generates an empty file, which must
be manually removed after gperf has been installed. This is difficult
to diagnose, as the produced build error is cryptic.

Use --output-file of gperf instead to avoid creating an empty file if
gperf is missing. This still requires the user to re-run ./configure
after installing gperf, though.

18 months agoupdown: Pass the local interface the traffic to the peer actually takes
Tobias Brunner [Thu, 20 Jun 2019 08:02:21 +0000 (10:02 +0200)]
updown: Pass the local interface the traffic to the peer actually takes

If the local IP is not on the interface the peer is reached through,
firewall rules will be installed with the wrong interface.

Fixes #3095.

18 months agoattributes: Add definition of some additional configuration attributes
Tobias Brunner [Wed, 12 Jul 2017 08:59:41 +0000 (10:59 +0200)]
attributes: Add definition of some additional configuration attributes

18 months agoasn1: Fix a compiler warning with GCC 9.1
Tobias Brunner [Thu, 22 Aug 2019 14:27:19 +0000 (16:27 +0200)]
asn1: Fix a compiler warning with GCC 9.1

Compiling with GCC 9.1, as e.g. happens on AppVeyor, results in the
following warning:

asn1/asn1.c: In function 'asn1_integer':
asn1/asn1.c:871:24: error: '<Ucb40>' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  871 |  len = content.len + ((*content.ptr & 0x80) ? 1 : 0);
      |                        ^~~~~~~~~~~~

Some experiments showed that the problem was the chunk_from_chars()
assignment.  This might be because the temporary chunk_t that was assigned
to the variable was defined in a sub-block, so it might actually be
undefined later when *content.ptr is read.

18 months agoload-tester: Add digitalSignature keyUsage flag to test certificate
Tobias Brunner [Mon, 12 Aug 2019 16:10:06 +0000 (18:10 +0200)]
load-tester: Add digitalSignature keyUsage flag to test certificate

This allows using the certificate, which is technically a CA cert, as
end-entity certificate again after the RFC4945-related changes added
with 5.6.3.

Fixes #3139.

18 months agoSome whitespace fixes
Tobias Brunner [Tue, 9 Jul 2019 15:03:23 +0000 (17:03 +0200)]
Some whitespace fixes

Didn't change some of the larger testing scripts that use an inconsistent
indentation style.

18 months agoAdd an .editorconfig file
Tobias Brunner [Fri, 6 Jul 2018 12:07:55 +0000 (14:07 +0200)]
Add an .editorconfig file

It's currently not possible to configure our indentation scheme for
continuation lines (i.e. use 1-3 spaces to align with the upper line).
There is an issue open regarding this, see [1].  So we can't run e.g.
eclint over our codebase to detect issues without getting a lot of
false positives.

The main trigger was that this sets the preferred tab width in GitHub's
code browser.

[1] https://github.com/editorconfig/editorconfig/issues/323

References #3111.

18 months agomemory: Use explicit_bzero() as memwipe() if available
Tobias Brunner [Thu, 18 Jul 2019 12:25:32 +0000 (14:25 +0200)]
memory: Use explicit_bzero() as memwipe() if available

18 months agotravis: Bump wolfSSL to 4.1.0 149/head
Tobias Brunner [Mon, 12 Aug 2019 12:25:56 +0000 (14:25 +0200)]
travis: Bump wolfSSL to 4.1.0

19 months agofuzz: Support build with -fsanitize=fuzzer instead of libFuzzer.a
Tobias Brunner [Wed, 17 Jul 2019 09:16:19 +0000 (11:16 +0200)]
fuzz: Support build with -fsanitize=fuzzer instead of libFuzzer.a

Recent clang versions (6.0+) include libFuzzer and OSS-Fuzz switched to
that mode a while ago.

20 months agoUse Botan 2.11.0 for tests
Tobias Brunner [Tue, 2 Jul 2019 07:53:53 +0000 (09:53 +0200)]
Use Botan 2.11.0 for tests

20 months agobotan: Replace deprecated FFI function calls
Tobias Brunner [Tue, 2 Jul 2019 08:47:54 +0000 (10:47 +0200)]
botan: Replace deprecated FFI function calls

Several "wrapper" functions have been marked deprecated with 2.11.0.

20 months agoVersion bump to 5.8.1dr1 5.8.1dr1
Andreas Steffen [Wed, 26 Jun 2019 15:32:33 +0000 (17:32 +0200)]
Version bump to 5.8.1dr1

20 months agolibtpmtss: Protect TPM 2.0 context by mutex
krinfels [Wed, 26 Jun 2019 13:32:29 +0000 (15:32 +0200)]
libtpmtss: Protect TPM 2.0 context by mutex

Each private key object created to access a key residing in a TPM 2.0
creates a context structure used for communication with the TSS.
When multiple IKE SAs are established at the same time and using the
same private key, it is possible to make concurrent calls to the
TSS with the same context which results in multiple threads writing
to the same place in memory causing undefined behaviour.

Fix this by protecting calls to the TSS with a mutex unique for
each TPM 2.0 context object.

20 months agoandroid: Fix remote identity fallback after changing IKE config creation
Tobias Brunner [Tue, 18 Jun 2019 08:22:57 +0000 (10:22 +0200)]
android: Fix remote identity fallback after changing IKE config creation

Fixes: 9486a2e5b0b5 ("ike-cfg: Pass arguments as struct")

20 months agoandroid: Fix typo when building IKE config
Tobias Brunner [Tue, 18 Jun 2019 08:21:07 +0000 (10:21 +0200)]
android: Fix typo when building IKE config

Fixes: 9486a2e5b0b5 ("ike-cfg: Pass arguments as struct")

21 months agotravis: Bump OpenSSL to 1.1.1c
Tobias Brunner [Tue, 28 May 2019 13:28:06 +0000 (15:28 +0200)]
travis: Bump OpenSSL to 1.1.1c

21 months agoAdd compile option to disable internal handling of fatal signals
Sheena Mira-ato [Thu, 21 Mar 2019 03:28:08 +0000 (16:28 +1300)]
Add compile option to disable internal handling of fatal signals

By default, charon and its derivatives internally handle the SIGSEGV,
SIGILL, and SIGBUS signals raised by threads (segv_handler).  Add a compile
option so that the signal handling can optionally be done externally.

Closes strongswan/strongswan#132.

21 months agoikev1: Do a rekey check before installing CHILD_SAs as responder
Tobias Brunner [Thu, 16 May 2019 08:19:15 +0000 (10:19 +0200)]
ikev1: Do a rekey check before installing CHILD_SAs as responder

If CHILD_SAs are created while waiting for the third QM message we'd not
notice the redundancy and updown events would be triggered unevenly.
This is consistent with the behavior on the initiator, which already does
this check right before installation. Moving the existing check is not
possible due to the narrow hook and moving the installation changes which
peer installs the SAs first and could have other side-effects (e.g. in
error or conflict cases).  Still, this might result in CHILD_SA state
discrepancies between the two peers.

Fixes #3060.

21 months agoAvoid enumerating certificates with non-matching key type
SophieK [Tue, 21 May 2019 01:28:21 +0000 (09:28 +0800)]
Avoid enumerating certificates with non-matching key type

If the key type was specified but the ID was NULL or matched a subject, it
was possible that a certificate was returned that didn't actually match
the requested key type.

Closes strongswan/strongswan#141.

21 months agoVersion bump to 5.8.0 5.8.0
Andreas Steffen [Mon, 20 May 2019 10:31:08 +0000 (12:31 +0200)]
Version bump to 5.8.0

21 months agoproposal: Add missing curve448/x448 keywords
Tobias Brunner [Fri, 17 May 2019 15:15:38 +0000 (17:15 +0200)]
proposal: Add missing curve448/x448 keywords

Fixes #3064.

21 months agonm: Version bump to 1.4.5
Tobias Brunner [Tue, 14 May 2019 08:38:12 +0000 (10:38 +0200)]
nm: Version bump to 1.4.5

21 months agoVersion bump to 5.8.0rc1 5.8.0rc1
Andreas Steffen [Fri, 10 May 2019 10:55:48 +0000 (12:55 +0200)]
Version bump to 5.8.0rc1

21 months agotesting: Use strongswan systemd service
Andreas Steffen [Fri, 10 May 2019 10:55:09 +0000 (12:55 +0200)]
testing: Use strongswan systemd service

21 months agotesting: Load PEM keys in ikev2/net2-net-rsa scenario
Andreas Steffen [Fri, 10 May 2019 10:54:28 +0000 (12:54 +0200)]
testing: Load PEM keys in ikev2/net2-net-rsa scenario

21 months agotesting: Copy keys and certs to swanctl/rw-newhope-bliss scenario
Andreas Steffen [Fri, 10 May 2019 10:53:33 +0000 (12:53 +0200)]
testing: Copy keys and certs to swanctl/rw-newhope-bliss scenario

21 months agokeymat_v1: Avoid memory leak during IKE key derivation in some error cases
SophieK [Thu, 9 May 2019 07:20:30 +0000 (15:20 +0800)]
keymat_v1: Avoid memory leak during IKE key derivation in some error cases

Closes strongswan/strongswan#138.

21 months agoMerge branch 'build-certs'
Tobias Brunner [Wed, 8 May 2019 12:57:03 +0000 (14:57 +0200)]
Merge branch 'build-certs'

Adds a script to generate the keys and certificates used for regression
tests dynamically.  They are built with the pki version installed in the
root image so it's not necessary to have an up-to-date version with all
required plugins installed on the host system.