]> git.ipfire.org Git - thirdparty/strongswan.git/log
thirdparty/strongswan.git
5 years agotpm_seal: Implemented TPM 2.0 file sealing tpm-seal
Andreas Steffen [Thu, 17 May 2018 16:22:56 +0000 (18:22 +0200)] 
tpm_seal: Implemented TPM 2.0 file sealing

5 years agobliss: Fix compilation with non-GNU C libraries
Tobias Brunner [Tue, 17 Apr 2018 12:19:19 +0000 (14:19 +0200)] 
bliss: Fix compilation with non-GNU C libraries

Not even the glibc man page mentions that type.

Fixes #2638.

5 years agoAllow strongSwan to be spawned as non-root user
Micah Morton [Tue, 17 Apr 2018 20:29:03 +0000 (13:29 -0700)] 
Allow strongSwan to be spawned as non-root user

This patch allows for giving strongSwan only the runtime capabilities it
needs, rather than full root privileges.

Adds preprocessor directives which allow strongSwan to be configured to
 1) start up as a non-root user
 2) avoid modprobe()'ing IPsec kernel modules into the kernel, which
    would normally require root or CAP_SYS_MODULE

Additionally, some small mods to charon/libstrongswan ensure that charon
fully supports starting as a non-root user.

Tested with strongSwan 5.5.3.

6 years agonm: Update NEWS
Tobias Brunner [Mon, 7 May 2018 10:10:35 +0000 (12:10 +0200)] 
nm: Update NEWS

6 years agonm: Don't hardcode install path for .name file
Tobias Brunner [Wed, 25 Apr 2018 07:45:07 +0000 (09:45 +0200)] 
nm: Don't hardcode install path for .name file

6 years agonm: Don't rely on NetworkManager.pc for paths when building without libnm-glib
Tobias Brunner [Wed, 25 Apr 2018 07:33:27 +0000 (09:33 +0200)] 
nm: Don't rely on NetworkManager.pc for paths when building without libnm-glib

Also make the paths configurable, in case the defaults don't work out on
a certain platform.

6 years agolibimcv: Added inactive field to device database table
Andreas Steffen [Fri, 13 Apr 2018 10:25:50 +0000 (12:25 +0200)] 
libimcv: Added inactive field to device database table

6 years agosw-collector: Added --check option
Andreas Steffen [Thu, 26 Apr 2018 14:24:59 +0000 (16:24 +0200)] 
sw-collector: Added --check option

6 years agoikev1: Ignore roam events for IKEv1
Tobias Brunner [Wed, 25 Apr 2018 13:14:21 +0000 (15:14 +0200)] 
ikev1: Ignore roam events for IKEv1

We don't have MOBIKE and the fallback to reauthentication does also not
make much sense as that doesn't affect the CHILD_SAs for IKEv1.  So
instead of complicating the code we just ignore roam events for IKEv1
for now.

Closes strongswan/strongswan#100.

6 years agothread: Properly clean up meta data of thread if pthread_create() fails
Tobias Brunner [Tue, 17 Apr 2018 09:37:35 +0000 (11:37 +0200)] 
thread: Properly clean up meta data of thread if pthread_create() fails

6 years agoVersion bump to 5.6.3dr1 5.6.3dr1
Andreas Steffen [Thu, 19 Apr 2018 14:34:06 +0000 (16:34 +0200)] 
Version bump to 5.6.3dr1

6 years agotesting: Fixed ikev2/alg-chacha20poly1305 scenario
Andreas Steffen [Thu, 19 Apr 2018 14:33:04 +0000 (16:33 +0200)] 
testing: Fixed ikev2/alg-chacha20poly1305 scenario

6 years agoike: Ignore rekeyed and deleted CHILD_SAs when reestablishing IKE_SAs
Tobias Brunner [Tue, 10 Apr 2018 09:48:26 +0000 (11:48 +0200)] 
ike: Ignore rekeyed and deleted CHILD_SAs when reestablishing IKE_SAs

6 years agoike: Remove special handling for routed CHILD_SAs during reauth/reestablish
Tobias Brunner [Tue, 10 Apr 2018 09:43:40 +0000 (11:43 +0200)] 
ike: Remove special handling for routed CHILD_SAs during reauth/reestablish

These are managed in the trap manager, no trap policies will ever be
attached to an IKE_SA (might have been the case in very early releases).

