Martin Willi [Wed, 19 Feb 2014 14:08:11 +0000 (15:08 +0100)]
vici: Add a load-shared command to load shared IKE and EAP secrets
Martin Willi [Wed, 19 Feb 2014 12:08:10 +0000 (13:08 +0100)]
vici: Add a load-key command to load private keys
Martin Willi [Wed, 19 Feb 2014 09:51:09 +0000 (10:51 +0100)]
vici: Support loading of different certificate types
Martin Willi [Wed, 19 Feb 2014 09:20:19 +0000 (10:20 +0100)]
vici: Add a credential backend
Martin Willi [Tue, 18 Feb 2014 14:34:13 +0000 (15:34 +0100)]
vici: Add a command listing all or specific loaded connections using events
Martin Willi [Tue, 18 Feb 2014 14:32:43 +0000 (15:32 +0100)]
vici: Add unload-conn and get-conns commands to manage loaded connections
Martin Willi [Tue, 18 Feb 2014 10:58:28 +0000 (11:58 +0100)]
vici: Make dispatcher a little more verbose
Martin Willi [Mon, 17 Feb 2014 17:28:53 +0000 (18:28 +0100)]
vici: Add backend providing in-memory connections
Martin Willi [Mon, 17 Feb 2014 17:27:45 +0000 (18:27 +0100)]
vici: Add generic callback based vici message parsing
Martin Willi [Thu, 13 Feb 2014 15:12:21 +0000 (16:12 +0100)]
vici: Add a list-policy command to query trap and shunt policies
Martin Willi [Thu, 13 Feb 2014 14:20:34 +0000 (15:20 +0100)]
vici: Add install/uninstall commands to manage trap and shunt policies
Martin Willi [Thu, 13 Feb 2014 14:20:05 +0000 (15:20 +0100)]
vici: Extract CHILD_SA config lookup method
Martin Willi [Wed, 12 Feb 2014 16:55:38 +0000 (17:55 +0100)]
vici: Refactor socket to clean up locking
Uses separate locks for socket read and write operations. While holding the
socket reader lock, a different thread can still claim the socket write lock.
This allows to asynchronously send event messages while holding the read
lock.
Martin Willi [Thu, 13 Feb 2014 08:44:34 +0000 (09:44 +0100)]
vici: Fix dispatcher leak when handling unknown request
Martin Willi [Thu, 13 Feb 2014 08:43:32 +0000 (09:43 +0100)]
vici: Add a test case raising events during request, checks in-order delivery
Martin Willi [Wed, 12 Feb 2014 16:55:05 +0000 (17:55 +0100)]
vici: Avoid recursive control log invocations
Martin Willi [Wed, 12 Feb 2014 14:37:06 +0000 (15:37 +0100)]
vici: Add a callback based recursive parser function
Martin Willi [Tue, 11 Feb 2014 16:41:05 +0000 (17:41 +0100)]
vici: Add a version command to print daemon and OS version info
Martin Willi [Tue, 11 Feb 2014 16:14:22 +0000 (17:14 +0100)]
vici: Implement a terminate command to close IKE or CHILD_SAs
Martin Willi [Mon, 10 Feb 2014 16:10:54 +0000 (17:10 +0100)]
vici: Add a control backend, currently to initiate connections by name
Martin Willi [Tue, 11 Feb 2014 14:09:08 +0000 (15:09 +0100)]
vici: Support thread cancellation in command callbacks
Martin Willi [Tue, 11 Feb 2014 13:36:42 +0000 (14:36 +0100)]
vici: Move dumping to core message class, use it in libvici
Martin Willi [Tue, 11 Feb 2014 13:09:14 +0000 (14:09 +0100)]
vici: Add convenience value/string/integer getter to libvici
Martin Willi [Mon, 10 Feb 2014 16:09:52 +0000 (17:09 +0100)]
vici: Add some convenience getters on message
Martin Willi [Mon, 10 Feb 2014 16:09:01 +0000 (17:09 +0100)]
vici: Raise events with an optional identifier for specific connections
Martin Willi [Mon, 10 Feb 2014 16:04:35 +0000 (17:04 +0100)]
vici: Invoke dispatcher outside of connection log, allowing events from commands
Martin Willi [Fri, 24 Jan 2014 16:15:49 +0000 (17:15 +0100)]
vici: Add a query class, currently implementing a list-sas command
Martin Willi [Wed, 29 Jan 2014 10:20:20 +0000 (11:20 +0100)]
vici: Add a libvici low-level client library
Martin Willi [Thu, 23 Jan 2014 14:32:23 +0000 (15:32 +0100)]
vici: Provide a command dispatcher handling request and event registration
Martin Willi [Tue, 21 Jan 2014 16:53:15 +0000 (17:53 +0100)]
vici: Add a fully asynchronous IPC socket segmenting messages on/from stream
Martin Willi [Tue, 21 Jan 2014 13:39:35 +0000 (14:39 +0100)]
vici: Add a test runner for plugin
Martin Willi [Mon, 20 Jan 2014 09:59:21 +0000 (10:59 +0100)]
vici: Add a plugin stub for the "Versatile IKE Control Interface" plugin
Martin Willi [Wed, 19 Feb 2014 13:29:42 +0000 (14:29 +0100)]
mem-cred: Replace existing equal shared keys during add_shared()
Martin Willi [Wed, 19 Feb 2014 13:21:10 +0000 (14:21 +0100)]
mem-cred: Replace existing equal private keys during add_key()
Martin Willi [Mon, 10 Mar 2014 09:48:27 +0000 (10:48 +0100)]
watcher: Don't wait for running callback once watcher thread cancelled
During shutdown, waiting for callbacks might never complete, as queued
callbacks might not get executed under certain conditions. Not the clean fix,
but works good enough for now.
Seen on Windows in vici tests.
Martin Willi [Tue, 18 Feb 2014 16:54:34 +0000 (17:54 +0100)]
watcher: Avoid queueing multiple watcher callbacks at the same time
While we don't add FDs with an active callback to the watched FDSET, we still
can get notifications for callbacks active due the asynchronous processing
of the same.
To avoid queue multiple callbacks, we check for queued callbacks before
activating new ones.
Martin Willi [Tue, 11 Feb 2014 14:41:49 +0000 (15:41 +0100)]
processor: Flush pending jobs during cancel(), not destroy
During shutdown, cancel queued jobs earlier to avoid having cleanup functions
accessing infrastructure not available anymore, for example watcher.
Martin Willi [Wed, 22 Jan 2014 15:55:27 +0000 (16:55 +0100)]
utils: Provide a CALLBACK macro, similar to METHOD, but for void* callbacks
Using the same mechanism as the METHOD macro, the CALLBACK macro defines
a hybrid function signature. It strictly uses a weak void* for the first
function parameter, in contrast to the dynamic METHOD object "this" type.
Martin Willi [Wed, 7 May 2014 12:11:35 +0000 (14:11 +0200)]
travis: --disable-aikgen in "all" tests
aikgen has a hard dependency on TrouSerS, which we currently don't have in the
travis build.
Andreas Steffen [Sun, 4 May 2014 19:37:05 +0000 (21:37 +0200)]
Updated NEWS for 5.2.0dr2 release
Tobias Brunner [Fri, 2 May 2014 15:58:26 +0000 (17:58 +0200)]
utils: Enable __atomic* built-ins based on the GCC version
This solves a problem with GNAT when compiling charon-tkm as __atomic*
built-ins are only provided in GCC 4.7 and newer.
Currently GNAT 4.6 and GCC 4.7.2 is shipped with Debian wheezy (stable),
as used in the testing environment. So while the configure script correctly
detected the __atomic* built-ins, and defined HAVE_GCC_ATOMIC_OPERATIONS,
this define turned out to be incorrect when charon-tkm was later built
with GNAT.
Andreas Steffen [Fri, 2 May 2014 18:10:53 +0000 (20:10 +0200)]
aikgen generates AIK private/public key pairs
aikgen outputs a binary AIK private key blob and the AIK public key.
Optionally the Identity Request encrypted with the public key of
the Privacy CA can be output.
Andreas Steffen [Fri, 2 May 2014 17:50:43 +0000 (19:50 +0200)]
Added PUBKEY_RSA_MODULUS encoding type
Andreas Steffen [Thu, 1 May 2014 20:16:34 +0000 (22:16 +0200)]
Extended Ubuntu 14.04 database build
Andreas Steffen [Thu, 1 May 2014 20:13:06 +0000 (22:13 +0200)]
Moved BIOS and IMA measurement lists into classes of their own
Andreas Steffen [Thu, 1 May 2014 15:00:42 +0000 (17:00 +0200)]
Added NEWS for 5.2.0dr2
Andreas Steffen [Thu, 1 May 2014 15:00:04 +0000 (17:00 +0200)]
Fixed typo
Andreas Steffen [Thu, 1 May 2014 14:58:59 +0000 (16:58 +0200)]
Use global status variable for IMA runtime
Andreas Steffen [Wed, 30 Apr 2014 15:23:20 +0000 (17:23 +0200)]
Similar statistics for packages and file measurements
Andreas Steffen [Wed, 30 Apr 2014 13:46:37 +0000 (15:46 +0200)]
Updated build_database.sh to Ubuntu 14.04
Andreas Steffen [Tue, 29 Apr 2014 16:57:55 +0000 (18:57 +0200)]
Updated ITA-IMA finalize messages
Andreas Steffen [Mon, 28 Apr 2014 08:02:06 +0000 (10:02 +0200)]
Implemented IMA-NG support
Martin Willi [Wed, 30 Apr 2014 15:23:07 +0000 (17:23 +0200)]
Merge branch 'unit-tests'
Bring some minor improvements to unit testing, including more flexible
configuration.
Martin Willi [Thu, 13 Feb 2014 07:59:28 +0000 (08:59 +0100)]
unit-tests: Document the supported env variables
Thomas Egerer [Thu, 13 Feb 2014 07:55:13 +0000 (08:55 +0100)]
unit-tests: Support strongswan.conf defined plugin list and base directory
tests.load and tests.plugindir to allow the specification of the plugins
to be loaded and the directory to load them from.
Signed-off-by: Thomas Egerer <thomas.egerer@secunet.com>
Thomas Egerer [Thu, 13 Feb 2014 07:54:08 +0000 (08:54 +0100)]
unit-tests: Allow configuration of libstrongswan via config
By setting the environment variable TESTS_STRONGSWAN_CONF, the unit tests can
be asked to load a configuration file, thus enabling the tester to make use of
the usual configuration settings.
Signed-off-by: Thomas Egerer <thomas.egerer@secunet.com>
Martin Willi [Tue, 11 Feb 2014 12:55:56 +0000 (13:55 +0100)]
unit-tests: Add a ck_assert_chunk_eq() convenience macro
Martin Willi [Thu, 13 Feb 2014 10:41:16 +0000 (11:41 +0100)]
unit-tests: Silence a literal signedness warning raised by GCC 4.6.3
Tobias Brunner [Wed, 30 Apr 2014 07:30:17 +0000 (09:30 +0200)]
sqlite: Allow query arguments to be freed before starting the enumeration
By marking the string/blob arguments as transient, SQLite will copy and
free them automatically.
Andreas Steffen [Sun, 27 Apr 2014 17:15:11 +0000 (19:15 +0200)]
Version bump to 5.2.0dr2
Andreas Steffen [Sun, 27 Apr 2014 17:13:15 +0000 (19:13 +0200)]
Improved finalize messages in ITA-IMA component
Tobias Brunner [Fri, 25 Apr 2014 16:58:55 +0000 (18:58 +0200)]
child-cfg: Fix removal of redundant traffic selectors
We have to make sure we compare every selected traffic selector with every
other in the list.
Fixes #577.
Tobias Brunner [Fri, 25 Apr 2014 12:38:46 +0000 (14:38 +0200)]
android: New release based on 5.1.3
Also links OpenSSL statically and doesn't limit the number of packets
during EAP-TTLS.
Tobias Brunner [Fri, 25 Apr 2014 12:26:01 +0000 (14:26 +0200)]
libcharon: Added AEAD sources of libtls to Android.mk
Tobias Brunner [Fri, 25 Apr 2014 12:19:09 +0000 (14:19 +0200)]
libimcv: Updated Android.mk
Tobias Brunner [Thu, 27 Mar 2014 17:04:18 +0000 (18:04 +0100)]
android: Use static version of libcrypto
System.loadLibrary() searches in system directories first (at least in
recent releases), that is, our own build wouldn't actually get used.
Tobias Brunner [Fri, 25 Apr 2014 09:28:52 +0000 (11:28 +0200)]
tun-device: Use SIOCAIFADDR to set IP address on FreeBSD 10
FreeBSD 10 deprecated the SIOCSIFADDR etc. commands, so we use this
newer command to set the address and netmask. A destination address
is now also required.
Fixes #566.
Tobias Brunner [Thu, 24 Apr 2014 15:55:25 +0000 (17:55 +0200)]
Merge branch 'atomic-ref'
Adds support for GCC's __atomic* built-ins and improves the performance
of logging (for ignored log levels) and half-open IKE_SA checking under
high loads.
Also fixes two potential race conditions in the load-tester plugin.
Tobias Brunner [Thu, 17 Apr 2014 08:47:32 +0000 (10:47 +0200)]
bus: Add a fast-path if log messages don't have to be logged
For some rwlock_t implementations acquiring the read lock could be quite
expensive even if there are no writers (e.g. because the implementation
requires acquiring a mutex to check for writers) particularly if the
lock is highly contended, like it is for the vlog() method.
Christophe Gouault [Tue, 8 Apr 2014 15:11:14 +0000 (17:11 +0200)]
load-tester: Fix race condition issuing same SPI
Due to an unprotected incrementation, two load-tester initiators occasionally
use the same SPI under high load, and hence generate 2 IPsec SAs with the same
identifier. The responder IPsec stack will refuse to configure the second SA.
Use an atomic incrementation to avoid this race condition.
Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
Christophe Gouault [Tue, 8 Apr 2014 15:11:13 +0000 (17:11 +0200)]
load-tester: Fix race condition issuing same identity
Due to an unprotected incrementation, two load-tester initiators occasionally
use the same identifier under high load. The responder typically drops one of
the connections.
Use an atomic incrementation to avoid this race condition.
Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
Tobias Brunner [Fri, 11 Apr 2014 14:23:39 +0000 (16:23 +0200)]
ike-sa-manager: Improve scalability of half-open IKE_SA checking
This patch is based on one by Christoph Gouault.
Currently, to count the total number of half_open IKE_SAs,
get_half_open_count sums up the count of each segment in the SA hash
table (acquiring a lock for each segment). This procedure does not scale
well when the number of segments increases, as the method is called for
each new negotiation.
Instead, lets maintain a global atomic counter.
This optimization allows the use of big values for charon.ikesa_table_size
and charon.ikesa_table_segments.
Tobias Brunner [Fri, 11 Apr 2014 14:07:32 +0000 (16:07 +0200)]
utils: Use GCC's __atomic built-ins if available
These are available since GCC 4.7 and will eventually replace the __sync
operations. They support the memory model defined by C++11. For instance,
by using __ATOMIC_RELAXED for some operations on the reference counters we
can avoid memory barriers, which are required by __sync operations (whose
memory model essentially is __ATOMIC_SEQ_CST).
Tobias Brunner [Fri, 11 Apr 2014 13:13:22 +0000 (15:13 +0200)]
utils: Add ref_cur() to retrieve the current value of a reference counter
On many architectures it is safe to read the value directly (those
using cache coherency protocols, and with atomic loads for 32-bit
values) but it is not if that's not the case or if we ever decide to
make refcount_t 64-bit (load not atomic on x86).
So make sure the operation is actually atomic and that users do not
have to care about the size of refcount_t.
Tobias Brunner [Tue, 22 Apr 2014 14:27:41 +0000 (16:27 +0200)]
testing: Added pfkey/compress test case
Francois ten Krooden [Tue, 22 Apr 2014 13:34:41 +0000 (15:34 +0200)]
kernel-pfkey: Added IPComp support
- get_cpi function was implemented to retrieve a CPI from the kernel.
- add_sa/update_sa/del_sa were updated to accommodate for IPComp SA.
- Updated add_policy_internal to update the SPD to support IPComp.
Martin Willi [Thu, 24 Apr 2014 13:45:30 +0000 (15:45 +0200)]
packages: New Debian network-manager-strongswan release
Martin Willi [Thu, 24 Apr 2014 13:40:56 +0000 (15:40 +0200)]
packages: Hand over network-manager-strongswan debian package maintenance
Martin Willi [Thu, 24 Apr 2014 13:34:50 +0000 (15:34 +0200)]
packages: Use charon-nm in network-manager-strongswan debian package
Martin Willi [Thu, 24 Apr 2014 13:38:21 +0000 (15:38 +0200)]
nm: Bump NetworkManager plugin version to 1.3.1
Andreas Steffen [Thu, 24 Apr 2014 07:08:07 +0000 (09:08 +0200)]
pacman.sh now fetches Ubuntu 14.04 security updates
Martin Willi [Thu, 17 Apr 2014 08:14:49 +0000 (10:14 +0200)]
Merge branch 'reauth-collision'
Fixes two collisions between IKE_SA re-authentication and CHILD_SA rekeying.
Martin Willi [Thu, 10 Apr 2014 09:31:17 +0000 (11:31 +0200)]
ike: Delay actively initiated reauthentication when other exchanges in progress
If any other IKE or CHILD_SA operation takes places, we should not start
initiating reauthentication to avoid any potential races.
Martin Willi [Thu, 10 Apr 2014 09:25:32 +0000 (11:25 +0200)]
ikev2: Reject CHILD_SA creation/rekeying while deleting an IKE_SA
If one peer starts reauthentication by deleting the IKE_SA, while the other
starts CHILD_SA rekeying, we run in a race condition. To avoid it, temporarily
reject the rekey attempt while we are in the IKE_SA deleting state.
RFC 4306/5996 is not exactly clear about this collision, but it should be safe
to reject CHILD_SA rekeying during this stage, as the reauth will re-trigger the
CHILD_SA. For non-rekeying CHILD_SA creations, it's up to the peer to retry
establishing the CHILD_SA on the reauthenticated IKE_SA.
Martin Willi [Thu, 10 Apr 2014 08:24:34 +0000 (10:24 +0200)]
ikev2: Apply extensions and conditions before starting rekeying
The extensions and conditions apply to the rekeyed IKE_SA as well, so we should
migrate them. Especially when using algorithms from private space, we need
EXT_STRONGSWAN to properly select these algorithms during IKE rekeying.
Martin Willi [Thu, 10 Apr 2014 08:21:32 +0000 (10:21 +0200)]
ikev2: Add inherit_pre() to apply config and hosts before IKE_SA rekeying
Martin Willi [Mon, 14 Apr 2014 12:42:27 +0000 (14:42 +0200)]
ikev1: Add an option to accept unencrypted ID/HASH payloads
Even in Main Mode, some Sonicwall boxes seem to send ID/HASH payloads in
unencrypted form, probably to allow PSK lookup based on the ID payloads. We
by default reject that, but accept it if the
charon.accept_unencrypted_mainmode_messages option is set in strongswan.conf.
Initial patch courtesy of Paul Stewart.
Tobias Brunner [Tue, 15 Apr 2014 14:00:47 +0000 (16:00 +0200)]
ikev2: Fix reauthentication if peer assigns a different virtual IP
Before this change a reqid set on the create_child_t task was used as
indicator of the CHILD_SA being rekeyed. Only if that was not the case
would the local traffic selector be changed to 0.0.0.0/0|::/0 (as we
don't know which virtual IP the gateway will eventually assign).
On the other hand, in case of a rekeying the VIP is expected to remain
the same, so the local TS would simply equal the VIP.
Since
c949a4d5016e33c5 reauthenticated CHILD_SAs also have the reqid
set. Which meant that the local TS would contain the previously
assigned VIP, basically rendering the gateway unable to assign a
different VIP to the client as the resulting TS would not match
the client's proposal anymore.
Fixes #553.
Andreas Steffen [Tue, 15 Apr 2014 08:04:27 +0000 (10:04 +0200)]
Added NEWS for 5.2.0dr1
Andreas Steffen [Tue, 15 Apr 2014 06:55:11 +0000 (08:55 +0200)]
Handle tag separators
Andreas Steffen [Mon, 14 Apr 2014 20:52:26 +0000 (22:52 +0200)]
Renewed expired user certificate
Andreas Steffen [Mon, 14 Apr 2014 09:26:08 +0000 (11:26 +0200)]
Updated SWID scenarios
Andreas Steffen [Mon, 14 Apr 2014 09:25:41 +0000 (11:25 +0200)]
swid_generator software-id does not generate empty lines any more
Andreas Steffen [Sat, 12 Apr 2014 08:56:16 +0000 (10:56 +0200)]
Added result information to TPMRA workitems
On the occasion got rid of complicated functional component stuff
Andreas Steffen [Fri, 11 Apr 2014 14:58:08 +0000 (16:58 +0200)]
Indicate IMV in assessment log statement
Andreas Steffen [Fri, 11 Apr 2014 14:30:55 +0000 (16:30 +0200)]
Implemented segmented SWID tag attributes on IMV side
Andreas Steffen [Thu, 10 Apr 2014 08:25:39 +0000 (10:25 +0200)]
Use python-based swidGenerator to generated SWID tags
Andreas Steffen [Mon, 7 Apr 2014 13:17:32 +0000 (15:17 +0200)]
Updated imv database templates
Andreas Steffen [Sun, 6 Apr 2014 05:18:28 +0000 (07:18 +0200)]
Optimized PTS measurements
Andreas Steffen [Sat, 5 Apr 2014 14:11:13 +0000 (16:11 +0200)]
Use cached pid for product-based package access