strongswan.git
6 years agotun-device: Use SIOCAIFADDR to set IP address on FreeBSD 10
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.

6 years agoMerge branch 'atomic-ref'
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.

6 years agobus: Add a fast-path if log messages don't have to be logged
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.

6 years agoload-tester: Fix race condition issuing same SPI
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>
6 years agoload-tester: Fix race condition issuing same identity
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>
6 years agoike-sa-manager: Improve scalability of half-open IKE_SA checking
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.

6 years agoutils: Use GCC's __atomic built-ins if available
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).

6 years agoutils: Add ref_cur() to retrieve the current value of a reference counter
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.

6 years agotesting: Added pfkey/compress test case
Tobias Brunner [Tue, 22 Apr 2014 14:27:41 +0000 (16:27 +0200)]
testing: Added pfkey/compress test case

6 years agokernel-pfkey: Added IPComp support
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.

6 years agopackages: New Debian network-manager-strongswan release
Martin Willi [Thu, 24 Apr 2014 13:45:30 +0000 (15:45 +0200)]
packages: New Debian network-manager-strongswan release

6 years agopackages: Hand over network-manager-strongswan debian package maintenance
Martin Willi [Thu, 24 Apr 2014 13:40:56 +0000 (15:40 +0200)]
packages: Hand over network-manager-strongswan debian package maintenance

6 years agopackages: Use charon-nm in network-manager-strongswan debian package
Martin Willi [Thu, 24 Apr 2014 13:34:50 +0000 (15:34 +0200)]
packages: Use charon-nm in network-manager-strongswan debian package

6 years agonm: Bump NetworkManager plugin version to 1.3.1
Martin Willi [Thu, 24 Apr 2014 13:38:21 +0000 (15:38 +0200)]
nm: Bump NetworkManager plugin version to 1.3.1

6 years agopacman.sh now fetches Ubuntu 14.04 security updates
Andreas Steffen [Thu, 24 Apr 2014 07:08:07 +0000 (09:08 +0200)]
pacman.sh now fetches Ubuntu 14.04 security updates

6 years agoMerge branch 'reauth-collision'
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.

6 years agoike: Delay actively initiated reauthentication when other exchanges in progress
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.

6 years agoikev2: Reject CHILD_SA creation/rekeying while deleting an IKE_SA
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.

6 years agoikev2: Apply extensions and conditions before starting rekeying
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.

6 years agoikev2: Add inherit_pre() to apply config and hosts before IKE_SA 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

6 years agoikev1: Add an option to accept unencrypted ID/HASH payloads
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.

6 years agoikev2: Fix reauthentication if peer assigns a different virtual IP
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.

6 years agoAdded NEWS for 5.2.0dr1 5.2.0dr1
Andreas Steffen [Tue, 15 Apr 2014 08:04:27 +0000 (10:04 +0200)]
Added NEWS for 5.2.0dr1

6 years agoHandle tag separators
Andreas Steffen [Tue, 15 Apr 2014 06:55:11 +0000 (08:55 +0200)]
Handle tag separators

6 years agoRenewed expired user certificate
Andreas Steffen [Mon, 14 Apr 2014 20:52:26 +0000 (22:52 +0200)]
Renewed expired user certificate

6 years agoUpdated SWID scenarios
Andreas Steffen [Mon, 14 Apr 2014 09:26:08 +0000 (11:26 +0200)]
Updated SWID scenarios

6 years agoswid_generator software-id does not generate empty lines any more
Andreas Steffen [Mon, 14 Apr 2014 09:25:41 +0000 (11:25 +0200)]
swid_generator software-id does not generate empty lines any more

6 years agoAdded result information to TPMRA workitems
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

6 years agoIndicate IMV in assessment log statement
Andreas Steffen [Fri, 11 Apr 2014 14:58:08 +0000 (16:58 +0200)]
Indicate IMV in assessment log statement

6 years agoImplemented segmented SWID tag attributes on IMV side
Andreas Steffen [Fri, 11 Apr 2014 14:30:55 +0000 (16:30 +0200)]
Implemented segmented SWID tag attributes on IMV side

