Commit Graph
100 Commits
Author SHA1 Message Date
Martin Willi f572b38816 kernel-netlink: Add a stub for a test-runner 2014-11-21 10:55:44 +01:00
Martin Willi 8131d180a8 Merge branch 'policy-constraints'
Fixes handling of invalid policies in end entity certificates by not rejecting
the full certificate, but just invalidating the affected policy. Additionally
adds a bunch of unit tests for the constraints plugin, and some minor fixes
to the nameConstraints handling.

Currently we still reject CAs that use invalid policy mapping; we should accept
such certificates and just invalid affected policies in a next iteration.

Fixes #453.
2014-10-30 11:42:04 +01:00
Martin Willi b9d38c9fa2 pki: Print and document the name constraint type for DNS or email constraints
As email constraints may be for a specific host, it is not clear from the
name itself if it is a DNS or email constraint.
2014-10-30 11:40:48 +01:00
Martin Willi a6c8647eca constraints: Add permitted/excludedNameConstraints check 2014-10-30 11:40:48 +01:00
Martin Willi 7e80995c59 constraints: Use a more specific FQDN/email name constraint matching
While RFC 5280 is not very specific about the matching rules of subjectAltNames,
it has some examples how to match email and FQDN constraints. We try to follow
these examples, and restrict DNS names to subdomain matching and email to
full email, host or domain matching.
2014-10-30 11:40:47 +01:00
Martin Willi 6733109d0e constraints: Add requireExplicitPolicy tests 2014-10-30 11:40:47 +01:00
Martin Willi 3b25be0e57 constraints: Add inhibitAnyPolicy tests 2014-10-30 11:40:47 +01:00
Martin Willi af37fac9a8 constraints: Add inhibitPolicyMapping tests 2014-10-30 11:40:47 +01:00
Martin Willi 69232e2d3d constraints: Don't reject certificates with invalid certificate policies
Instead of rejecting the certificate completely if a certificate has a policy
OID that is actually not allowed by the issuer CA, we accept it. However, the
certificate policy itself is still considered invalid, and is not returned
in the auth config resulting from trust chain operations.

A user must make sure to rely on the returned auth config certificate policies
instead of the policies contained in the certificate; even if the certificate
is valid, the policy OID itself in the certificate are not to be trusted
anymore.
2014-10-30 11:32:19 +01:00
Martin Willi 885646acd3 constraints: Add certificate policy and policy mapping unit tests 2014-10-30 11:32:19 +01:00
Martin Willi 34fed1538b Merge branch 'id-type-prefix'
Introduce generic identity prefixes to enforce a specific type.
2014-10-30 11:21:22 +01:00
Martin Willi 045501d598 NEWS: Mention identity prefixes 2014-10-30 11:21:01 +01:00
Martin Willi 9da2b19189 swanctl: Document identity type prefixes 2014-10-30 11:07:10 +01:00
Martin Willi 9388bf1363 man: Document identification type prefixes in ipsec.conf(5) 2014-10-30 11:07:10 +01:00
Martin Willi 6528338753 identification: Support custom types in string constructor prefixes 2014-10-30 11:07:08 +01:00
Martin Willi c0da835a9f identification: Support prefixes in string constructors for an explicit type 2014-10-30 11:05:44 +01:00
Martin Willi 46001e1131 unit-tests: Re-align identification_create_from_string() unit test table data 2014-10-30 11:03:48 +01:00
Martin Willi 61e29aca0d threading: Support rwlock try_write_lock() on Windows
We explicitly avoided TryAcquireSRWLockExclusive() because of crashes. This
issue was caused by a MinGW-w64 bug (mingw-w64 fix 46f77afc). Using a newer
toolchain works fine.

While try_write_lock() obviously can fail, not supporting it is not really an
option, as some algorithms depend on occasionally successful calls. Certificate
caching in the certificate manager and the cred_set cache rely on successful
try_write_lock()ing.
2014-10-30 10:45:24 +01:00
Martin Willi 6a3f0467e4 threading: Add a more explicit rwlock try_write_lock() testing 2014-10-30 10:45:24 +01:00
Martin Willi 4736ba0657 updown: Explicitly pass caller PATH to updown script
When invoking /bin/sh, its default PATH is used. On some systems, that does
not include the PATH where the ipsec script is installed, as charon is invoked
with a custom PATH. Explicitly setting the PATH of charon should fix this
case, properly invoking the (default) updown script.