6 years agocontroller: Remove special handling for routed CHILD_SAs when terminating
Tobias Brunner [Thu, 12 Apr 2018 14:28:39 +0000 (16:28 +0200)] 
controller: Remove special handling for routed CHILD_SAs when terminating

In very early versions routed CHILD_SAs were attached to IKE_SAs, since
that's not the case anymore (they are handled via trap manager), we can
remove this special handling.

6 years agoproposal: Don't specify key length for ChaCha20/Poly1305
Tobias Brunner [Wed, 4 Apr 2018 16:08:11 +0000 (18:08 +0200)] 
proposal: Don't specify key length for ChaCha20/Poly1305

This algorithm uses a fixed-length key and we MUST NOT send a key length
attribute when proposing such algorithms.

While we could accept transforms with key length this would only work as
responder, as original initiator it wouldn't because we won't know if a
peer requires the key length.  And as exchange initiator (e.g. for
rekeyings), while being original responder, we'd have to go to great
lengths to store the condition and modify the sent proposal to patch in
the key length.  This doesn't seem worth it for only a partial fix.
This means, however, that ChaCha20/Poly1305 can't be used with previous
releases (5.3.3 an newer) that don't contain this fix.

Fixes #2614.

Fixes: 3232c0e64ed1 ("Merge branch 'chapoly'")
6 years agoikev2: Reuse marks and reqid of CHILD_SAs during MBB reauthentication
Tobias Brunner [Wed, 4 Apr 2018 07:28:28 +0000 (09:28 +0200)] 
ikev2: Reuse marks and reqid of CHILD_SAs during MBB reauthentication

Since these are installed overlapping (like during a rekeying) we have to use
the same (unique) marks (and possibly reqid) that were used previously,
otherwise, the policy installation will fail.

Fixes #2610.

6 years agorevocation: Make sure issuer of fetched CRL matches that of the certificate
Tobias Brunner [Wed, 4 Apr 2018 14:16:38 +0000 (16:16 +0200)] 
revocation: Make sure issuer of fetched CRL matches that of the certificate

Unless there is a cRLIssuer listed in the CDP, the CRL should be issued
by the same issuer as the checked certificate.

Fixes #2608.

6 years agoike: Float to port 4500 if either port is 500
Tobias Brunner [Thu, 29 Mar 2018 09:23:15 +0000 (11:23 +0200)] 
ike: Float to port 4500 if either port is 500

If the responder is behind a NAT that remaps the response from the
statically forwarded port 500 to a new external port (as Azure seems to be
doing) we should still switch to port 4500 if we used port 500 so far as
it would not have been possible to send any messages to it if it wasn't
really port 500 (we only add a non-ESP marker if neither port is 500).

6 years agoMerge branch 'ikev1-down-reauth'
Tobias Brunner [Thu, 12 Apr 2018 13:19:49 +0000 (15:19 +0200)] 
Merge branch 'ikev1-down-reauth'

This triggers child_updown() if IKEv1 reauthentication fails due to
retransmits. The SA is also tried to be reestablished.

Fixes #2573.

6 years ago_updown: Remove printf calls for identities
Tobias Brunner [Mon, 12 Mar 2018 09:20:42 +0000 (10:20 +0100)] 
_updown: Remove printf calls for identities

This was apparently for compatibility with pluto, which escaped some
characters as octal values.

6 years agoikev1: Trigger down events for CHILD_SAs if reauthentication failed due to retransmits
Tobias Brunner [Thu, 1 Mar 2018 17:02:08 +0000 (18:02 +0100)] 
ikev1: Trigger down events for CHILD_SAs if reauthentication failed due to retransmits

6 years agoikev1: Reestablish SAs if reauthentication failed due to retransmits
Tobias Brunner [Thu, 1 Mar 2018 16:53:59 +0000 (17:53 +0100)] 
ikev1: Reestablish SAs if reauthentication failed due to retransmits

6 years agotraffic-selector: Always print protocol if either protocol or port is set
Tobias Brunner [Wed, 11 Apr 2018 10:15:55 +0000 (12:15 +0200)] 
traffic-selector: Always print protocol if either protocol or port is set

This helps to distinguish between port and protocol if only one of them
is set.  If no protocol is set it's printed as 0, if the traffic
selector covers any port (0-65535) the slash that separates the two values
and the port is omitted.