6 years agoUse python-based swidGenerator to generated SWID tags
Andreas Steffen [Thu, 10 Apr 2014 08:25:39 +0000 (10:25 +0200)]
Use python-based swidGenerator to generated SWID tags

6 years agoUpdated imv database templates
Andreas Steffen [Mon, 7 Apr 2014 13:17:32 +0000 (15:17 +0200)]
Updated imv database templates

6 years agoOptimized PTS measurements
Andreas Steffen [Sun, 6 Apr 2014 05:18:28 +0000 (07:18 +0200)]
Optimized PTS measurements

6 years agoUse cached pid for product-based package access
Andreas Steffen [Sat, 5 Apr 2014 14:11:13 +0000 (16:11 +0200)]
Use cached pid for product-based package access

6 years agoMake Attestation IMV independent of OS IMV
Andreas Steffen [Sat, 5 Apr 2014 13:38:06 +0000 (15:38 +0200)]
Make Attestation IMV independent of OS IMV

6 years agoSeparated IMV session management from IMV policy database
Andreas Steffen [Fri, 4 Apr 2014 21:00:40 +0000 (23:00 +0200)]
Separated IMV session management from IMV policy database

6 years agoRenamed the AIK public key parameter to imc-attestation.aik_pubkey
Andreas Steffen [Wed, 2 Apr 2014 04:54:16 +0000 (06:54 +0200)]
Renamed the AIK public key parameter to imc-attestation.aik_pubkey

6 years agoImplemented configurable Device ID in OS IMC
Andreas Steffen [Mon, 31 Mar 2014 11:00:40 +0000 (13:00 +0200)]
Implemented configurable Device ID in OS IMC

6 years agoVersion bump to 5.2.0dr1
Andreas Steffen [Tue, 15 Apr 2014 07:20:38 +0000 (09:20 +0200)]
Version bump to 5.2.0dr1

6 years agoVersion bump to 5.1.3 5.1.3
Andreas Steffen [Mon, 14 Apr 2014 13:18:38 +0000 (15:18 +0200)]
Version bump to 5.1.3

6 years agoNEWS: Added info about CVE-2014-2338
Tobias Brunner [Mon, 14 Apr 2014 11:32:36 +0000 (13:32 +0200)]
NEWS: Added info about CVE-2014-2338

6 years agoikev2: Reject CREATE_CHILD_SA exchange on unestablished IKE_SAs
Martin Willi [Thu, 20 Feb 2014 15:08:43 +0000 (16:08 +0100)]
ikev2: Reject CREATE_CHILD_SA exchange on unestablished IKE_SAs

Prevents a responder peer to trick us into established state by starting
IKE_SA rekeying before the IKE_SA has been authenticated during IKE_AUTH.

Fixes CVE-2014-2338.

6 years agoeap-mschapv2: Fix potential leaks in case of invalid messages from servers
Tobias Brunner [Wed, 9 Apr 2014 16:04:33 +0000 (18:04 +0200)]
eap-mschapv2: Fix potential leaks in case of invalid messages from servers

6 years agopts: Make sure the complete AIK blob has been read
Tobias Brunner [Wed, 9 Apr 2014 15:47:32 +0000 (17:47 +0200)]
pts: Make sure the complete AIK blob has been read

6 years agoattr: Don't shift the 32-bit netmask by 32
Tobias Brunner [Wed, 9 Apr 2014 15:09:55 +0000 (17:09 +0200)]
attr: Don't shift the 32-bit netmask by 32

This is undefined behavior as per the C99 standard (sentence 1185):

 "If the value of the right operand is negative or is greater or equal
  to the width of the promoted left operand, the behavior is undefined."

Apparently shifts may be done modulo the width on some platforms so
a shift by 32 would not shift at all.

6 years agonm: Fix NULL-pointer dereference when handling TUN device failure
Tobias Brunner [Wed, 9 Apr 2014 14:35:46 +0000 (16:35 +0200)]
nm: Fix NULL-pointer dereference when handling TUN device failure