Fixes #745.
2014-10-22 14:53:36 +02:00
Martin Willi cbb86a2df3 tls: Fix an invalid free on CBC encryption failure 2014-10-15 14:26:03 +02:00
Martin Willi 867d04b72e tls: Fix a memory leak if AEAD encryption fails 2014-10-15 14:21:01 +02:00
Martin Willi c0bf721357 tls: Check all bytes of the padding if they equal the padding length 2014-10-15 14:21:01 +02:00
Martin Willi 76dc329e47 thread: Test for pending cancellation requests before select()ing on OS X
This fixes some vici test cases on OS X, where the test thread tries to cancel
the watcher thread during cleanup, but fails as select() does not honor the
pre-issued cancellation request.
2014-10-14 16:34:44 +02:00
Martin Willi bdfbecb3e6 vici: Return default value for get_int() if message value is empty string
This is the behavior of some strtol() implementations, and it makes sense,
so force it.
2014-10-14 16:33:10 +02:00
Martin Willi 784916e28d process: Don't use the shells built-in echo in tests
On OS X, the /bin/sh built-in echo does not support -n.
2014-10-14 16:33:10 +02:00
Martin Willi b16ea3415f process: Don't use absolute path names for true/false/cat in unit tests
But use the (builtin) shell commands instead, as on OS X true/false are under
/usr/bin.
2014-10-14 16:33:10 +02:00
Martin Willi 4e37bdbf57 kernel-pfroute: Check for RTM_IFANNOUNCE availability
This message is not available on OS X.
2014-10-14 16:33:10 +02:00
Martin Willi 5b2d89b3c3 process: Include missing <signal.h> for raise(3)
Fixes OS X build.
2014-10-14 16:33:10 +02:00
Martin Willi 05a3f349a7 travis: Build-test updown and ext-auth plugins for Windows 2014-10-14 11:11:34 +02:00
Martin Willi ef90d5ab15 Merge branch 'vici-ruby'
Adds a ruby gem for the VICI protocol, along with some documentation
improvements and some minor fixes to vici and swanctl.
2014-10-10 11:43:43 +02:00
Martin Willi 7431ad0de5 NEWS: Introduce the vici ruby gem 2014-10-10 11:42:18 +02:00
Martin Willi 67f9f09dd3 swanctl: Fix exit codes based on errno
As fprintf() most likely sets errno, we should save it before printing the
error message.
2014-10-10 11:42:18 +02:00
Martin Willi d4d85135c5 vici: Cancel processor before calling library_deinit()
For non-direct libstrongswan users, the deinitialization segfaults because
of the missing worker thread cancellation.
2014-10-10 11:42:18 +02:00
Martin Willi 3db58e837c vici: Reduce debug level during thread spawning
We want to avoid libvici users to get a cluttered stderr for no real error.
2014-10-10 11:42:18 +02:00
Martin Willi 046b547a37 vici: Don't include-depend on libstrongswan for boolean types
As we want to avoid the libstrongswan include dependencies for libvici, avoid
the use of the bool type. Unfortunately this change may break the ABI for
vici_dump(). As this function is mostly for debugging purposes, we do it
nonetheless; my apologies if somebody already relies on the ABI stability of
that function.
2014-10-10 11:42:18 +02:00
Martin Willi 6f55149335 vici: Document the ruby gem and add some simple examples 2014-10-10 11:42:18 +02:00
Martin Willi dccb2c6eba vici: Add some simple libvici examples to the README 2014-10-10 11:42:18 +02:00
Martin Willi 56f17733c9 vici: Document the available vici command and event messages 2014-10-10 11:42:18 +02:00
Martin Willi f684be6583 vici: Use "gem"-assisted vici ruby gem building and installation 2014-10-10 11:42:17 +02:00
Martin Willi 409f1fc144 configure: Add global --enable-ruby-gems and --with-rubygemdir options
This provides the options to build and install ruby gems for components
providing them, such as vici.
2014-10-10 11:42:17 +02:00
Martin Willi 1038d96537 vici: Add a ruby gem providing a native vici interface 2014-10-10 11:42:17 +02:00
Martin Willi 94d9398202 vici: Return a success result for the clear-creds command
Even if the command actually can't fail, this looks more aligned to similar
commands.
2014-10-10 11:42:17 +02:00
Martin Willi d39e04b557 vici: Fix message encoding type values in documentation 2014-10-10 11:42:17 +02:00
Martin Willi 7d3c58a511 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.
2014-10-06 18:31:14 +02:00
Martin Willi 9180c921e8 NEWS: Mention new ext-auth plugin 2014-10-06 18:30:46 +02:00
Martin Willi b2c1973ffb ext-auth: Add an ext-auth plugin invoking an external authorization script
Original patch courtesy of Vyronas Tsingaras.
2014-10-06 18:30:46 +02:00
Martin Willi 6890bdc7a0 updown: Use process abstraction to invoke updown script 2014-10-06 18:24:39 +02:00
Martin Willi 7dd06d274d process: Add a wrapper to invoke a command under the system default shell 2014-10-06 18:24:39 +02:00
Martin Willi 02e4dedce5 process: Port child process spawning to the Windows platform 2014-10-06 18:24:39 +02:00
Martin Willi 1fea589c1f process: Provide an abstraction to spawn child processes with redirected I/O 2014-10-06 18:24:39 +02:00
Martin Willi 7ab320def3 testing: Add some notes about how to reissue attribute certificates 2014-10-03 12:31:01 +02:00
Martin Willi 16469e8474 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.
2014-10-03 12:28:11 +02:00
Martin Willi 55e85387bb ikev1: Be more verbose if a peer config would match, but is unusable for Mode 2014-09-25 17:21:54 +02:00
Martin Willi 0c8c965ca1 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.
2014-09-24 17:37:13 +02:00
Martin Willi ab23a0f86a 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.
2014-09-24 17:35:16 +02:00
Martin Willi a336aefa89 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.
2014-09-24 17:35:16 +02:00
Martin Willi 44b6a34d43 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.
2014-09-24 17:34:54 +02:00
Martin Willi d717b42b51 curl: Dynamically query supported protocols and register appropriate features 2014-09-24 11:35:59 +02:00
Martin Willi 6eaec1e349 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.
2014-09-24 11:35:59 +02:00
Martin Willi 85c95db17a curl: Try to initialize with SSL support to handle https:// URIs
If initialization fails, we fall back to the old behavior.
2014-09-24 11:35:59 +02:00
Martin Willi dcdcae0159 NEWS: Introduce charon-systemd 2014-09-24 11:35:03 +02:00
Martin Willi b3accbe2cb Merge branch 'netlink-cleanups'
In preparation for larger parallelization changes in kernel-netlink, this
merge does some general code cleanup in that plugin.
2014-09-24 11:20:53 +02:00
Martin Willi 5ea627bdfa 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.
2014-09-24 11:19:59 +02:00
Martin Willi 12c0bde689 kernel-netlink: Define and use rtnetlink message types 2014-09-24 11:19:59 +02:00
Martin Willi c94e93a7ab 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.
2014-09-24 11:19:59 +02:00
Martin Willi 5957e76b38 kernel-netlink: Clean up socket initialization, handle 0 as valid socket fd 2014-09-24 11:19:59 +02:00
Martin Willi 4c3aca273f kernel-netlink: Clean up response buffer management 2014-09-24 11:19:59 +02:00
Martin Willi de11d34abb kernel-netlink: Use recv() instead of recvfrom()
As we are not interested in the returned address, there is really no need
in passing that argument.
2014-09-24 11:19:59 +02:00
Martin Willi 4c438cf099 kernel-netlink: Avoid casting the NLMSG_DATA() return value
There is really no need for doing so, and it makes the code just unreadable.
2014-09-24 11:19:59 +02:00
Martin Willi 0404a29bfe kernel-netlink: Define netlink buffer as an union having a netlink header
This allows us to streamline the netlink buffers, and avoid extensive
casting.
2014-09-24 11:19:58 +02:00
Martin Willi 6fe02dda75 Merge branch 'systemd'
Introduces a systemd specific charon-systemd IKE daemon based on libcharon.
Uses systemd APIs for startup control and journal logging and a new systemd
service unit using swanctl as configuration backend.
2014-09-24 11:17:29 +02:00
Martin Willi 575d3ab19a travis: Disable build of native systemd IKE daemon
Travis still uses Ubuntu 12.04, where no systemd libraries are available. Skip
systemd support on Travis until we have a more recent Ubuntu distribution.
2014-09-22 14:19:38 +02:00
Martin Willi c59fad9dbd man: Skip installation of ipsec.conf/secrets manpages when not building starter 2014-09-22 14:19:38 +02:00
Martin Willi a3d03b4c71 init: Update starter systemd service to distinguish it from strongswan-swanctl 2014-09-22 14:19:38 +02:00
Martin Willi 0097141858 init: Provide a service file for charon-systemd using swanctl 2014-09-22 14:19:38 +02:00
Martin Willi b2f76c514d systemd: Check if ./configure detected a systemd system unit directory 2014-09-22 14:19:38 +02:00
Martin Willi db8ae75bf6 systemd: Discover and check systemd libraries with pkg-config during configure 2014-09-22 14:19:38 +02:00
Martin Willi e2d9f27c19 systemd: Add a native systemd journal logger 2014-09-22 14:19:37 +02:00
Martin Willi 5421092b75 plugin-loader: Support a reload() callback for static features 2014-09-22 13:55:12 +02:00
Martin Willi 73ed38e74f systemd: Provide a charon-systemd daemon targeting full systemd integration 2014-09-22 13:55:11 +02:00
Martin Willi d9a2f1330a swanctl: Complete --load-creds command summary 2014-09-22 13:55:11 +02:00
Martin Willi 71d85b33d9 swanctl: Fix description of load-pools command summary 2014-09-22 13:55:11 +02:00
Martin Willi 67402e67af swanctl: Add a --load-all command, performing --load-{creds,pools,conns} 2014-09-22 13:55:11 +02:00
Martin Willi 214a859cd6 swanctl: Add a --reload-settings command 2014-09-22 13:55:11 +02:00
Martin Willi 455e213cb0 vici: Add a command to reload strongswan.conf 2014-09-22 13:44:27 +02:00
Martin Willi 2dee0a85a6 encoding: Accept all exchange types for non IKEv1/IKEv2 major versions 2014-09-22 13:42:11 +02:00
Martin Willi d8ad0fc351 settings: Make loading a NULL or empty pattern a (nop-)success 2014-09-22 13:40:39 +02:00
Martin Willi 68da3bad57 settings: Use strongswan.conf used during library initialization for reload
Since 4b670a20 we require an explicit strongswan.conf to re-load configurations.
However, the define was missing in the build, breaking SIGHUP based config
reloading.

