Tobias Brunner [Fri, 10 Oct 2014 07:48:06 +0000 (09:48 +0200)]
NEWS: IKEv2 fragmentation mentioned
Tobias Brunner [Fri, 10 Oct 2014 07:35:27 +0000 (09:35 +0200)]
Merge branch 'ikev2-fragmentation'
This adds support for IKEv2 fragmentation as per RFC 7383.
Tobias Brunner [Tue, 16 Sep 2014 14:52:23 +0000 (16:52 +0200)]
testing: Add ikev2/net2net-fragmentation scenario
Tobias Brunner [Tue, 16 Sep 2014 14:51:58 +0000 (16:51 +0200)]
testing: Update ikev1/net2net-fragmentation scenario
Tobias Brunner [Tue, 16 Sep 2014 13:51:21 +0000 (15:51 +0200)]
message: Limit maximum number of IKEv2 fragments
The maximum for IKEv1 is already 255 due to the 8-bit fragment number.
With an overhead of 17 bytes (x64) per fragment and a default maximum
of 10000 bytes per packet the maximum memory required is 14 kB
for a fragmented message.
Tobias Brunner [Tue, 16 Sep 2014 13:38:38 +0000 (15:38 +0200)]
packet: Define a global default maximum size for IKE packets
Tobias Brunner [Mon, 15 Sep 2014 15:51:22 +0000 (17:51 +0200)]
message: Ensure a minimum fragment length
Tobias Brunner [Mon, 23 Jun 2014 08:26:04 +0000 (10:26 +0200)]
ikev2: Send retransmits using the latest known addresses
For instance, if a DPD exchange is initiated by the gateway when a
mobile client is roaming and it then gets a new IP address and sends
an address update via MOBIKE, the DPD retransmits would still be sent
to the old address and the SA would eventually get closed.
Tobias Brunner [Mon, 16 Jun 2014 13:50:08 +0000 (15:50 +0200)]
ikev2: Send and receive fragmented IKE messages
If a fragmented message is retransmitted only the first packet is passed
to the alert() hook.
Tobias Brunner [Mon, 16 Jun 2014 13:48:47 +0000 (15:48 +0200)]
ike: IKE_SA may fragment IKEv2 messages
Tobias Brunner [Mon, 16 Jun 2014 13:47:03 +0000 (15:47 +0200)]
ike: Do not cache MID of IKEv2 fragments
This fails if there are unencrypted payloads before an encrypted
fragment payload in the first fragment.
Tobias Brunner [Mon, 16 Jun 2014 13:46:33 +0000 (15:46 +0200)]
message: Fragment and reassemble IKEv2 messages
Tobias Brunner [Mon, 16 Jun 2014 13:38:45 +0000 (15:38 +0200)]
message: Handle encrypted fragment payload similar to the encrypted payload
Tobias Brunner [Mon, 16 Jun 2014 13:29:45 +0000 (15:29 +0200)]
ikev2: Add encrypted fragment payload
Tobias Brunner [Mon, 16 Jun 2014 13:01:28 +0000 (15:01 +0200)]
encrypted_payload: Encrypted payload can be constructed from plaintext
Tobias Brunner [Thu, 12 Jun 2014 19:42:07 +0000 (21:42 +0200)]
encrypted_payload: Expose generate() to generate the plaintext
Tobias Brunner [Thu, 12 Jun 2014 17:04:24 +0000 (19:04 +0200)]
encrypted_payload: Extract some utility functions
Tobias Brunner [Thu, 12 Jun 2014 16:39:30 +0000 (18:39 +0200)]
message: Split generate() in multiple functions
Tobias Brunner [Fri, 6 Jun 2014 14:19:55 +0000 (16:19 +0200)]
ikev2: Negotiate support for IKEv2 fragmentation
Tobias Brunner [Fri, 6 Jun 2014 13:12:16 +0000 (15:12 +0200)]
ikev2: Add notify for IKEv2 fragmentation
Tobias Brunner [Fri, 13 Jun 2014 14:00:59 +0000 (16:00 +0200)]
ikev1: Move defragmentation to message_t
Tobias Brunner [Thu, 12 Jun 2014 14:28:27 +0000 (16:28 +0200)]
ike: Move fragmentation to ike_sa_t
The message() hook on bus_t is now called exactly once before (plain) and
once after fragmenting (!plain), not twice for the complete message and again
for each individual fragment, as was the case in earlier iterations.
For inbound messages the hook is called once for each fragment (!plain)
and twice for the reassembled message.
Tobias Brunner [Thu, 12 Jun 2014 08:14:00 +0000 (10:14 +0200)]
message: fragment() generates message and fragments and caches them
Tobias Brunner [Thu, 12 Jun 2014 08:01:18 +0000 (10:01 +0200)]
message: Make packet argument optional in generate()
Tobias Brunner [Tue, 10 Jun 2014 13:53:11 +0000 (15:53 +0200)]
ikev1: Move fragment generation to message_t
Tobias Brunner [Fri, 6 Jun 2014 14:35:49 +0000 (16:35 +0200)]
ike: Rename encryption_payload to encrypted_payload
Tobias Brunner [Tue, 30 Sep 2014 12:51:20 +0000 (14:51 +0200)]
ipsec: Remove unsupported listcards and rereadgroups commands
Tobias Brunner [Tue, 30 Sep 2014 12:50:32 +0000 (14:50 +0200)]
ipsec: Document missing commands
Tobias Brunner [Tue, 30 Sep 2014 12:49:32 +0000 (14:49 +0200)]
ipsec: Update usage output
Tobias Brunner [Tue, 30 Sep 2014 12:01:25 +0000 (14:01 +0200)]
ipsec: Remove duplicate check for internal commands
Tobias Brunner [Tue, 30 Sep 2014 11:52:39 +0000 (13:52 +0200)]
ipsec: Only set PATH if it is not already set
The comment indicated this but it was always set anyway. All internal
commands are called via their absolute paths, so the script only uses PATH for
the uname command, but if that is not located in one of the configured
directories the script will fail.
Also, since the internal commands are called via their absolute paths there is
no need to add the directories to PATH.
Tobias Brunner [Thu, 2 Oct 2014 10:40:00 +0000 (12:40 +0200)]
ikev1: Fix handling of UNITY_LOAD_BALANCE
The re-authentication is now handled within the original IKE_SA if it has not
yet been established, so we don't want to destroy it.
Tobias Brunner [Thu, 2 Oct 2014 10:28:37 +0000 (12:28 +0200)]
ikev1: Don't queue more than one mode config or XAuth task
At the time we reset an IKE_SA (e.g. when re-authenticating a not yet
established SA due to a roaming event) such tasks might already be queued
by one of the phase 1 tasks. If the SA is initiated again another task will
get queued by the phase 1 task. This results in e.g. multiple mode config
requests, which most gateways will have problems with.
Tobias Brunner [Tue, 7 Oct 2014 10:14:30 +0000 (12:14 +0200)]
testing: Don't check for the actual number of SWID tags in PDP scenarios
The number of SWID tags varies depending on the base image, but lets
assume the number is in the hundreds.
Tobias Brunner [Tue, 7 Oct 2014 10:01:05 +0000 (12:01 +0200)]
testing: Make TNC scenarios agnostic to the actual Debian version
The scenarios will work with new or old base images as long as the version
in use is included as product in the master data (src/libimcv/imv/data.sql).
Tobias Brunner [Tue, 7 Oct 2014 08:47:06 +0000 (10:47 +0200)]
testing: Make TKM related build recipes future-proof
The tkm scenarios recently failed due to a segmentation fault on my host
because I had an old build of the tkm library already built in the build
directory. Because the stamp file was not versioned the new release was
never checked out or built and charon-tkm was linked against the old
version causing a segmentation fault during key derivation.
Andreas Steffen [Mon, 6 Oct 2014 21:14:13 +0000 (23:14 +0200)]
version bump to 5.2.1rc1
Martin Willi [Mon, 6 Oct 2014 16:31:14 +0000 (18:31 +0200)]
Merge branch 'ext-auth'
Integrates the ext-auth plugin by Vyronas Tsingaras. The new child process
abstraction simplifies implementation in both the new ext-auth and the existing
updown plugin, and makes them available on the Windows platform.
Martin Willi [Mon, 6 Oct 2014 10:35:33 +0000 (12:35 +0200)]
NEWS: Mention new ext-auth plugin
Martin Willi [Mon, 6 Oct 2014 09:52:49 +0000 (11:52 +0200)]
ext-auth: Add an ext-auth plugin invoking an external authorization script
Original patch courtesy of Vyronas Tsingaras.
Martin Willi [Thu, 2 Oct 2014 09:48:50 +0000 (11:48 +0200)]
updown: Use process abstraction to invoke updown script
Martin Willi [Mon, 6 Oct 2014 08:52:18 +0000 (10:52 +0200)]
process: Add a wrapper to invoke a command under the system default shell
Martin Willi [Fri, 3 Oct 2014 15:30:19 +0000 (17:30 +0200)]
process: Port child process spawning to the Windows platform
Martin Willi [Thu, 2 Oct 2014 14:17:46 +0000 (16:17 +0200)]
process: Provide an abstraction to spawn child processes with redirected I/O
Andreas Steffen [Mon, 6 Oct 2014 07:42:58 +0000 (09:42 +0200)]
testing: Updated certificates and keys in sql scenarios
Andreas Steffen [Sun, 5 Oct 2014 21:00:19 +0000 (23:00 +0200)]
Added IF-M Segmentation support to NEWS
Andreas Steffen [Sun, 5 Oct 2014 20:52:59 +0000 (22:52 +0200)]
Incremental parsing fixes
Andreas Steffen [Sun, 5 Oct 2014 19:33:35 +0000 (21:33 +0200)]
Updated revoked certificate in ikev2/ocsp-revoked scenario
Andreas Steffen [Sun, 5 Oct 2014 18:58:03 +0000 (20:58 +0200)]
The critical-extension scenarios need the old private keys
Andreas Steffen [Sun, 5 Oct 2014 17:43:27 +0000 (19:43 +0200)]
Added add_segment() method to TCG/PTS attributes
Andreas Steffen [Sun, 5 Oct 2014 17:14:38 +0000 (19:14 +0200)]
Added add_segment() method to TCG/SEG attributes
Andreas Steffen [Sun, 5 Oct 2014 16:40:24 +0000 (18:40 +0200)]
OS IMV proposes IF-M segmentation contract
The OS IMV sends a TCG IF-M Segmentation contract request.
All IETF standard attributes support segmentation. Additionally
the IETF Installed Packages standard attributes supports
incremental processing while segments are received.
Andreas Steffen [Sun, 5 Oct 2014 10:54:43 +0000 (12:54 +0200)]
SWID IMC proposes IF-M segmentation contracts
Andreas Steffen [Fri, 3 Oct 2014 20:19:22 +0000 (22:19 +0200)]
unit-tests: Updated libimcv test suite
Andreas Steffen [Fri, 3 Oct 2014 20:17:47 +0000 (22:17 +0200)]
Added add_segment() method to IETF attributes
Andreas Steffen [Fri, 3 Oct 2014 19:03:23 +0000 (21:03 +0200)]
Added add_segment() method to ITA attributes
Andreas Steffen [Thu, 2 Oct 2014 19:32:36 +0000 (21:32 +0200)]
Implemented incremental processing of SWID tag [ID] inventory attribute
Andreas Steffen [Wed, 1 Oct 2014 21:11:30 +0000 (23:11 +0200)]
Implemented add_segment method for PA-TNC attributes
Andreas Steffen [Fri, 26 Sep 2014 11:24:33 +0000 (13:24 +0200)]
Added total length parameter in PA-TNC attribute constructor
Andreas Steffen [Mon, 1 Sep 2014 05:37:10 +0000 (07:37 +0200)]
Assignment of flags starts with bit 0
Andreas Steffen [Sat, 30 Aug 2014 11:33:59 +0000 (13:33 +0200)]
Register the reception of the AIK attribute
Andreas Steffen [Sat, 30 Aug 2014 10:58:09 +0000 (12:58 +0200)]
Unit tests for libimcv
Andreas Steffen [Sat, 30 Aug 2014 10:35:08 +0000 (12:35 +0200)]
Compacted chunk creation in ita_attr_command constructor
Andreas Steffen [Fri, 29 Aug 2014 10:18:21 +0000 (12:18 +0200)]
Merged libpts into libimcv
Andreas Steffen [Fri, 29 Aug 2014 04:23:16 +0000 (06:23 +0200)]
Added out message queue for imv_msg receive method
Andreas Steffen [Thu, 28 Aug 2014 19:14:13 +0000 (21:14 +0200)]
Implemented IF-M segmentation
Andreas Steffen [Tue, 19 Aug 2014 05:42:40 +0000 (07:42 +0200)]
Added request variable to get_info_string method
Andreas Steffen [Tue, 5 Aug 2014 16:36:03 +0000 (18:36 +0200)]
Implemented IF-M segmentation contracts
Andreas Steffen [Thu, 17 Jul 2014 13:16:38 +0000 (15:16 +0200)]
Allow to treat specified Attribute-Type-Not-Supported errors as non-fatal
Tobias Brunner [Fri, 3 Oct 2014 10:32:23 +0000 (12:32 +0200)]
testing: Updated swanctl certificates and keys
Tobias Brunner [Fri, 3 Oct 2014 10:20:37 +0000 (12:20 +0200)]
testing: Wait a bit in swanctl scenarios before interacting with the daemon
Tobias Brunner [Fri, 3 Oct 2014 10:16:03 +0000 (12:16 +0200)]
testing: Actually build swanctl
Tobias Brunner [Fri, 3 Oct 2014 10:04:53 +0000 (12:04 +0200)]
testing: Make sure the whitelist plugin is ready before configuring it
Tobias Brunner [Fri, 3 Oct 2014 10:04:32 +0000 (12:04 +0200)]
testing: Update PKCS#12 containers
Tobias Brunner [Fri, 3 Oct 2014 09:53:35 +0000 (11:53 +0200)]
testing: Update PKCS#8 keys
Tobias Brunner [Fri, 3 Oct 2014 09:34:49 +0000 (11:34 +0200)]
testing: Update public keys in DNSSEC scenarios
The tests are successful even if the public keys are not stored locally,
but an additional DNS query is required to fetch them.
Tobias Brunner [Fri, 3 Oct 2014 09:30:57 +0000 (11:30 +0200)]
testing: Update public keys and certificates in DNS zone
Tobias Brunner [Fri, 3 Oct 2014 09:22:11 +0000 (11:22 +0200)]
testing: Update carols certificate in several test cases
Martin Willi [Fri, 3 Oct 2014 10:31:01 +0000 (12:31 +0200)]
testing: Add some notes about how to reissue attribute certificates
Martin Willi [Fri, 3 Oct 2014 10:26:56 +0000 (12:26 +0200)]
testing: Reissue attribute certificates for the new holder certificates
Due to the expired and reissued holder certificates of carol and dave, new
attribute certificates are required to match the holder certificates serial in
the ikev2/acert-{cached,fallback,inline} tests.
Shea Levy [Tue, 30 Sep 2014 19:14:47 +0000 (15:14 -0400)]
starter: Allow specifying the ipsec.conf location in strongswan.conf
Shea Levy [Tue, 30 Sep 2014 19:11:03 +0000 (15:11 -0400)]
stroke: Allow specifying the ipsec.secrets location in strongswan.conf
Shea Levy [Tue, 30 Sep 2014 18:31:50 +0000 (14:31 -0400)]
library: Allow specifying the path to strongswan.conf in the STRONGSWAN_CONF env var
Shea Levy [Fri, 19 Sep 2014 18:32:22 +0000 (14:32 -0400)]
Don't fail to install if sysconfdir isn't writable
Martin Willi [Thu, 25 Sep 2014 15:09:53 +0000 (17:09 +0200)]
ikev1: Be more verbose if a peer config would match, but is unusable for Mode
Tobias Brunner [Fri, 19 Sep 2014 11:44:16 +0000 (13:44 +0200)]
ikev2: Reorder task activation for established IKE SAs
We now prefer MOBIKE tasks over delete tasks then the rest.
Tobias Brunner [Fri, 19 Sep 2014 11:40:14 +0000 (13:40 +0200)]
Revert "ikev2: Insert MOBIKE tasks at the front of the queue"
This reverts commit
3293d146289d7c05e6c6089ae1f7cdbcea378e63.
The position of tasks in the queue does not actually determine the order
in which they are activated. Instead this is determined by the
statements in task_manager_v2_t.initiate().
Martin Willi [Wed, 24 Sep 2014 15:37:13 +0000 (17:37 +0200)]
Merge branch 'curl-features'
Enable missing https:// support in the curl plugin by initializing libcurl
appropriately.
To initialize the SSL backend properly as required, we rely on our specific
crypto backends (openssl, gcrypt) that already provide this functionality.
Fixes #692.
Martin Willi [Wed, 24 Sep 2014 13:53:46 +0000 (15:53 +0200)]
travis: Disable soup in "all" test
On Ubuntu 12.04, there seems to be a resource leak related to pthread keys
when initializing glib or related libraries more than once. With our repeated
initialization for libstrongswan tests, we hit the following error:
Lib (gthread-posix.c): Unexpected error from C library during
'pthread_key_create': Resource temporarily unavailable.
The problem is not reproducible on a newer Gnome stack, hence we disable the
glib based soup plugin until we have a more recent Ubuntu on Travis.
Martin Willi [Wed, 24 Sep 2014 11:13:19 +0000 (13:13 +0200)]
curl: For SSL features, depend on thread-safety provided by our crypto plugins
To use SSL in curl, we need to initialize the SSL library in a thread-safe
manner and provide the appropriate callbacks. As we already do that in our
crypto plugins using these libraries, we depend on these features.
This implies that we need the same plugin enabled (openssl, gcrypt) as the
curl backend is configured to use to fetch from HTTPS URIs.
Martin Willi [Wed, 24 Sep 2014 10:24:13 +0000 (12:24 +0200)]
configure: Load fetcher plugins after crypto base plugins
Some fetcher plugins (such as curl) might build upon OpenSSL to implement
HTTPS fetching. As we set (and can't unset) threading callbacks in our
openssl plugin, we must ensure that OpenSSL functions don't get called after
openssl plugin unloading.
We achieve that by loading curl and all other fetcher plugins after the base
crypto plugins, including openssl.
Martin Willi [Thu, 28 Aug 2014 09:11:12 +0000 (11:11 +0200)]
curl: Dynamically query supported protocols and register appropriate features
Martin Willi [Thu, 28 Aug 2014 09:10:21 +0000 (11:10 +0200)]
leak-detective: Whitelist libssl SSL_COMP_get_compression_methods()
This function is called by libcurl initialization with SSL, and uses
a static allocation of compression algorithms not freed.
Martin Willi [Thu, 28 Aug 2014 09:09:26 +0000 (11:09 +0200)]
curl: Try to initialize with SSL support to handle https:// URIs
If initialization fails, we fall back to the old behavior.
Martin Willi [Wed, 24 Sep 2014 09:35:03 +0000 (11:35 +0200)]
NEWS: Introduce charon-systemd
Martin Willi [Wed, 24 Sep 2014 09:20:53 +0000 (11:20 +0200)]
Merge branch 'netlink-cleanups'
In preparation for larger parallelization changes in kernel-netlink, this
merge does some general code cleanup in that plugin.
Martin Willi [Thu, 10 Jul 2014 14:27:18 +0000 (16:27 +0200)]
watcher: Add a method to query the watcher state
This allows a user to check if the watcher is actually running, and potentially
perform read operations directly instead of relying on watcher.
Martin Willi [Thu, 10 Jul 2014 16:01:21 +0000 (18:01 +0200)]
kernel-netlink: Define and use rtnetlink message types
Martin Willi [Thu, 10 Jul 2014 12:21:20 +0000 (14:21 +0200)]
kernel-netlink: Pass protocol specific enum names to socket constructor
This avoid the hard dependency on enum names, and makes kernel_netlink_shared
independent of kernel_netlink_ipsec.
Martin Willi [Wed, 9 Jul 2014 14:47:06 +0000 (16:47 +0200)]
kernel-netlink: Clean up socket initialization, handle 0 as valid socket fd