6 years agox509: Don't include authKeyIdentifier in self-signed certificates
Tobias Brunner [Wed, 9 Apr 2014 13:28:54 +0000 (15:28 +0200)]
x509: Don't include authKeyIdentifier in self-signed certificates

As the comment indicates this was the intention in
d7be2906433a7dcfefc1fd732587865688dbfe1b all along.

6 years agox509: Initialize certs when building optionalSignature for OCSP requests
Tobias Brunner [Wed, 9 Apr 2014 13:18:13 +0000 (15:18 +0200)]
x509: Initialize certs when building optionalSignature for OCSP requests

6 years agostroke: Fix memory leak when printing unknown AC group OIDs
Tobias Brunner [Wed, 9 Apr 2014 14:05:55 +0000 (16:05 +0200)]
stroke: Fix memory leak when printing unknown AC group OIDs

6 years agopki: Fix memory leak when printing unknown AC group OIDs
Tobias Brunner [Wed, 9 Apr 2014 13:53:35 +0000 (15:53 +0200)]
pki: Fix memory leak when printing unknown AC group OIDs

6 years agopki: Removed extra continue statement
Tobias Brunner [Wed, 9 Apr 2014 13:12:27 +0000 (15:12 +0200)]
pki: Removed extra continue statement

6 years agoAdded support for msSmartcardLogon EKU
Andreas Steffen [Tue, 8 Apr 2014 11:09:03 +0000 (13:09 +0200)]
Added support for msSmartcardLogon EKU

6 years agoAdded some more OIDs
Andreas Steffen [Tue, 8 Apr 2014 09:32:30 +0000 (11:32 +0200)]
Added some more OIDs

6 years agoInitialize m1 to suppress compiler warning
Andreas Steffen [Mon, 7 Apr 2014 11:29:39 +0000 (13:29 +0200)]
Initialize m1 to suppress compiler warning

6 years agoFixed another dirname/basename refactoring bug.
Andreas Steffen [Sun, 6 Apr 2014 15:54:55 +0000 (17:54 +0200)]
Fixed another dirname/basename refactoring bug.

file was freed before use.

6 years agoFixed dirname/basename refactoring bug.
Andreas Steffen [Sun, 6 Apr 2014 15:26:52 +0000 (17:26 +0200)]
Fixed dirname/basename refactoring bug.

 Variables used in a database query have to be kept until the end of the enumeration

6 years agoAdded SHA3 OIDs
Andreas Steffen [Fri, 4 Apr 2014 21:44:55 +0000 (23:44 +0200)]
Added SHA3 OIDs

6 years agoFixed pretest script in tnc/tnccs-20-pt-tls scenario
Andreas Steffen [Fri, 4 Apr 2014 21:04:54 +0000 (23:04 +0200)]
Fixed pretest script in tnc/tnccs-20-pt-tls scenario

6 years agoike-cfg: Properly compare IKE proposals for equality 5.1.3rc1
Tobias Brunner [Wed, 2 Apr 2014 13:06:56 +0000 (15:06 +0200)]
ike-cfg: Properly compare IKE proposals for equality

6 years agoleak-detective: LEAK_DETECTIVE_DISABLE completely disables LD
Tobias Brunner [Tue, 1 Apr 2014 08:30:13 +0000 (10:30 +0200)]
leak-detective: LEAK_DETECTIVE_DISABLE completely disables LD

If lib->leak_detective is non-null some code parts (e.g. the plugin
loader) assume LD is actually used.

6 years agotesting: Run 'conntrack -F' before all test scenarios
Tobias Brunner [Tue, 2 Jul 2013 12:01:38 +0000 (14:01 +0200)]
testing: Run 'conntrack -F' before all test scenarios

This prevents failures due to remaining conntrack entries.

6 years agounit-tests: Verify two bytes at once when testing chunk_clear()
Tobias Brunner [Wed, 2 Apr 2014 09:50:11 +0000 (11:50 +0200)]
unit-tests: Verify two bytes at once when testing chunk_clear()

This reduces the chances of arbitrary test failures if the memory area
already got overwritten.