6 years agoMerge branch 'child-deleted'
Tobias Brunner [Mon, 9 Apr 2018 15:15:24 +0000 (17:15 +0200)] 
Merge branch 'child-deleted'

This adds a new state for CHILD_SAs that we deleted but still keep
around to process delayed packets (IKEv2 only).  This allows us to treat
them specially in some cases (e.g. to avoid triggering child_updown()
events as we already did that when we deleted such SAs).

Closes strongswan/strongswan#93.

6 years agobus: Don't trigger child_updown for deleted CHILD_SAs
Tobias Brunner [Tue, 20 Mar 2018 11:44:35 +0000 (12:44 +0100)] 
bus: Don't trigger child_updown for deleted CHILD_SAs

These were rekeyed but have not been destroyed yet.

6 years agochild-sa: Add new state to track deleted but not yet destroyed CHILD_SAs
Tobias Brunner [Tue, 20 Mar 2018 11:43:13 +0000 (12:43 +0100)] 
child-sa: Add new state to track deleted but not yet destroyed CHILD_SAs

This allows us to easily identify SAs we keep around after a rekeying to
process delayed packets.

6 years agoikev1: Unify child_updown calls when having duplicate QMs
Afschin Hormozdiary [Tue, 27 Mar 2018 14:55:59 +0000 (16:55 +0200)] 
ikev1: Unify child_updown calls when having duplicate QMs

If a Quick mode is initiated for a CHILD_SA that is already installed
we can identify this situation and rekey the already installed CHILD_SA.

Otherwise we end up with several CHILD_SAs in state INSTALLED which
means multiple calls of child_updown are done. Unfortunately,
the deduplication code later does not call child_updown() (so up and down
were not even).

Closes strongswan/strongswan#95.

6 years agolibtpmtss: Properly initialize tabrmd tcti_context
Andreas Steffen [Mon, 9 Apr 2018 09:07:16 +0000 (11:07 +0200)] 
libtpmtss: Properly initialize tabrmd tcti_context

6 years agotesting: Fix typo in sysctl.conf file
Matt Selsky [Fri, 30 Mar 2018 05:35:53 +0000 (01:35 -0400)] 
testing: Fix typo in sysctl.conf file

Closes strongswan/strongswan#97.

6 years agopkcs11: Use unused return value of C_GetMechanismList
robinleander [Tue, 27 Mar 2018 20:50:28 +0000 (22:50 +0200)] 
pkcs11: Use unused return value of C_GetMechanismList

Closes strongswan/strongswan#96.

6 years agokernel-pfkey: Add option to install routes via internal interface
Tobias Brunner [Thu, 8 Mar 2018 17:34:50 +0000 (18:34 +0100)] 
kernel-pfkey: Add option to install routes via internal interface

On FreeBSD, enabling this selects the correct source IP when sending
packets from the gateway itself.

6 years agoMerge branch 'hw-offload-auto'
Tobias Brunner [Wed, 21 Mar 2018 09:32:48 +0000 (10:32 +0100)] 
Merge branch 'hw-offload-auto'

This lets IPsec SA installation explicitly fail if HW offload is enabled
but either the kernel or the device don't support it.  And it adds a new
configuration mode 'auto', which enables HW offload, if supported, but
does not fail the installation otherwise.

6 years agochild-cfg: Make HW offload auto mode configurable
Adi Nissim [Mon, 12 Mar 2018 14:34:21 +0000 (16:34 +0200)] 
child-cfg: Make HW offload auto mode configurable

Until now the configuration available to user for HW offload were:
hw_offload = no
hw_offload = yes

With this commit users will be able to configure auto mode using:
hw_offload = auto

Signed-off-by: Adi Nissim <adin@mellanox.com>
Reviewed-by: Aviv Heller <avivh@mellanox.com>
6 years agokernel-netlink: Cleanup and fix some HW offload code issues
Tobias Brunner [Fri, 16 Mar 2018 18:34:43 +0000 (19:34 +0100)] 
kernel-netlink: Cleanup and fix some HW offload code issues

Besides some style issues there were some incorrect allocations
for ethtool requests.

6 years agokernel-netlink: Add new automatic hw_offload mode
Adi Nissim [Mon, 12 Mar 2018 14:34:20 +0000 (16:34 +0200)] 
kernel-netlink: Add new automatic hw_offload mode