Fixes #651.
2014-09-22 13:40:39 +02:00
Martin Willi 9e783f6e89 library: Store the used root strongswan.conf configuration 2014-09-22 13:40:39 +02:00
Martin Willi e1c7e1bc1f ha: Don't adopt IKEv1 children when building without IKEv1 support
The adopt_children_job_create() function is not available when IKEv1 support
is disabled. Fixes uncommon builds using --enable-ha --disable-ikev1.

Fixes #690.
2014-08-28 10:19:57 +02:00
Martin Willi cfdc620a3f unity: Do not bump TS to 0.0.0.0/0 as initiator when no Split-Include received
When having the unity plugin enabled and both peers send the Unity Vendor ID,
we proposed 0.0.0.0/0 as traffic selector, even if no Split-Include has been
received on the SA. This can break compatibility with some responders, as
they don't narrow the TS themselves, but expect the configured TS.
2014-08-25 10:02:44 +02:00
Martin Willi cb98380fe9 Merge branch 'push-mode-reauth'
Fixes IKEv1 re-authentication when using push mode by reassigning the same
IP lease to the client.
2014-08-25 09:57:30 +02:00
Martin Willi 4f243dfaa9 ikev1: Defer Mode Config push after CHILD adoption when using XAuth 2014-08-25 09:55:44 +02:00
Martin Willi 891bbbd4bb ikev1: Defer Mode Config push after CHILD adoption and reauth detection
When an initiator starts reauthentication on a connection that uses push
mode to assign a virtual IP, we can't execute the Mode Config before releasing
the virtual IP. Otherwise we would request a new and different lease, which
the client probably can't handle. Defer Mode Config execution, so the same IP
gets first released then reassigned during reauthentication.
2014-08-25 09:55:44 +02:00
Martin Willi 898c8b12f9 ikev1: Extend adopt_children_job by task queuing, executed after adoption 2014-08-25 09:55:44 +02:00
Martin Willi cd9bba508b ikev1: Accept Quick Mode DELETES while Quick Mode rekeying is active
If a peer immediately sends DELETE messages when completing Quick Mode rekeying,
the third Quick Mode message and the DELETE are sent simultaneously. This
implies that DELETE messages may arrive before the completing third Quick Mode
message.

Handle this case by ignoring the DELETE INFORMATIONAL in Quick Mode and let
the delete task handle it.
2014-08-25 09:53:02 +02:00
Martin Willi 11bf11c1f5 utils: Check if the parameter passed to countof() is actually an array type
This should avoid errors such as the one fixed with 118b2879.
2014-08-25 09:48:53 +02:00
Martin Willi bb6be26197 utils: Add some initial build time assertion macros
These are useful to assert constants during build time. We evaluate the
expression to 0 when valid, so we can safely use the evaluated value.
2014-08-25 09:48:53 +02:00
Martin Willi 8986e2da47 starter: Do not close all file descriptors after fork()
As we use libstrongswan and expect that it still works after the fork, we
can't just closefrom() all file descriptors. Watcher, for example, uses
a pipe to notify FDSET changes, which must be kept open.

Reverts 652ddf5ce2.
2014-08-25 09:47:46 +02:00