6 years agoMerge branch 'tls-unit-tests'
Martin Willi [Tue, 1 Apr 2014 12:53:28 +0000 (14:53 +0200)]
Merge branch 'tls-unit-tests'

Add some initial unit-tests to libtls, testing all supported cipher suites
against self, both with and without client authentication, for all supported
TLS versions.

6 years agotls: Add a test case to check correct enum name mapping of cipher suites
Martin Willi [Tue, 25 Mar 2014 08:25:14 +0000 (09:25 +0100)]
tls: Add a test case to check correct enum name mapping of cipher suites

6 years agotls: Add socket based tests testing all supported suites with TLS 1.2/1.1/1.0
Martin Willi [Mon, 24 Mar 2014 17:01:00 +0000 (18:01 +0100)]
tls: Add socket based tests testing all supported suites with TLS 1.2/1.1/1.0

6 years agotls: Remove superfluous initializers in TLS AEAD implementations
Martin Willi [Tue, 1 Apr 2014 09:45:45 +0000 (11:45 +0200)]
tls: Remove superfluous initializers in TLS AEAD implementations

6 years agotls: Support a maximum TLS version to negotiate using TLS socket abstraction
Martin Willi [Tue, 25 Mar 2014 09:12:51 +0000 (10:12 +0100)]
tls: Support a maximum TLS version to negotiate using TLS socket abstraction

6 years agotls: Support a null encryption flag on TLS socket abstraction
Martin Willi [Tue, 25 Mar 2014 09:19:41 +0000 (10:19 +0100)]
tls: Support a null encryption flag on TLS socket abstraction

6 years agotls: Introduce a generic TLS purpose that accepts NULL encryption ciphers
Martin Willi [Tue, 25 Mar 2014 08:49:04 +0000 (09:49 +0100)]
tls: Introduce a generic TLS purpose that accepts NULL encryption ciphers

6 years agotls: Export a function to list supported TLS cipher suites
Martin Willi [Mon, 24 Mar 2014 13:28:50 +0000 (14:28 +0100)]
tls: Export a function to list supported TLS cipher suites

6 years agotls: Create a unit-test runner
Martin Willi [Mon, 24 Mar 2014 12:47:03 +0000 (13:47 +0100)]
tls: Create a unit-test runner

6 years agounit-tests: Catch timeouts during test runner deinit function
Martin Willi [Tue, 25 Mar 2014 13:14:37 +0000 (14:14 +0100)]
unit-tests: Catch timeouts during test runner deinit function

The test runner deinit function often cancels all threads from the pool. This
operation might hang on error conditions, hence we should include that hook in
the test timeout to fail properly.

6 years agounit-tests: Prevent a failing worker thread to go wild after it fails
Martin Willi [Mon, 24 Mar 2014 16:17:50 +0000 (17:17 +0100)]
unit-tests: Prevent a failing worker thread to go wild after it fails

A worker raises SIGUSR1 to inform the main thread that the test fails. The main
thread then starts cancelling workers, but the offending thread should be
terminated immediately to prevent it from test continuation.

6 years agoTest TLS AEAD cipher suites
Andreas Steffen [Tue, 1 Apr 2014 08:12:15 +0000 (10:12 +0200)]
Test TLS AEAD cipher suites

6 years agoAdded Ubuntu 14.04 to IMV database
Andreas Steffen [Mon, 31 Mar 2014 20:22:51 +0000 (22:22 +0200)]
Added Ubuntu 14.04 to IMV database

6 years agoSlightly edited evaltest of ikev2/ocsp-untrusted-cert scenario
Andreas Steffen [Mon, 31 Mar 2014 20:08:50 +0000 (22:08 +0200)]
Slightly edited evaltest of ikev2/ocsp-untrusted-cert scenario

6 years agounit-tests: Always load address of testable functions
Tobias Brunner [Mon, 31 Mar 2014 14:58:46 +0000 (16:58 +0200)]
unit-tests: Always load address of testable functions

The addresses can actually change as plugins are loaded/unloaded for
each test case.

Fixes #551.

