Tobias Brunner [Tue, 26 Nov 2019 16:55:47 +0000 (17:55 +0100)]
farp: Only cache IPv4 traffic selectors
Since ARP is IPv4 only there is no point caching IPv6 traffic
selectors/CHILD_SAs.
Tobias Brunner [Fri, 6 Dec 2019 08:53:26 +0000 (09:53 +0100)]
Merge branch 'ocsp-nonce'
This makes sure the nonce sent in an OCSP request is contained in the
response (it also fixes parsing the nonce, which didn't matter so far
as it was never used)
Tobias Brunner [Fri, 22 Nov 2019 14:09:55 +0000 (15:09 +0100)]
revocation: Check that nonce in OCSP response matches
Tobias Brunner [Fri, 22 Nov 2019 15:36:20 +0000 (16:36 +0100)]
x509: Correctly parse nonce in OCSP response
Fixes:
d7dc677ee572 ("x509: Correctly encode nonce in OCSP request")
Tobias Brunner [Fri, 22 Nov 2019 14:04:01 +0000 (15:04 +0100)]
x509: Add getter for nonce in OCSP request/response implementations
Tobias Brunner [Fri, 22 Nov 2019 13:59:49 +0000 (14:59 +0100)]
credentials: Add getter for nonce in OCSP request and response interface
Andreas Steffen [Thu, 28 Nov 2019 20:29:26 +0000 (21:29 +0100)]
drbg: Don't generate more than 2^16 bytes
Tobias Brunner [Thu, 28 Nov 2019 16:16:36 +0000 (17:16 +0100)]
Merge branch 'aes-ecb'
Adds support for AES in ECB mode (where supported by the underlying
library/API) and uses it for the CTR-DRBG implementation.
Andreas Steffen [Thu, 21 Nov 2019 13:57:57 +0000 (14:57 +0100)]
drbg: Use AES_ECB encryption
Andreas Steffen [Sun, 24 Nov 2019 13:05:25 +0000 (14:05 +0100)]
gcrypt: Added AES_ECB support
Andreas Steffen [Fri, 22 Nov 2019 14:28:37 +0000 (15:28 +0100)]
af-alg: Added AES_ECB support
Andreas Steffen [Thu, 21 Nov 2019 20:35:07 +0000 (21:35 +0100)]
aes: Added AES_ECB support
Andreas Steffen [Thu, 21 Nov 2019 14:27:59 +0000 (15:27 +0100)]
openssl: Added AES_ECB support
Andreas Steffen [Thu, 21 Nov 2019 11:58:48 +0000 (12:58 +0100)]
aesni: Added AES_ECB support
Tobias Brunner [Thu, 28 Nov 2019 15:37:34 +0000 (16:37 +0100)]
vici: Update Python egg if strongSwan version changed
Mainly useful when using the build-strongswan script of the testing
environment.
Andreas Steffen [Fri, 8 Nov 2019 12:16:12 +0000 (13:16 +0100)]
drbg: The drbg instance owns the entropy rng
Andreas Steffen [Tue, 26 Nov 2019 21:36:55 +0000 (22:36 +0100)]
Version bump to 5.8.2dr2
Tobias Brunner [Tue, 26 Nov 2019 13:47:14 +0000 (14:47 +0100)]
Merge branch 'hash-url-multi-level'
Adds support to send intermediate CA certificates in hash-and-URL
encoding. For that it moves the generation of URLs from the config
backends to the ike-cert-post task.
Fixes #3234.
Tobias Brunner [Thu, 31 Oct 2019 14:18:17 +0000 (15:18 +0100)]
testing: Add scenario with hash-and-URL encoding for intermediate CA certificates
Tobias Brunner [Thu, 31 Oct 2019 08:51:07 +0000 (09:51 +0100)]
stroke: Remove obsolete certificate registration for hash-and-URL
Tobias Brunner [Thu, 31 Oct 2019 08:49:21 +0000 (09:49 +0100)]
vici: Remove obsolete certificate registration for hash-and-URL
Tobias Brunner [Thu, 31 Oct 2019 08:51:42 +0000 (09:51 +0100)]
ike-cert-post: Encode intermediate CA certificates as hash-and-URL if possible
Tobias Brunner [Thu, 31 Oct 2019 08:27:49 +0000 (09:27 +0100)]
ike-cert-post: Generate URL for hash-and-URL here
This avoids having to register certificates with authority/ca backends
beforehand, which is tricky for intermediate CA certificates loaded
themselves via authority/ca sections. On the other hand, the form of
these URLs can't be determined by config backends anymore (not an issue
for the two current implementations, no idea if custom implementations
ever made use of that possibility). If that became necessary, we could
perhaps pass the certificate to the CDP enumerator or add a new method
to the credential_set_t interface.
Thomas Egerer [Wed, 9 Oct 2019 15:16:29 +0000 (17:16 +0200)]
kernel-netlink: Check for offloading support in constructor
This avoids races that could potentially occur when doing the check during
SA installation.
Signed-off-by: Thomas Egerer <thomas.egerer@secunet.com>
Tobias Brunner [Thu, 21 Nov 2019 15:57:25 +0000 (16:57 +0100)]
testing: Import sys in Python updown script
Tobias Brunner [Tue, 19 Nov 2019 13:43:39 +0000 (14:43 +0100)]
android: New version after fixing fetching via HTTP on Android 9
Tobias Brunner [Tue, 19 Nov 2019 13:41:34 +0000 (14:41 +0100)]
android: Add networkSecurityConfig to fetch CLRs/OCSP via HTTP
Android 9 restricts this to only HTTPS by default.
Fixes #3273.
Tobias Brunner [Tue, 19 Nov 2019 13:24:08 +0000 (14:24 +0100)]
android: Update Gradle plugin
Tobias Brunner [Tue, 19 Nov 2019 13:24:17 +0000 (14:24 +0100)]
Fix Android.mk for libstrongswan after adding DRBGs
Tobias Brunner [Thu, 14 Nov 2019 15:10:17 +0000 (16:10 +0100)]
testing: Accept LANG and LC_* env variables via SSH on guests
The client config already includes SendEnv for them. Without that these
variables currently default to POSIX.
Tobias Brunner [Tue, 12 Nov 2019 09:59:38 +0000 (10:59 +0100)]
swanctl: Document wildcard matching for remote identities
Tobias Brunner [Tue, 12 Nov 2019 09:57:45 +0000 (10:57 +0100)]
conf: Replace deprecated OptionParser with ArgumentParser
zhangkaiheb@126.com [Wed, 6 Nov 2019 03:04:00 +0000 (03:04 +0000)]
testing: Remove unused connection definition in ikev2/force-udp-encaps
zhangkaiheb@126.com [Wed, 6 Nov 2019 01:45:09 +0000 (01:45 +0000)]
testing: Fix SHA description in ikev*/esp-alg-null scenarios
Tobias Brunner [Mon, 4 Nov 2019 14:19:16 +0000 (15:19 +0100)]
proposal: Fix typos and clarify things in comments
Kenyon Ralph [Mon, 28 Oct 2019 18:48:36 +0000 (11:48 -0700)]
man: Correct typo in description of closeaction
Closes strongswan/strongswan#158.
Tobias Brunner [Mon, 28 Oct 2019 17:46:11 +0000 (18:46 +0100)]
Merge branch 'enum-strings'
Adds a compile check the number of enum strings and updates several of
these lists, in particular, the one in the pfkey-kernel plugin, where
strings for several new extensions on FreeBSD were missing.
Fixes #3210.
Tobias Brunner [Wed, 16 Oct 2019 17:46:09 +0000 (19:46 +0200)]
kernel-pfkey: Add additional strings for extensions on different platforms
Don't define structs for macOS as we don't need them (that's true for
most of the others too, though) and at least one is defined inside an extra
ifdef.
Tobias Brunner [Tue, 22 Oct 2019 09:04:30 +0000 (11:04 +0200)]
Add missing strings to several enum string definitions
Tobias Brunner [Wed, 16 Oct 2019 16:48:22 +0000 (18:48 +0200)]
enum: Add compile-time check for missing strings
If strings are missing (e.g. because the last value of a range changed
unknowingly or adding a string was simply forgotten) compilation will
now fail.
This could be problematic if the upper limit is out of our control (e.g.
from a system header like pfkeyv2.h), in which case patches might be
required on certain platforms (enforcing at least, and not exactly, the
required number of strings might also be an option to compile against
older versions of such a header - for internal enums it's obviously
better to enforce an exact match, though).
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.
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.
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.
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.
Tobias Brunner [Thu, 5 Sep 2019 16:02:47 +0000 (18:02 +0200)]
proposal: Remove unused strip_dh() 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.
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.
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.
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.
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>
Tobias Brunner [Wed, 23 Oct 2019 15:50:20 +0000 (17:50 +0200)]
travis: Bump wolfSSL to 4.2.0
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.
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.
Tobias Brunner [Fri, 4 Oct 2019 08:39:26 +0000 (10:39 +0200)]
kernel-netlink: Don't enumerate deprecated IPv6 addresses
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")
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.
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.
Tobias Brunner [Fri, 18 Oct 2019 13:11:26 +0000 (15:11 +0200)]
prf-plus: Fix a potential memory leak if get_bytes() fails
Tobias Brunner [Mon, 21 Oct 2019 08:32:42 +0000 (10:32 +0200)]
drbg-ctr: Remove unused variable
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.
Andreas Steffen [Fri, 18 Oct 2019 14:26:41 +0000 (16:26 +0200)]
Version bump to 5.8.2dr1
Andreas Steffen [Fri, 18 Oct 2019 12:38:43 +0000 (14:38 +0200)]
testing: Added drbg plugin where required
Andreas Steffen [Wed, 16 Oct 2019 09:57:22 +0000 (11:57 +0200)]
gmp: Use NIST DRBG for RSA key pair generation
Andreas Steffen [Tue, 15 Oct 2019 21:04:56 +0000 (23:04 +0200)]
stroke: List drbgs in list_algs
Andreas Steffen [Tue, 15 Oct 2019 20:30:40 +0000 (22:30 +0200)]
vici: List drbgs in get_algorithms
Andreas Steffen [Thu, 10 Oct 2019 10:50:08 +0000 (12:50 +0200)]
ntru: Replaced ntru_drbg by drbg
Andreas Steffen [Wed, 9 Oct 2019 22:00:05 +0000 (00:00 +0200)]
drbg: Implemented NIST SP-800-90A DRBG
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.
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.
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.
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.
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.
Tobias Brunner [Tue, 8 Oct 2019 13:13:55 +0000 (15:13 +0200)]
android: Import local 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.
Tobias Brunner [Tue, 8 Oct 2019 12:51:31 +0000 (14:51 +0200)]
android: Rename adapter for gateway address auto-completion
Tobias Brunner [Tue, 8 Oct 2019 12:49:16 +0000 (14:49 +0200)]
android: No auto-completion required for DNS server text box
Tobias Brunner [Tue, 8 Oct 2019 12:46:38 +0000 (14:46 +0200)]
android: Add helper to read strings from text boxes
Tobias Brunner [Tue, 8 Oct 2019 13:21:00 +0000 (15:21 +0200)]
android: Fix deprecation warning related to FragmentPagerAdapter
Tobias Brunner [Mon, 7 Oct 2019 15:00:11 +0000 (17:00 +0200)]
android: Update AndroidX libraries
Tobias Brunner [Mon, 7 Oct 2019 14:42:00 +0000 (16:42 +0200)]
android: Update Gradle plugin
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.
Tobias Brunner [Mon, 14 Oct 2019 09:43:58 +0000 (11:43 +0200)]
Use Botan 2.12.1 for tests
Tobias Brunner [Mon, 7 Oct 2019 12:31:40 +0000 (14:31 +0200)]
Use Botan 2.12.0 for tests
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.
Tobias Brunner [Thu, 26 Jul 2018 08:01:46 +0000 (10:01 +0200)]
fuzz: Add fuzzer for identification_t
Tobias Brunner [Thu, 26 Sep 2019 09:50:46 +0000 (11:50 +0200)]
travis: Bump tpm2-tss to 2.3.1
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.
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.
Tobias Brunner [Tue, 10 Sep 2019 14:33:18 +0000 (16:33 +0200)]
travis: Bump OpenSSL to 1.1.1d
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.
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.
Tobias Brunner [Tue, 3 Sep 2019 08:26:29 +0000 (10:26 +0200)]
conf: Fix typo in documentation of charon.rdn_matching
Fixes #3165.
Andreas Steffen [Mon, 2 Sep 2019 12:39:16 +0000 (14:39 +0200)]
Version bump to 5.8.1
Andreas Steffen [Thu, 29 Aug 2019 09:15:18 +0000 (11:15 +0200)]
Version bump to 5.8.1rc2
Andreas Steffen [Wed, 28 Aug 2019 14:30:24 +0000 (16:30 +0200)]
Version bump to 5.8.1rc1
Tobias Brunner [Wed, 28 Aug 2019 12:03:41 +0000 (14:03 +0200)]
Fixed some typos, courtesy of codespell
Tobias Brunner [Wed, 28 Aug 2019 10:17:44 +0000 (12:17 +0200)]
NEWS: Added some news for 5.8.1
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.
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.
Tobias Brunner [Tue, 27 Aug 2019 16:22:33 +0000 (18:22 +0200)]
cirrus: Run automated tests on FreeBSD via Cirrus CI