Until now there were 2 hw_offload modes: no/yes
* hw_offload = no  : Configure the SA without HW offload.
* hw_offload = yes : Configure the SA with HW offload.
                     In this case, if the device does not support
                     offloading, SA creation will fail.

This commit introduces a new mode: hw_offload = auto
----------------------------------------------------
If the device and kernel support HW offload, configure
the SA with HW offload, but do not fail SA creation otherwise.

Signed-off-by: Adi Nissim <adin@mellanox.com>
Reviewed-by: Aviv Heller <avivh@mellanox.com>
6 years agoipsec-types: Create new enum hw_offload_t
Adi Nissim [Mon, 12 Mar 2018 14:34:19 +0000 (16:34 +0200)] 
ipsec-types: Create new enum hw_offload_t

Add the new enum in order to add HW offload auto mode.

Signed-off-by: Adi Nissim <adin@mellanox.com>
Reviewed-by: Aviv Heller <avivh@mellanox.com>
6 years agostarter: Ignore an existing PID file if it references ourself
Martin Willi [Mon, 12 Mar 2018 06:26:06 +0000 (07:26 +0100)] 
starter: Ignore an existing PID file if it references ourself

6 years agocharon-tkm: Ignore an existing PID file if it references ourself
Martin Willi [Mon, 12 Mar 2018 06:25:49 +0000 (07:25 +0100)] 
charon-tkm: Ignore an existing PID file if it references ourself

6 years agocharon: Ignore an existing PID file if it references ourself
Martin Willi [Mon, 12 Mar 2018 06:16:52 +0000 (07:16 +0100)] 
charon: Ignore an existing PID file if it references ourself

If a daemon PID file references the process that does the check, it is safe
to ignore it; no running process can have the same PID. While this is rather
unlikely to get restarted with the same PID under normal conditions, it is
quite common when running inside PID namespaced containers: If a container
gets stopped and restarted with a PID file remaining, it is very likely that
the PID namespace assigns the same PID to our service, as they are assigned
sequentially starting from 1.

6 years agodiffie-hellman: Remove unused exponent length initialization in get_params()
Tobias Brunner [Tue, 13 Mar 2018 11:18:56 +0000 (12:18 +0100)] 
diffie-hellman: Remove unused exponent length initialization in get_params()

This isn't used anymore since 46184b07c163 ("diffie-hellman: Explicitly
initialize DH exponent sizes during initialization").

6 years agodiffie-hellman: Don't set exponent length for DH groups with prime order subgroups
Tobias Brunner [Tue, 13 Mar 2018 11:13:47 +0000 (12:13 +0100)] 
diffie-hellman: Don't set exponent length for DH groups with prime order subgroups

According to RFC 5114 the exponent length for these groups should always equal
the size of their prime order subgroup.
This was handled correctly before the initialization was done during
library initialization.

Fixes: 46184b07c163 ("diffie-hellman: Explicitly initialize DH exponent sizes during initialization")
6 years agoproposal: Make sure non-AEAD IKE proposals contain integrity algorithms
Tobias Brunner [Thu, 8 Mar 2018 17:26:19 +0000 (18:26 +0100)] 
proposal: Make sure non-AEAD IKE proposals contain integrity algorithms

6 years agoproposal: Compress arrays after removing transforms
Tobias Brunner [Thu, 8 Mar 2018 17:22:55 +0000 (18:22 +0100)] 
proposal: Compress arrays after removing transforms

6 years agoikev2: Use correct type to check for selected signature scheme
Tobias Brunner [Tue, 6 Mar 2018 16:28:33 +0000 (17:28 +0100)] 
ikev2: Use correct type to check for selected signature scheme

The previous code was obviously incorrect and caused strange side effects
depending on the compiler and its optimization flags (infinite looping seen
with GCC 4.8.4, segfault when destroying the private key in build() seen
with clang 4.0.0 on FreeBSD).

Fixes #2579.

6 years agovici: Make sure to read all requested data from socket in Perl binding
Tobias Brunner [Wed, 7 Mar 2018 09:31:11 +0000 (10:31 +0100)] 
vici: Make sure to read all requested data from socket in Perl binding

Closes strongswan/strongswan#91.