6 years agosettings: Reduce log verbosity if strongswan.conf does not exist
Tobias Brunner [Mon, 31 Mar 2014 12:47:00 +0000 (14:47 +0200)]
settings: Reduce log verbosity if strongswan.conf does not exist

In some situations we expect strongswan.conf to not exist, for instance,
when running the unit tests before installation.

6 years agotest-vectors: Renumber AES-GCM test vectors according to original source
Tobias Brunner [Thu, 13 Mar 2014 13:05:29 +0000 (14:05 +0100)]
test-vectors: Renumber AES-GCM test vectors according to original source

Also adds several missing ones.

6 years agoMerge branch 'tls-aead'
Martin Willi [Mon, 31 Mar 2014 14:17:57 +0000 (16:17 +0200)]
Merge branch 'tls-aead'

Adds AEAD support to the TLS stack, currently supporting AES-GCM. Brings fixes
for TLS record fragmentation, enforcing TLS versions < 1.2 and proper signature
scheme support indication.

6 years agoNEWS: Note TLS AEAD mode
Martin Willi [Mon, 31 Mar 2014 14:17:15 +0000 (16:17 +0200)]
NEWS: Note TLS AEAD mode

6 years agotls: Fix some TLS cipher suite enum names
Martin Willi [Tue, 25 Mar 2014 08:20:15 +0000 (09:20 +0100)]
tls: Fix some TLS cipher suite enum names

It is important to have them mapped correctly, as we use these official TLS
identifiers to configure specific TLS suites.

6 years agotls: Include TLS version announced in Client Hello in encrypted premaster
Martin Willi [Tue, 25 Mar 2014 09:50:51 +0000 (10:50 +0100)]
tls: Include TLS version announced in Client Hello in encrypted premaster

While a hardcoded 1.2 version is fine when we offer that in Client Hello, we
should include the actually offered version if it has been reduced before
starting the exchange.

6 years agotls: Check for minimal TLS record length before each record iteration
Martin Willi [Fri, 21 Mar 2014 08:29:44 +0000 (09:29 +0100)]
tls: Check for minimal TLS record length before each record iteration

Fixes fragment reassembling if a buffer contains more than one record, but
the last record contains a partial TLS record header. Thanks to Nick Saunders
and Jamil Nimeh for identifying this issue and providing a fix for it.

6 years agotls: Fix AEAD algorithm filtering, avoid filtering all suites if no AEAD found
Martin Willi [Tue, 11 Mar 2014 09:57:18 +0000 (10:57 +0100)]
tls: Fix AEAD algorithm filtering, avoid filtering all suites if no AEAD found

6 years agotls: Offer TLS signature schemes in ClientHello in order of preference
Martin Willi [Wed, 15 Jan 2014 14:51:03 +0000 (15:51 +0100)]
tls: Offer TLS signature schemes in ClientHello in order of preference

Additionally, we now query plugin features to find out what schemes we exactly
support.

6 years agotls: Define AES-GCM cipher suites from RFC 5288/5289
Martin Willi [Mon, 3 Feb 2014 17:08:11 +0000 (18:08 +0100)]
tls: Define AES-GCM cipher suites from RFC 5288/5289

6 years agotls: Implement the TLS AEAD abstraction for real AEAD modes
Martin Willi [Mon, 3 Feb 2014 17:03:41 +0000 (18:03 +0100)]
tls: Implement the TLS AEAD abstraction for real AEAD modes

6 years agotls: Separate TLS protection to abstracted AEAD modes
Martin Willi [Mon, 3 Feb 2014 12:20:46 +0000 (13:20 +0100)]
tls: Separate TLS protection to abstracted AEAD modes

To better separate the code path for different TLS versions and modes of
operation, we introduce a TLS AEAD abstraction. We provide three implementations
using traditional transforms, and get prepared for TLS AEAD modes.

6 years agoaead: Support custom AEAD salt sizes
Martin Willi [Fri, 31 Jan 2014 14:53:38 +0000 (15:53 +0100)]
aead: Support custom AEAD salt sizes

