22 months agotravis: Run tests against wolfSSL
Tobias Brunner [Tue, 9 Apr 2019 08:40:54 +0000 (10:40 +0200)]
travis: Run tests against wolfSSL

Check for wolfssl/options.h because if it isn't included, checking other
headers will trigger a warning about hardening the wolfSSL build, which
will cause the check to fail with -Werror.

If the file doesn't exist because user_settings.h is used, the check may
be skipped by configuring with `ac_cv_header_wolfssl_options_h=yes`.

22 months agowolfssl: Fixes, code style changes and some refactorings
Tobias Brunner [Fri, 5 Apr 2019 10:03:18 +0000 (12:03 +0200)]
wolfssl: Fixes, code style changes and some refactorings

The main fixes are

 * the generation of fingerprints for RSA, ECDSA, and EdDSA
 * the encoding of ECDSA private keys
 * calculating p and q for RSA private keys
 * deriving the public key for raw Ed25519 private keys

Also, instead of numeric literals for buffer lengths ASN.1 related
constants are used.

22 months agounit-tests: Add tests for ECDSA fingerprints and encoding
Tobias Brunner [Mon, 8 Apr 2019 15:57:19 +0000 (17:57 +0200)]
unit-tests: Add tests for ECDSA fingerprints and encoding

22 months agounit-tests: Add tests for RSA fingerprints and encoding
Tobias Brunner [Mon, 8 Apr 2019 10:23:36 +0000 (12:23 +0200)]
unit-tests: Add tests for RSA fingerprints and encoding

22 months agochunk: Add helper to copy a chunk left-padded to a certain length
Tobias Brunner [Mon, 8 Apr 2019 13:24:23 +0000 (15:24 +0200)]
chunk: Add helper to copy a chunk left-padded to a certain length

22 months agowolfssl: Add wolfSSL plugin for cryptographic implementations
Sean Parkinson [Wed, 3 Apr 2019 07:06:34 +0000 (17:06 +1000)]
wolfssl: Add wolfSSL plugin for cryptographic implementations

22 months agoMerge branch 'android-fixes'
Tobias Brunner [Wed, 24 Apr 2019 09:36:26 +0000 (11:36 +0200)]
Merge branch 'android-fixes'

Fixes an upgrade issue and includes UTF8 support for EAP-MSCHAPv2.

22 months agosocket-default: Fix setting DSCP value on FreeBSD
Tobias Brunner [Tue, 23 Apr 2019 09:49:04 +0000 (11:49 +0200)]
socket-default: Fix setting DSCP value on FreeBSD

Fixes #3030.

22 months agoandroid: New release after fixing DB update and adding UTF-8 for EAP-MSCHAPv2
Tobias Brunner [Tue, 16 Apr 2019 13:58:31 +0000 (15:58 +0200)]
android: New release after fixing DB update and adding UTF-8 for EAP-MSCHAPv2

22 months agoandroid: Fix database upgrade from older versions
Tobias Brunner [Mon, 15 Apr 2019 12:24:23 +0000 (14:24 +0200)]
android: Fix database upgrade from older versions

22 months agoeap-mschapv2: Convert UTF-8-encoded passwords
Tobias Brunner [Wed, 10 Apr 2019 15:38:35 +0000 (17:38 +0200)]
eap-mschapv2: Convert UTF-8-encoded passwords

Instead of assuming passwords are simply ASCII-encoded we now assume they are
provided UTF-8-encoded, which is quite likely nowadays.  The UTF-8 byte
sequences are not validated, however, only valid code points are encoded
as UTF-16LE.

Fixes #3014.

22 months agotesting: Use latest tkm-rpc and x509-ada versions
Tobias Brunner [Mon, 15 Apr 2019 16:31:12 +0000 (18:31 +0200)]
testing: Use latest tkm-rpc and x509-ada versions

Includes fixes for larger signatures, critical extensions and
utf8Strings in DNs.