6 years agolibimcv: Add Debian 8.10 to IMV database
Tobias Brunner [Tue, 20 Mar 2018 08:19:07 +0000 (09:19 +0100)] 
libimcv: Add Debian 8.10 to IMV database

References #2582.

6 years agostroke: Ensure a minimum message length
Tobias Brunner [Tue, 13 Mar 2018 17:54:08 +0000 (18:54 +0100)] 
stroke: Ensure a minimum message length

6 years agolibipsec: Fix ip_packet_create_from_data() version field in IPv6 header
Matus Fabian [Mon, 19 Mar 2018 09:19:45 +0000 (02:19 -0700)] 
libipsec: Fix ip_packet_create_from_data() version field in IPv6 header

Closes strongswan/strongswan#92.

Signed-off-by: Matus Fabian <matfabia@cisco.com>
6 years agotesting: Use HA patch compatible with 4.15.6+
Tobias Brunner [Thu, 8 Mar 2018 09:07:33 +0000 (10:07 +0100)] 
testing: Use HA patch compatible with 4.15.6+

6 years agotesting: Use a HA patch that's actually compatible with 4.15 kernels
Tobias Brunner [Wed, 7 Mar 2018 16:16:54 +0000 (17:16 +0100)] 
testing: Use a HA patch that's actually compatible with 4.15 kernels

6 years agotesting: Revert typo fix in FreeRADIUS patch
Tobias Brunner [Wed, 7 Mar 2018 15:38:18 +0000 (16:38 +0100)] 
testing: Revert typo fix in FreeRADIUS patch

Fixes: 2db6d5b8b378 ("Fixed some typos, courtesy of codespell")
Fixes #2582.

6 years agoload-tester: Start numbering IDs from 1 again
Tobias Brunner [Tue, 27 Feb 2018 09:31:49 +0000 (10:31 +0100)] 
load-tester: Start numbering IDs from 1 again

ref_get() increments the number before returning it.

Fixes: 2cbaa632951d ("load-tester: Fix race condition issuing same identity")
6 years agoMerge branch 'pbkdf2-sha2'
Tobias Brunner [Wed, 7 Mar 2018 14:24:56 +0000 (15:24 +0100)] 
Merge branch 'pbkdf2-sha2'

Adds support for common SHA-2 based PRFs in PKCS#5/PBKDF2 as used by
OpenSSL 1.1 when generating PKCS#8-encoded private keys.

Fixes #2574.

6 years agocharon-nm: Parse any type of private key not only RSA
Tobias Brunner [Mon, 5 Mar 2018 08:47:15 +0000 (09:47 +0100)] 
charon-nm: Parse any type of private key not only RSA

6 years agopkcs5: Parse PRF algorithms if given in PBKDF2-params as defined in RFC 8018
Tobias Brunner [Mon, 5 Mar 2018 08:45:34 +0000 (09:45 +0100)] 
pkcs5: Parse PRF algorithms if given in PBKDF2-params as defined in RFC 8018

We can't use ASN1_DEF, which would technically be more correct, as the
ASN.1 parser currently can't handle that.  For algorithm identifiers we
often use ASN1_EOC as type (with ASN1_RAW), however, that doesn't work with
ASN1_DEF because the element is assumed missing if the type doesn't match.
On the other hand, we can't set the type to ASN1_SEQUENCE because then the
parser skips the following rule if the element is missing (it does so for
all constructed types, but I guess is mainly intended for context tags),
which in this case overruns the parser rules array.

6 years agoprf: Add helper function to convert OIDs to algorithm identifiers
Tobias Brunner [Mon, 5 Mar 2018 08:43:07 +0000 (09:43 +0100)] 
prf: Add helper function to convert OIDs to algorithm identifiers

6 years agoasn1: Add OIDs for HMAC-based PRFs as defined in RFC 8018
Tobias Brunner [Mon, 5 Mar 2018 08:42:41 +0000 (09:42 +0100)] 
asn1: Add OIDs for HMAC-based PRFs as defined in RFC 8018

6 years agoMerge branch 'unknown-transform-types'
Tobias Brunner [Wed, 7 Mar 2018 13:25:48 +0000 (14:25 +0100)] 
Merge branch 'unknown-transform-types'

This changes how unknown transform types are handled in proposals.  In
particular we make sure not to accept a proposal if it contains unknown
transform types (they were just ignored previously, which could have
resulted in an invalid selected proposal).

Fixes #2557.