The salt, or often called implicit nonce, varies between AEAD algorithms and
their use in protocols. For IKE and ESP, GCM uses 4 bytes, while CCM uses
3 bytes. With TLS, however, AEAD mode uses 4 bytes for both GCM and CCM.

Our GCM backends currently support 4 bytes and CCM 3 bytes only. This is fine
until we go for CCM mode support in TLS, which requires 4 byte nonces.

6 years agoikev2: Recreate a CHILD_SA that got a hard lifetime expire without rekeying
Martin Willi [Thu, 27 Feb 2014 08:36:46 +0000 (09:36 +0100)]
ikev2: Recreate a CHILD_SA that got a hard lifetime expire without rekeying

Works around issues related to system time changes and kernel backends using
that system time, such as Linux XFRM.

6 years agorevocation: Log error if no OCSP signer candidate found
Martin Willi [Mon, 31 Mar 2014 12:53:15 +0000 (14:53 +0200)]
revocation: Log error if no OCSP signer candidate found

Fixes evaluation of ikev2/ocsp-untrusted-cert.

6 years agoMerge branch 'ocsp-constraints'
Martin Willi [Mon, 31 Mar 2014 12:44:50 +0000 (14:44 +0200)]
Merge branch 'ocsp-constraints'

Limits cached OCSP verification to responses signed by the CA, a directly
delegated signer or a pre-installed OCSP responder certificate. Disables
auth config merge for revocation trust-chain strength checkin, as it breaks
CA constraints in some scenarios.

6 years agorevocation: Restrict OCSP signing to specific certificates
Martin Willi [Tue, 25 Mar 2014 13:34:58 +0000 (14:34 +0100)]
revocation: Restrict OCSP signing to specific certificates

To avoid considering each cached OCSP response and evaluating its trustchain,
we limit the certificates considered for OCSP signing to:

- The issuing CA of the checked certificate
- A directly delegated signer by the same CA, having the OCSP signer constraint
- Any locally installed (trusted) certificate having the OCSP signer constraint

The first two options cover the requirements from RFC 6960 2.6. For
compatibility with non-conforming CAs, we allow the third option as exception,
but require the installation of such certificates locally.

6 years agorevocation: Don't merge auth config of CLR/OCSP trustchain validation
Martin Willi [Thu, 27 Mar 2014 09:59:29 +0000 (10:59 +0100)]
revocation: Don't merge auth config of CLR/OCSP trustchain validation

This behavior was introduced with 6840a6fb to avoid key/signature strength
checking for the revocation trustchain as we do it for end entity certificates.
Unfortunately this breaks CA constraint checking under certain conditions, as
we merge additional intermediate/CA certificates to the auth config.

As key/signature strength checking of the revocation trustchain is a rather
exotic requirement we drop support for that to properly enforce CA constraints.

6 years agohashtable: Make key arguments const
Tobias Brunner [Thu, 27 Mar 2014 10:57:54 +0000 (11:57 +0100)]
hashtable: Make key arguments const

This allows using const strings etc. for lookups without cast. And keys
are not modifiable anyway.

6 years agoProperly hash pointers for hash tables where appropriate
Tobias Brunner [Thu, 27 Mar 2014 10:37:16 +0000 (11:37 +0100)]
Properly hash pointers for hash tables where appropriate

Simply using the pointer is not optimal for our hash table
implementation, which simply masks the key to determine the bucket.

6 years agokernel-pfroute: Let get_nexthop() default to destination address
Tobias Brunner [Tue, 11 Mar 2014 14:19:33 +0000 (15:19 +0100)]
kernel-pfroute: Let get_nexthop() default to destination address

6 years agox509: CERT_DECODE actually requires KEY_ANY
Tobias Brunner [Thu, 6 Mar 2014 11:20:55 +0000 (12:20 +0100)]
x509: CERT_DECODE actually requires KEY_ANY

More specific decoders might still be needed, but the x509
plugin should not care which ones.

6 years agopkcs1: KEY_ANY public key decoder soft depends on specific decoders
Tobias Brunner [Thu, 6 Mar 2014 11:20:05 +0000 (12:20 +0100)]
pkcs1: KEY_ANY public key decoder soft depends on specific decoders