22 months agochild-create: Make sure the mode selected by the responder is acceptable
Tobias Brunner [Tue, 9 Apr 2019 17:13:53 +0000 (19:13 +0200)]
child-create: Make sure the mode selected by the responder is acceptable

Previously, the initiator would install the SA in transport mode if the
peer sent back the USE_TRANSPORT_MODE notify, even if that was not
requested originally.

22 months agomessage: Enforce encryption except for INFORMATIONALs
Tobias Brunner [Tue, 9 Apr 2019 09:42:19 +0000 (11:42 +0200)]
message: Enforce encryption except for INFORMATIONALs

The only messages that are generally sent encrypted but could be sent
unencrypted are INFORMATIONALs (currently only used for IKEv1 and ME
connectivity checks).  This should prevent issues if the keymat_t behaves
incorrectly and does not return an aead_t when it actually should.

22 months agotesting: Create new files in mounted strongSwan sources as regular user
Tobias Brunner [Mon, 15 Apr 2019 11:23:05 +0000 (13:23 +0200)]
testing: Create new files in mounted strongSwan sources as regular user

22 months agoike-sa-manager: Extract IKE SPI labeling feature from charon-tkm
Tobias Brunner [Tue, 9 Apr 2019 16:29:10 +0000 (18:29 +0200)]
ike-sa-manager: Extract IKE SPI labeling feature from charon-tkm

Might be useful for users of other daemons too. Note that compared to the
previous implementation in charon-tkm, the mask/label are applied in
network order.

Closes strongswan/strongswan#134.

22 months agoeap-aka-3gpp: Ignore test runner in repository
Tobias Brunner [Thu, 4 Apr 2019 15:56:41 +0000 (17:56 +0200)]
eap-aka-3gpp: Ignore test runner in repository

22 months agotravis: Check for unignored build artifacts after the build
Tobias Brunner [Thu, 4 Apr 2019 15:41:53 +0000 (17:41 +0200)]
travis: Check for unignored build artifacts after the build

22 months agoike-config: If we don't send a CFG_REQUEST, we don't expect a CFG_REPLY
Tobias Brunner [Fri, 29 Mar 2019 10:05:42 +0000 (11:05 +0100)]
ike-config: If we don't send a CFG_REQUEST, we don't expect a CFG_REPLY

Previously, attributes in an incorrectly sent CFG_REPLY would still be passed
to attribute handlers.  This does not prevent handlers from receiving
unrequested attributes if they requested at least one other.

22 months agoike-config: Ignore unrequested virtual IP addresses
Tobias Brunner [Thu, 28 Mar 2019 17:44:08 +0000 (18:44 +0100)]
ike-config: Ignore unrequested virtual IP addresses

But forward them to handlers in case they requested them.

22 months agoMerge branch 'xfrmi'
Tobias Brunner [Thu, 4 Apr 2019 08:41:01 +0000 (10:41 +0200)]
Merge branch 'xfrmi'

This adds support for XFRM interfaces, which replace VTI devices and are
available with 4.19+ Linux kernels.

IPsec SAs and policies are associated with such interfaces via interface
IDs that can be configured on the CHILD_SA-level (dynamic IDs may
optionally be allocated for each instance and even direction) or on the
IKE_SA-level (again, dynamic IDs may be optionally allocated per IKE_SA).
IDs on an IKE_SA are inherited by all CHILD_SAs created under it, unless
the child configuration overrides them.

The effect the interface ID has on policies is similar to that of marks,
i.e. they won't match packets unless they are routed via interface with
matching interface ID.  So it's possible to negotiate e.g. as
traffic selector on both sides and then control the affected traffic via

It's possible to use separate interfaces for in- and outbound traffic (or
only use an interface in one direction and regular policies in the other).

Since iproute2 does not yet support XFRM interfaces, a small utility is
provided that allows creating and listing XFRM interfaces.

Interfaces may be created dynamically via updown/vici scripts or
statically (before or after establishing the SAs).  Routes must be added
manually as needed (the daemon will not install any routes for outbound
policies with an interface ID).