6 years agoproposal: Compare algorithms of all transform types for equality
Tobias Brunner [Fri, 23 Feb 2018 08:59:38 +0000 (09:59 +0100)] 
proposal: Compare algorithms of all transform types for equality

6 years agoproposal: Make sure to consider all transform types when selecting proposals
Tobias Brunner [Fri, 23 Feb 2018 08:02:49 +0000 (09:02 +0100)] 
proposal: Make sure to consider all transform types when selecting proposals

This way there will be a mismatch if one of the proposals contains
transform types not contained in the other (the fix list of transform
types used previously resulted in a match if unknown transform types
were contained in one of the proposals).  Merging the sets of types
makes comparing proposals with optional transform types easier (e.g.
DH for ESP with MODP_NONE).

6 years agoproposal: Print all algorithms even those with currently unknown transform types
Tobias Brunner [Fri, 23 Feb 2018 07:43:07 +0000 (08:43 +0100)] 
proposal: Print all algorithms even those with currently unknown transform types

6 years agoproposal: Keep track of contained transform types
Tobias Brunner [Fri, 23 Feb 2018 07:36:33 +0000 (08:36 +0100)] 
proposal: Keep track of contained transform types

6 years agotransform: Move internal identifiers out of private range
Tobias Brunner [Fri, 23 Feb 2018 07:12:48 +0000 (08:12 +0100)] 
transform: Move internal identifiers out of private range

Avoid any conflicts if implementations use transform types in the
private range.
Also removed the unused UNKNOWN_TRANSFORM_TYPE identifier.

6 years agounit-tests: Ignore binaries of renamed test runners
Tobias Brunner [Fri, 2 Mar 2018 16:10:33 +0000 (17:10 +0100)] 
unit-tests: Ignore binaries of renamed test runners

Fixes: 9cc61baaf592 ("unit-tests: Rename targets for libstrongswan and kernel-netlink")
6 years agolibimcv: Fix typo in PTS hash algorithm mapping for 512-bit SHA-3
Tobias Brunner [Fri, 2 Mar 2018 07:29:34 +0000 (08:29 +0100)] 
libimcv: Fix typo in PTS hash algorithm mapping for 512-bit SHA-3

Fixes: 40f2589abfc8 ("gmp: Support of SHA-3 RSA signatures")
6 years agokernel-netlink: Ignore local routes in any table
Tobias Brunner [Mon, 26 Feb 2018 14:07:15 +0000 (15:07 +0100)] 
kernel-netlink: Ignore local routes in any table

Such routes seem to show up in tables other than local with recent kernels.

Fixes #2555.

6 years agokernel-netlink: Ignore routes with next hop during local subnet enumeration
Tobias Brunner [Thu, 22 Feb 2018 08:50:52 +0000 (09:50 +0100)] 
kernel-netlink: Ignore routes with next hop during local subnet enumeration

These are not locally attached and we do the same already in kernel-pfroute.

Fixes #2554.

6 years agokernel-netlink: Simplify rt_entry_t initialization
Tobias Brunner [Thu, 22 Feb 2018 08:49:57 +0000 (09:49 +0100)] 
kernel-netlink: Simplify rt_entry_t initialization

6 years agonm: Version bump to 1.4.4
Tobias Brunner [Fri, 23 Feb 2018 14:31:01 +0000 (15:31 +0100)] 
nm: Version bump to 1.4.4

6 years agonm: Update German translation
Tobias Brunner [Fri, 23 Feb 2018 14:26:00 +0000 (15:26 +0100)] 
nm: Update German translation

6 years agonm: Fix tooltips for proposal text fields
Tobias Brunner [Fri, 23 Feb 2018 14:25:23 +0000 (15:25 +0100)] 
nm: Fix tooltips for proposal text fields

There is no ! syntax as the default proposal is only used if no custom
proposal is configured.

6 years agoMerge branch 'incorrect-inval-ke'
Tobias Brunner [Fri, 23 Feb 2018 08:28:08 +0000 (09:28 +0100)] 
Merge branch 'incorrect-inval-ke'

This improves the behavior during CREATE_CHILD_SA exchanges if the peer
sends an INVALID_KE_PAYLOAD with a DH group we didn't request or continues
to return the same notify even if we use the requested group.

Fixes #2536.

6 years agochild-rekey: Don't destroy IKE_SA if initiating CHILD_SA rekeying failed
Tobias Brunner [Mon, 19 Feb 2018 14:09:34 +0000 (15:09 +0100)] 
child-rekey: Don't destroy IKE_SA if initiating CHILD_SA rekeying failed

This could happen if the peer e.g. selects an invalid DH group or
responds multiple time with an INVALID_KE_PAYLAOD notify.

6 years agochild-create: Fail if we already retried with a requested DH group
Tobias Brunner [Fri, 9 Feb 2018 14:27:50 +0000 (15:27 +0100)] 
child-create: Fail if we already retried with a requested DH group

With faulty peers that always return the same unusable DH group in
INVALID_KE_PAYLOADs we'd otherwise get stuck in a loop.

6 years agochild-create: Make sure we actually propose the requested DH group
Tobias Brunner [Fri, 9 Feb 2018 14:16:24 +0000 (15:16 +0100)] 
child-create: Make sure we actually propose the requested DH group

If we receive an INVALID_KE_PAYLOAD notify we should not just retry
with the requested DH group without checking first if we actually propose
the group (or any at all).

6 years agochild-create: Make sure the returned KE payload uses the proposed DH group
Tobias Brunner [Fri, 9 Feb 2018 14:13:54 +0000 (15:13 +0100)] 
child-create: Make sure the returned KE payload uses the proposed DH group

6 years agochild-sa: Don't update outbound policies if they are not installed
Tobias Brunner [Wed, 21 Feb 2018 10:04:45 +0000 (11:04 +0100)] 
child-sa: Don't update outbound policies if they are not installed

After a rekeying we keep the inbound SA and policies installed for a
while, but the outbound SA and policies are already removed.  Attempting
to update them could get the refcount in the kernel interface out of sync
as the additional policy won't be removed when the CHILD_SA object is
eventually destroyed.

6 years agochild-sa: Don't try to update outbound SA if it is not installed anymore
Tobias Brunner [Wed, 21 Feb 2018 09:58:39 +0000 (10:58 +0100)] 
child-sa: Don't try to update outbound SA if it is not installed anymore

6 years agoMerge branch 'trap-manager-uninstall'
Tobias Brunner [Thu, 22 Feb 2018 10:31:14 +0000 (11:31 +0100)] 
Merge branch 'trap-manager-uninstall'

This changes how trap policies are deleted in order to avoid conflicts if a
trap policy with changed peer config is concurrently removed and reinstalled
under a different name (the reqid will be the same, so the wrong policy
could have been deleted by the old code).

6 years agotrap-manager: Remove unused find_reqid() method
Tobias Brunner [Fri, 3 Nov 2017 10:51:36 +0000 (11:51 +0100)] 
trap-manager: Remove unused find_reqid() method

It might actually have returned an incorrect result if there were child
configs for different peer configs sharing the same name.

6 years agochild-sa: No need to find reqid of existing trap policy
Tobias Brunner [Fri, 3 Nov 2017 10:49:45 +0000 (11:49 +0100)] 
child-sa: No need to find reqid of existing trap policy