When moving XFRM interfaces to other network namespaces they retain access
to the SAs and policies created in the original namespace, which allows
providing IPsec tunnels for processes in other network namespaces without
giving them access to the IPsec keys or IKE credentials.

Fixes #2845.

22 months agotesting: Add scenario that uses IKE-specific interface IDs
Tobias Brunner [Mon, 25 Mar 2019 17:31:28 +0000 (18:31 +0100)]
testing: Add scenario that uses IKE-specific interface IDs

22 months agotesting: Install python-daemon with strongSwan for use in updown scripts
Tobias Brunner [Wed, 27 Mar 2019 10:13:41 +0000 (11:13 +0100)]
testing: Install python-daemon with strongSwan for use in updown scripts

22 months agotesting: Add /etc/resolv.conf when building strongSwan
Tobias Brunner [Wed, 27 Mar 2019 10:04:57 +0000 (11:04 +0100)]
testing: Add /etc/resolv.conf when building strongSwan

22 months agotesting: Enable Python eggs in testing environment (i.e. vici's Python bindings)
Tobias Brunner [Mon, 25 Mar 2019 13:28:21 +0000 (14:28 +0100)]
testing: Enable Python eggs in testing environment (i.e. vici's Python bindings)

22 months agoconfigure: Fix package version for python packages for developer releases
Tobias Brunner [Mon, 25 Mar 2019 13:26:11 +0000 (14:26 +0100)]
configure: Fix package version for python packages for developer releases

According to PEP 440 the suffix for development releases is .devN and
not just devN.

22 months agovici: Add support for interface ID configurable on IKE_SA
Tobias Brunner [Fri, 22 Mar 2019 17:33:46 +0000 (18:33 +0100)]
vici: Add support for interface ID configurable on IKE_SA

22 months agochild-sa: Pass default interface ID inherited from IKE_SA
Tobias Brunner [Fri, 22 Mar 2019 16:39:47 +0000 (17:39 +0100)]
child-sa: Pass default interface ID inherited from IKE_SA

Also pass optional arguments as struct.

22 months agoike-sa: Add property for interface ID
Tobias Brunner [Fri, 22 Mar 2019 16:19:51 +0000 (17:19 +0100)]
ike-sa: Add property for interface ID

22 months agoipsec-types: Move allocation of unique interface IDs to helper function
Tobias Brunner [Fri, 22 Mar 2019 16:18:00 +0000 (17:18 +0100)]
ipsec-types: Move allocation of unique interface IDs to helper function

22 months agopeer-cfg: Add property for interface ID
Tobias Brunner [Fri, 22 Mar 2019 15:23:59 +0000 (16:23 +0100)]
peer-cfg: Add property for interface ID

22 months agoxfrmi: Use helpers for nested Netlink attributes
Tobias Brunner [Fri, 8 Mar 2019 14:22:58 +0000 (15:22 +0100)]
xfrmi: Use helpers for nested Netlink attributes

22 months agokernel-netlink: Add helper functions for nested attributes
Tobias Brunner [Fri, 8 Mar 2019 14:20:40 +0000 (15:20 +0100)]
kernel-netlink: Add helper functions for nested attributes

22 months agotesting: Add scenarios that use XFRM interfaces
Tobias Brunner [Fri, 8 Feb 2019 17:57:38 +0000 (18:57 +0100)]
testing: Add scenarios that use XFRM interfaces

The network namespace scenario requires a kernel patch in 4.19 and 4.20
kernels (the fix is included in 5.0 kernels).

22 months agokernel-netlink: Don't install routes for CHILD_SAs with interface ID
Tobias Brunner [Fri, 1 Mar 2019 09:19:32 +0000 (10:19 +0100)]
kernel-netlink: Don't install routes for CHILD_SAs with interface ID

22 months agotesting: Enable XFRM interfaces and network namespaces in 4.19 and 5.0 kernel
Tobias Brunner [Tue, 19 Feb 2019 09:16:31 +0000 (10:16 +0100)]
testing: Enable XFRM interfaces and network namespaces in 4.19 and 5.0 kernel

22 months agoxfrmi: Move to a separate directory to fix monolithic build
Tobias Brunner [Wed, 13 Feb 2019 09:33:59 +0000 (10:33 +0100)]
xfrmi: Move to a separate directory to fix monolithic build

22 months agokernel-netlink: Add --list option to XFRM interfaces utility
Tobias Brunner [Tue, 12 Feb 2019 17:26:43 +0000 (18:26 +0100)]
kernel-netlink: Add --list option to XFRM interfaces utility

22 months agoswanctl: Report interface IDs in --list-sas
Tobias Brunner [Tue, 12 Feb 2019 15:20:12 +0000 (16:20 +0100)]
swanctl: Report interface IDs in --list-sas

22 months agovici: Report interface IDs
Tobias Brunner [Tue, 12 Feb 2019 11:13:41 +0000 (12:13 +0100)]
vici: Report interface IDs

22 months agoupdown: Pass interface ID to updown script
Tobias Brunner [Tue, 12 Feb 2019 11:11:10 +0000 (12:11 +0100)]
updown: Pass interface ID to updown script

22 months agoike: Reuse interface ID during CHILD_SA rekeyings
Tobias Brunner [Tue, 12 Feb 2019 10:59:38 +0000 (11:59 +0100)]
ike: Reuse interface ID during CHILD_SA rekeyings

22 months agochild-sa: Configure interface ID on SAs and policies
Tobias Brunner [Tue, 12 Feb 2019 10:39:11 +0000 (11:39 +0100)]
child-sa: Configure interface ID on SAs and policies

22 months agovici: Make interface ID configurable
Tobias Brunner [Tue, 12 Feb 2019 11:10:06 +0000 (12:10 +0100)]
vici: Make interface ID configurable

22 months agoipsec-types: Add helper to parse interface ID
Tobias Brunner [Tue, 12 Feb 2019 11:25:53 +0000 (12:25 +0100)]
ipsec-types: Add helper to parse interface ID

22 months agokernel-interface: Consider interface ID when allocating reqids
Tobias Brunner [Tue, 12 Feb 2019 10:10:04 +0000 (11:10 +0100)]
kernel-interface: Consider interface ID when allocating reqids

22 months agochild-cfg: Add property for interface ID
Tobias Brunner [Tue, 12 Feb 2019 09:19:36 +0000 (10:19 +0100)]
child-cfg: Add property for interface ID

22 months agokernel-netlink: Make interface ID configurable on SAs and policies
Tobias Brunner [Fri, 1 Feb 2019 16:29:20 +0000 (17:29 +0100)]
kernel-netlink: Make interface ID configurable on SAs and policies

22 months agoinclude: Add XFRM attribute identifier for interface ID
Tobias Brunner [Fri, 1 Feb 2019 12:53:29 +0000 (13:53 +0100)]
include: Add XFRM attribute identifier for interface ID

22 months agokernel-netlink: Add utility to create XFRM interfaces
Tobias Brunner [Fri, 1 Feb 2019 08:28:10 +0000 (09:28 +0100)]
kernel-netlink: Add utility to create XFRM interfaces

This is mainly to see what's necessary to create them (in case we
integrate this into the daemon) and to experiment in our testing
environment without having to add a patched version of iproute2 (the
4.20.0 version in stretch-backports doesn't support XFRM interfaces
yet).  The regular version of iproute2 can be used for other operations
with these interfaces (delete, up, addrs etc.).

22 months agokernel-netlink: Calculate length of Netlink messages correctly
Tobias Brunner [Fri, 1 Feb 2019 08:19:03 +0000 (09:19 +0100)]
kernel-netlink: Calculate length of Netlink messages correctly

This is relevant when adding e.g. strings whose length are not aligned.

23 months agoUse Botan 2.10.0 for tests
Tobias Brunner [Mon, 1 Apr 2019 09:01:46 +0000 (11:01 +0200)]
Use Botan 2.10.0 for tests

23 months agoVersion bump to 5.8.0dr2 5.8.0dr2
Andreas Steffen [Sat, 30 Mar 2019 16:11:34 +0000 (17:11 +0100)]
Version bump to 5.8.0dr2

23 months agotesting: Updated expired certificates
Andreas Steffen [Sat, 30 Mar 2019 16:10:51 +0000 (17:10 +0100)]
testing: Updated expired certificates

23 months agoTesting: Removed tnc/tnccs-20-server-retry scenario
Andreas Steffen [Fri, 29 Mar 2019 15:54:54 +0000 (16:54 +0100)]
Testing: Removed tnc/tnccs-20-server-retry scenario

23 months agoCorrected use of PB-TNC CRETRY and SRETRY batches
Andreas Steffen [Fri, 29 Mar 2019 14:33:24 +0000 (15:33 +0100)]
Corrected use of PB-TNC CRETRY and SRETRY batches

The PB-TNC finite state machine according to section 3.2 of RFC 5793
was not correctly implemented when sending either a CRETRY or SRETRY
batch. These batches can only be sent in the "Decided" state and a
CRETRY batch can immediately carry all messages usually transported
by a CDATA batch. strongSwan currently is not able to send a SRETRY
batch since full-duplex mode for PT-TLS isn't supported yet.

23 months agotesting: Disable gcrypt plugin for swanctl
Tobias Brunner [Thu, 28 Mar 2019 17:16:56 +0000 (18:16 +0100)]
testing: Disable gcrypt plugin for swanctl

Sometimes swanctl hangs when initializing the plugin and it apparently
gathers entropy.

23 months agoconf: Use actually configured path for strongswan.conf
Tobias Brunner [Fri, 22 Mar 2019 15:19:48 +0000 (16:19 +0100)]
conf: Use actually configured path for strongswan.conf

References #2984.

23 months agogenerator: Don't print any tainted values in DBG3 messages for U_INT_4
Tobias Brunner [Mon, 18 Mar 2019 12:58:52 +0000 (13:58 +0100)]
generator: Don't print any tainted values in DBG3 messages for U_INT_4

The bits not written to are marked tainted by valgrind, don't print
them in the debug messages.  Also use more specific printf-specifiers
for other values.

23 months agotrap-manager: Wait for install to finish before uninstalling
Sheena Mira-ato [Wed, 20 Mar 2019 23:30:56 +0000 (12:30 +1300)]
trap-manager: Wait for install to finish before uninstalling

There was a race condition between install() and uninstall()
where one thread was in the process of installing a trap
entry, and had destroyed the child_sa, while the other
thread was uninstalling the same trap entry and ended up
trying to destroy the already destroyed child_sa, resulting
in a segmentation fault in the destroy_entry() function.

The uninstall() function needs to wait until all the threads
are done with the installing before proceeding to uninstall
a trap entry.

Closes strongswan/strongswan#131.

23 months agosql: Handle %any better when looking up shared secrets
Tobias Brunner [Mon, 25 Feb 2019 09:30:59 +0000 (10:30 +0100)]
sql: Handle %any better when looking up shared secrets

This can be the case for IKEv1 since 419ae9a20a0b ("ikev1: Default remote
identity to %any for PSK lookup if not configured").

Closes strongswan/strongswan#128.

23 months agoMerge branch 'nm-ipv6'
Tobias Brunner [Thu, 14 Mar 2019 12:46:33 +0000 (13:46 +0100)]
Merge branch 'nm-ipv6'

Adds support for IPv6 to the NetworkManager backend and plugin.

Fixes #1143, #2586.

23 months agonm: Remove deprecated variables from
Tobias Brunner [Fri, 25 Jan 2019 10:19:40 +0000 (11:19 +0100)]
nm: Remove deprecated variables from

23 months agocharon-nm: Add IPv6 support
Tobias Brunner [Fri, 25 Jan 2019 09:56:19 +0000 (10:56 +0100)]
charon-nm: Add IPv6 support

23 months agocharon-nm: Handle IPv6 DNS server attributes
Tobias Brunner [Tue, 27 Sep 2016 09:48:07 +0000 (11:48 +0200)]
charon-nm: Handle IPv6 DNS server attributes

23 months agocharon-nm: Set local address to %any so IPv6 may be used as outer address
Tobias Brunner [Tue, 27 Sep 2016 08:12:53 +0000 (10:12 +0200)]
charon-nm: Set local address to %any so IPv6 may be used as outer address

23 months agocharon-nm: Request virtual IPv6 address and appropriate TS
Tobias Brunner [Wed, 6 Nov 2013 10:36:31 +0000 (11:36 +0100)]
charon-nm: Request virtual IPv6 address and appropriate TS

23 months agonm: Enable IPv6 tab in NM connection dialog
Tobias Brunner [Wed, 6 Nov 2013 10:32:25 +0000 (11:32 +0100)]
nm: Enable IPv6 tab in NM connection dialog

23 months agoforecast: Only reinject packets that are marked or from the configured interface
Tobias Brunner [Tue, 5 Feb 2019 16:21:21 +0000 (17:21 +0100)]
forecast: Only reinject packets that are marked or from the configured interface

This seems to avoid broadcast loops (i.e. processing and reinjecting the
same broadcast packet over and over again) as the packets we send via
AF_PACKET socket are neither marked nor from that interface.

23 months agokernel-netlink: Use address labels instead of deprecation for IPv6 virtual IPs
Tobias Brunner [Tue, 3 Apr 2018 13:01:20 +0000 (15:01 +0200)]
kernel-netlink: Use address labels instead of deprecation for IPv6 virtual IPs

In order to avoid that the kernel uses virtual tunnel IPs for traffic
over physical interfaces we previously deprecated the virtual IP.  While
this is working it is not ideal.  This patch adds address labels for
virtual IPs, which should force the kernel to avoid such addresses to
reach any destination unless there is an explicit route that uses it as
source address.

23 months agoMerge branch 'android-updates'
Tobias Brunner [Thu, 14 Mar 2019 09:56:07 +0000 (10:56 +0100)]
Merge branch 'android-updates'

Adds a copy function for VPN profiles and an option to set custom DNS

23 months agotesting: Prolonged Duck end entity certificate
Andreas Steffen [Wed, 13 Mar 2019 17:37:20 +0000 (18:37 +0100)]
testing: Prolonged Duck end entity certificate

23 months agoVersion bump to 5.8.0dr1
Andreas Steffen [Wed, 13 Mar 2019 17:36:45 +0000 (18:36 +0100)]
Version bump to 5.8.0dr1

23 months agochild-create: Add missing space in DH retry log message
Tobias Brunner [Wed, 13 Mar 2019 09:30:49 +0000 (10:30 +0100)]
child-create: Add missing space in DH retry log message

23 months agoandroid: New release after adding copy function and DNS server config
Tobias Brunner [Fri, 8 Mar 2019 16:08:11 +0000 (17:08 +0100)]
android: New release after adding copy function and DNS server config

23 months agoMerge branch 'openssl-chapoly'
Tobias Brunner [Fri, 8 Mar 2019 14:56:01 +0000 (15:56 +0100)]
Merge branch 'openssl-chapoly'

Adds support for ChaCha20-Poly1305 via OpenSSL.

Fixes #2946.

23 months agoopenssl: Add support for ChaCha20-Poly1305
Tobias Brunner [Mon, 4 Mar 2019 16:55:41 +0000 (17:55 +0100)]
openssl: Add support for ChaCha20-Poly1305

It's available since OpenSSL 1.1.0.

23 months agoopenssl: Generalize the GCM implementation a bit
Tobias Brunner [Mon, 4 Mar 2019 16:31:28 +0000 (17:31 +0100)]
openssl: Generalize the GCM implementation a bit

This will allow us to use the implementation also for other algorithms.

23 months agoMerge branch 'ikev1-redundant-updown'
Tobias Brunner [Fri, 8 Mar 2019 14:50:14 +0000 (15:50 +0100)]
Merge branch 'ikev1-redundant-updown'

Avoids calling updown script for redundant CHILD_SAs after IKEv1 rekey

Fixes #2902.

23 months agoikev1: Don't trigger updown event and close action for redundant CHILD_SAs
Tobias Brunner [Fri, 1 Feb 2019 11:05:55 +0000 (12:05 +0100)]
ikev1: Don't trigger updown event and close action for redundant CHILD_SAs

23 months agotask-manager-v1: Add utility function to check if CHILD_SA is redundant
Tobias Brunner [Fri, 1 Feb 2019 10:53:48 +0000 (11:53 +0100)]
task-manager-v1: Add utility function to check if CHILD_SA is redundant

23 months agovici: Correctly parse inactivity timeout as uint32_t
Tobias Brunner [Wed, 6 Mar 2019 17:39:28 +0000 (18:39 +0100)]
vici: Correctly parse inactivity timeout as uint32_t

Using parse_time() directly actually overwrites the next member in the
child_cfg_create_t struct, which is start_action, which can cause
incorrect configs if inactivity is parsed after start_action.

Fixes #2954.

23 months agoswanctl: Fix documentation of default value of hostaccess
Tobias Brunner [Thu, 7 Mar 2019 17:49:29 +0000 (18:49 +0100)]
swanctl: Fix documentation of default value of hostaccess

23 months agoandroid: Use helper to parse IP addresses where appropriate
Tobias Brunner [Tue, 5 Mar 2019 18:02:05 +0000 (19:02 +0100)]
android: Use helper to parse IP addresses where appropriate

23 months agoandroid: Add helper to parse IP addresses from strings
Tobias Brunner [Tue, 5 Mar 2019 17:47:33 +0000 (18:47 +0100)]
android: Add helper to parse IP addresses from strings

Using InetAddress.fromName() is not ideal as it might result in a DNS
resolution, which causes an exception if we do it from the main thread.

23 months agoandroid: Make DNS servers configurable in the GUI
Tobias Brunner [Tue, 5 Mar 2019 16:53:57 +0000 (17:53 +0100)]
android: Make DNS servers configurable in the GUI

23 months agoandroid: Import DNS servers
Tobias Brunner [Tue, 5 Mar 2019 16:44:48 +0000 (17:44 +0100)]
android: Import DNS servers

23 months agoandroid: Use configured custom DNS servers
Tobias Brunner [Tue, 5 Mar 2019 16:26:26 +0000 (17:26 +0100)]
android: Use configured custom DNS servers

23 months agoandroid: Add properties for DNS servers
Tobias Brunner [Tue, 5 Mar 2019 15:51:21 +0000 (16:51 +0100)]
android: Add properties for DNS servers

23 months agoandroid: Add menu option to copy a profile
Tobias Brunner [Tue, 5 Mar 2019 15:40:20 +0000 (16:40 +0100)]
android: Add menu option to copy a profile

Some users requests something like that to use different server IPs.
Interestingly, it's actually also possible to configure multiple
hostnames/IPs, separated by commas, as server address in the profile, which
are then tried one after another.

It's also useful when testing stuff to quickly compare the behavior with
some setting changed between two otherwise identical profiles.

23 months agoandroid: Remove buildToolsVersion
Tobias Brunner [Mon, 4 Mar 2019 16:34:30 +0000 (17:34 +0100)]
android: Remove buildToolsVersion

Finally a default is configured and we don't have to update this

23 months agoandroid: Update Gradle plugin
Tobias Brunner [Mon, 4 Mar 2019 16:34:12 +0000 (17:34 +0100)]
android: Update Gradle plugin

23 months agochild-sa: Remove temporary DROP policy using same parameters as when added
Carl Smith [Mon, 4 Mar 2019 01:43:00 +0000 (14:43 +1300)]
child-sa: Remove temporary DROP policy using same parameters as when added

A temporary DROP policy is added to avoid traffic leak
while the SA is being updated. It is added with
manual_prio set but when the temporary policy is removed
it is removed with manual_prio parameter set to 0.
The call to del_policies_outbound does not match the original
policy and we end up with an ever increasing refcount.

If we try to manually remove the policy, it is not removed
due to the positive refcount. Then new SA requests fail with
"unable to install policy out for reqid 1618,
the same policy for reqid 1528 exists"

Fixes: 35ef1b032d24 ("child-sa: Install drop policies while updating IPsec SAs and policies")
Closes strongswan/strongswan#129.

2 years agoload-tester: Update expired CA certificate
Tobias Brunner [Fri, 8 Feb 2019 08:58:03 +0000 (09:58 +0100)]
load-tester: Update expired CA certificate

Closes strongswan/strongswan#126.

2 years agotravis: OpenSSL version bump
Tobias Brunner [Tue, 26 Feb 2019 15:03:28 +0000 (16:03 +0100)]
travis: OpenSSL version bump

2 years agoagent: Don't keep socket to ssh/gpg-agent open
Tobias Brunner [Fri, 1 Feb 2019 08:48:43 +0000 (09:48 +0100)]
agent: Don't keep socket to ssh/gpg-agent open

Instead, create a socket when necessary.  Apparently, it can prevent
the agent from getting terminated (e.g. during system shutdown) if e.g.
charon-nm is still running with an open connection to the agent.

2 years agovici: Fix wrong argument order for terminate_ike() in clear_start_action()
Shmulik Ladkani [Tue, 19 Feb 2019 11:31:11 +0000 (13:31 +0200)]
vici: Fix wrong argument order for terminate_ike() in clear_start_action()

In 7b7290977 ("controller: Add option to force destruction of an IKE_SA")
the 'force' option was added as 3rd parameter to controller_t::terminate_ike.

However in vici's 'clear_start_action', the argument was incorrectly
placed as the 2nd parameter - constantly sending 0 (FALSE) as the
'unique_id' to terminate, rendering calls to 'handle_start_actions'
having undo=TRUE being unable to terminate the relevant conn.

For example, this is log of such a bogus 'unload-conn':

  strongswan[498]: 13[CFG] vici client 96 requests: unload-conn
  strongswan[498]: 13[CFG] closing IKE_SA #9
  strongswan[498]: 13[IKE] unable to terminate IKE_SA: ID 0 not found
  strongswan[498]: 09[CFG] vici client 96 disconnected

here, the unloaded conn's IKE id was 9, alas 'terminate_ike_execute'
reports failure to terminate "ID 0".

Fix by passing 'id, FALSE' arguments in the correct order.

Fixes: 7b7290977 ("controller: Add option to force destruction of an IKE_SA")
Signed-off-by: Shmulik Ladkani <>
Closes strongswan/strongswan#127.

2 years agolibimcv: Add Debian 9.7 to IMV database
Tobias Brunner [Wed, 30 Jan 2019 11:26:19 +0000 (12:26 +0100)]
libimcv: Add Debian 9.7 to IMV database

2 years agokernel-netlink: Fix compilation on old kernels (< 2.6.39)
Tobias Brunner [Fri, 18 Jan 2019 10:00:14 +0000 (11:00 +0100)]
kernel-netlink: Fix compilation on old kernels (< 2.6.39)

2 years agolibtpmtss: Read RSA public key exponent instead of assuming its value
krinfels [Sun, 20 Jan 2019 13:39:08 +0000 (14:39 +0100)]
libtpmtss: Read RSA public key exponent instead of assuming its value

Up to now it was assumed that the RSA public key exponent is equal to 2^16+1.
Although this is probably true in most if not all cases, it is not correct
according to the TPM 2.0 specification.

This patch fixes that by reading the exponent from the structure returned
by TPM2_ReadPublic.

Closes strongswan/strongswan#121.