When initiating a trap policy we explicitly pass the reqid along.  I guess
the lookup was useful to get the same reqid if a trapped CHILD_SA is manually
initiated.  However, we now get the same reqid anyway if there is no
narrowing.  And if the traffic selectors do get narrowed the reqid will be
different but that shouldn't be a problem as that doesn't cause an issue with
any temporary SAs in the kernel (this is why we pass the reqid to the
triggered CHILD_SA, otherwise, no new acquire would get triggered for
traffic that doesn't match the wider trap policy).

6 years agotrap-manager: Remove reqid parameter from install() and change return type
Tobias Brunner [Fri, 3 Nov 2017 10:32:04 +0000 (11:32 +0100)] 
trap-manager: Remove reqid parameter from install() and change return type

Reqids for the same traffic selectors are now stable so we don't have to
pass reqids of previously installed CHILD_SAs.  Likewise, we don't need
to know the reqid of the newly installed trap policy as we now uninstall
by name.

6 years agotrap-manager: Compare peer config name during installation
Tobias Brunner [Fri, 3 Nov 2017 10:26:23 +0000 (11:26 +0100)] 
trap-manager: Compare peer config name during installation

6 years agotrap-manager: Uninstall trap policies by name and not reqid
Tobias Brunner [Fri, 3 Nov 2017 10:10:16 +0000 (11:10 +0100)] 
trap-manager: Uninstall trap policies by name and not reqid

If a trap policy is concurrently uninstalled and reinstalled under a
different name the reqid will be the same so the wrong trap might be
removed.

6 years agovici: Remove external enumeration to uninstall shunt policies
Tobias Brunner [Fri, 3 Nov 2017 09:55:05 +0000 (10:55 +0100)] 
vici: Remove external enumeration to uninstall shunt policies

6 years agostroke: Remove external enumeration to unroute shunt policies
Tobias Brunner [Fri, 3 Nov 2017 09:53:04 +0000 (10:53 +0100)] 
stroke: Remove external enumeration to unroute shunt policies

6 years agoshunt-manager: Remove first match if no namespace given during uninstall
Tobias Brunner [Fri, 3 Nov 2017 09:47:48 +0000 (10:47 +0100)] 
shunt-manager: Remove first match if no namespace given during uninstall

Also makes namespace mandatory.

6 years agoappveyor: Allow events to trigger early in threading unit tests
Tobias Brunner [Fri, 16 Feb 2018 10:55:54 +0000 (11:55 +0100)] 
appveyor: Allow events to trigger early in threading unit tests

The timed wait functions tested in the threading unit tests often but
randomly trigger a bit early on AppVeyor Windows containers.  We allow this
if it is not earlier than 5ms.

6 years agocharon-nm: Fix building list of DNS/MDNS servers with libnm
Tobias Brunner [Wed, 21 Feb 2018 10:53:55 +0000 (11:53 +0100)] 
charon-nm: Fix building list of DNS/MDNS servers with libnm

g_variant_builder_add() creates a new GVariant using g_variant_new() and
then adds it to the builder.  Passing a GVariant probably adds the
pointer to the array, not the value.  I think an alternative fix would
be to use "@u" as type string for the g_variant_builder_add() call, then
the already allocated GVariant is adopted.

Fixes: 9a71b7219ca3 ("charon-nm: Port to libnm")
6 years agox509: Fix leak if a CRL contains multiple authorityKeyIdentifiers
Tobias Brunner [Wed, 21 Feb 2018 10:13:42 +0000 (11:13 +0100)] 
x509: Fix leak if a CRL contains multiple authorityKeyIdentifiers

6 years agofuzzing: Add fuzzer for CRL parsing
Tobias Brunner [Tue, 20 Feb 2018 16:51:55 +0000 (17:51 +0100)] 
fuzzing: Add fuzzer for CRL parsing

6 years agonm: Version bump to 1.4.3
Tobias Brunner [Mon, 19 Feb 2018 13:44:28 +0000 (14:44 +0100)] 
nm: Version bump to 1.4.3

6 years agoVersion bump to 5.6.2 5.6.2
Andreas Steffen [Mon, 19 Feb 2018 11:59:37 +0000 (12:59 +0100)] 
Version bump to 5.6.2

6 years agoNEWS: Add info about CVE-2018-6459
Tobias Brunner [Mon, 19 Feb 2018 09:37:04 +0000 (10:37 +0100)] 
NEWS: Add info about CVE-2018-6459

6 years agosignature-params: Properly handle MGF1 algorithm identifier without parameters
Tobias Brunner [Mon, 4 Dec 2017 09:51:47 +0000 (10:51 +0100)] 
signature-params: Properly handle MGF1 algorithm identifier without parameters

Credit to OSS-Fuzz.

Fixes: CVE-2018-6459
6 years agoVersion bump to 5.6.2rc1 5.6.2rc1
Andreas Steffen [Fri, 16 Feb 2018 12:37:00 +0000 (13:37 +0100)] 
Version bump to 5.6.2rc1

6 years agotesting: Enable counters and save-keys plugins
Andreas Steffen [Fri, 16 Feb 2018 12:36:44 +0000 (13:36 +0100)] 
testing: Enable counters and save-keys plugins

6 years agoNEWS: Added some news for 5.6.2
Tobias Brunner [Fri, 16 Feb 2018 10:02:06 +0000 (11:02 +0100)] 
NEWS: Added some news for 5.6.2

6 years agovici: Also return close action
Tobias Brunner [Fri, 16 Feb 2018 08:55:22 +0000 (09:55 +0100)] 
vici: Also return close action