Tobias Brunner [Thu, 18 Aug 2016 16:07:21 +0000 (18:07 +0200)]
pki: Allow to load CRLs from files in --verify
Tobias Brunner [Tue, 23 Aug 2016 14:47:05 +0000 (16:47 +0200)]
ikev1: Ignore the last two bytes of the Cisco Unity vendor ID
These seem to indicate the major and minor version of the protocol, like
e.g. for the DPD vendor ID. Some implementations seem to send versions
other than 1.0 so we just ignore these for now when checking for known
vendor IDs.
Fixes #2088.
Tobias Brunner [Tue, 23 Aug 2016 12:27:09 +0000 (14:27 +0200)]
utils: Fix definition of BYTE_ORDER with MinGW
Tobias Brunner [Wed, 17 Aug 2016 08:26:01 +0000 (10:26 +0200)]
ikev1: Accept more than one certificate payload in aggressive mode
Fixes #2085.
Andreas Steffen [Tue, 16 Aug 2016 15:18:17 +0000 (17:18 +0200)]
testing: Virtual IPs went missing
Andreas Steffen [Thu, 11 Aug 2016 15:01:33 +0000 (17:01 +0200)]
unit-tests: Removed unused variable
Andreas Steffen [Wed, 10 Aug 2016 16:11:53 +0000 (18:11 +0200)]
Version bump to 5.5.1dr1
Andreas Steffen [Wed, 10 Aug 2016 14:23:04 +0000 (16:23 +0200)]
Merge branch 'newhope'
Andreas Steffen [Wed, 10 Aug 2016 13:14:26 +0000 (15:14 +0200)]
testing: Added swanctl/rw-newhope-bliss scenario
Andreas Steffen [Wed, 10 Aug 2016 12:34:27 +0000 (14:34 +0200)]
testing: Add chapoly, ntru and newhope plugins to crypto and integrity tests
Andreas Steffen [Wed, 10 Aug 2016 12:19:32 +0000 (14:19 +0200)]
testing: Added ikev2/rw-newhope-bliss scenario
Andreas Steffen [Tue, 9 Aug 2016 18:58:00 +0000 (20:58 +0200)]
unit-tests: Created newhope unit-tests
Andreas Steffen [Tue, 26 Jul 2016 09:32:22 +0000 (11:32 +0200)]
Created newhope plugin implementing the New Hope key exchange algorithm
Andreas Steffen [Wed, 3 Aug 2016 12:46:08 +0000 (14:46 +0200)]
xof: Added ChaCha20 stream as XOF
Andreas Steffen [Wed, 3 Aug 2016 12:45:01 +0000 (14:45 +0200)]
utils: Defined uletoh16() and htole16()
Andreas Steffen [Mon, 25 Jul 2016 11:49:59 +0000 (13:49 +0200)]
integrity-test: Added ntru_param_sets to read-only segment
Andreas Steffen [Mon, 25 Jul 2016 10:41:43 +0000 (12:41 +0200)]
integrity-test: Added bliss_param_sets to read-only segment
Andreas Steffen [Mon, 25 Jul 2016 10:17:49 +0000 (12:17 +0200)]
integrity-test: check code and ro segments of libnttfft
Andreas Steffen [Sun, 24 Jul 2016 17:57:54 +0000 (19:57 +0200)]
Created libnttfft
This makes Number Theoretic Transforms (NTT) based on the efficient
Fast-Fourier-Transform (FFT) available to multiple plugins.
Andreas Steffen [Fri, 22 Jul 2016 15:20:23 +0000 (17:20 +0200)]
Share twiddle factors table between 512 and 1024 point FFT
Andreas Steffen [Fri, 22 Jul 2016 14:42:49 +0000 (16:42 +0200)]
Implemented FFT with n = 1024 and q = 11289 using Montgomery arithmetic
Andreas Steffen [Fri, 22 Jul 2016 09:36:59 +0000 (11:36 +0200)]
bliss: Implemented FFT with fast Montgomery arithmetic
Andreas Steffen [Thu, 28 Jul 2016 12:46:56 +0000 (14:46 +0200)]
xof: Implemented SHAKE128 and SHAKE256 Extended Output Functions
Andreas Steffen [Thu, 28 Jul 2016 12:42:42 +0000 (14:42 +0200)]
xof: Defined Extended Output Functions
Andreas Steffen [Fri, 29 Jul 2016 10:34:40 +0000 (12:34 +0200)]
vici: Increased various string buffers to BUF_LEN (512 bytes)
Andreas Steffen [Fri, 29 Jul 2016 10:33:32 +0000 (12:33 +0200)]
integrity-test: Added charon-systemd
Andreas Steffen [Tue, 26 Jul 2016 11:34:45 +0000 (13:34 +0200)]
Added SHA-3 signature OIDs
Tobias Brunner [Mon, 25 Jul 2016 12:01:26 +0000 (14:01 +0200)]
libcharon: Add exchange_tests to .gitignore
Andreas Steffen [Fri, 22 Jul 2016 19:27:42 +0000 (21:27 +0200)]
unit-tests: Decreased loop count of FFT speed test to 10'000
Andreas Steffen [Fri, 22 Jul 2016 09:58:10 +0000 (11:58 +0200)]
unit-tests: Added bliss_fft_speed test
Andreas Steffen [Wed, 20 Jul 2016 09:26:45 +0000 (11:26 +0200)]
Merge branch 'tss2-sapi'
Andreas Steffen [Mon, 18 Jul 2016 14:20:58 +0000 (16:20 +0200)]
libtpmtss: Use pkconfig to configure TSS 2.0 includes and libraries
Tobias Brunner [Tue, 28 Jun 2016 10:22:10 +0000 (12:22 +0200)]
ike1: Flush active queue when queueing a delete of the IKE_SA
By aborting the active task we don't have to wait for potential
retransmits if the other peer does not respond to the current task.
Since IKEv1 has no sequential message IDs and INFORMATIONALs are no real
exchanges this should not be a problem.
Fixes #1537
References #429, #1410
Closes strongswan/strongswan#48
Andreas Steffen [Wed, 13 Jul 2016 11:26:16 +0000 (13:26 +0200)]
Version bump to 5.5.0
Tobias Brunner [Mon, 11 Jul 2016 13:42:51 +0000 (15:42 +0200)]
NEWS: Some updates for the 5.5.0 release
Tobias Brunner [Wed, 29 Jun 2016 14:14:17 +0000 (16:14 +0200)]
Fixed some typos, courtesy of codespell
Tobias Brunner [Wed, 29 Jun 2016 12:39:06 +0000 (14:39 +0200)]
testing: Remove obsolete openssl-fips recipe
This was only required when we initially started and OpenSSL was built
from sources, which was changed with
b97dd59ba841 ("install FIPS-aware
OpenSSL Debian packages").
Tobias Brunner [Fri, 1 Jul 2016 15:18:11 +0000 (17:18 +0200)]
Revert "testing: Only load selected plugins in swanctl"
This reverts commit
dee01d019ba9743b2784b417155601d10c173a66.
Thanks to
505c31870162 ("leak-detective: Try to properly free
allocations after deinitialization") this is not required anymore.
Andreas Steffen [Thu, 30 Jun 2016 14:28:28 +0000 (16:28 +0200)]
Version bump to 5.5.0rc1
Andreas Steffen [Thu, 30 Jun 2016 14:20:00 +0000 (16:20 +0200)]
imcv: Added EFI HCRTM event
Andreas Steffen [Thu, 30 Jun 2016 14:18:38 +0000 (16:18 +0200)]
testing: Version bump to 4.6.3 kernel and strongSwan 5.5.0
Tobias Brunner [Thu, 30 Jun 2016 10:56:41 +0000 (12:56 +0200)]
aikgen: Fix computation of key ID of the AIK public key
We don't have direct access to the modulus and exponent of the key anymore.
Tobias Brunner [Thu, 30 Jun 2016 08:56:25 +0000 (10:56 +0200)]
libtpmtss: Define missing Doxygen group and fix some comments
Tobias Brunner [Thu, 30 Jun 2016 08:54:45 +0000 (10:54 +0200)]
libimcv: Fix Doxygen comment
Tobias Brunner [Tue, 21 Jun 2016 08:40:33 +0000 (10:40 +0200)]
testing: Add ikev1/net2net-esn scenario
Thomas Egerer [Mon, 20 Jun 2016 16:19:51 +0000 (18:19 +0200)]
ikev1: Add support for extended sequence numbers
Signed-off-by: Thomas Egerer <thomas.egerer@secunet.com>
Tobias Brunner [Tue, 21 Jun 2016 09:12:18 +0000 (11:12 +0200)]
plugin-loader: Allow selective modification of the default plugin list
This change allows selectively modifying the default plugin list by setting
the `load` setting of individual plugins (e.g. to disable them or to change
their priority) without enabling charon.load_modular and having to configure
a section and a load statement for every plugin.
Tobias Brunner [Wed, 29 Jun 2016 09:10:07 +0000 (11:10 +0200)]
Merge branch 'openssl-1.1.0'
This adds support for OpenSSL 1.1.0. Several APIs have changed and it makes
all types opaque, which requires using new getter/setter functions. For older
versions fallbacks are provided.
Tobias Brunner [Mon, 27 Jun 2016 16:04:39 +0000 (18:04 +0200)]
leak-detective: Try to properly free allocations after deinitialization
If a function we whitelist allocates memory while leak detective is enabled
but only frees it after LD has already been disabled, free() will get called
with invalid pointers (not pointing to the actually allocated memory by LD),
which will cause checks in the C library to fail and the program to crash.
This tries to detect such cases and calling free with the correct pointer.
Tobias Brunner [Mon, 27 Jun 2016 15:44:57 +0000 (17:44 +0200)]
openssl: Whitelist OPENSSL_init_crypto() and others in leak detective
Lots of static data is allocated in this function, which isn't freed until
the library is unloaded (we can't call OPENSSL_cleanup() as initialization
would fail when calling it again later). When enabling the leak
detective the test runner eventually crashes as all the data allocated during
initialization has an invalid size when freed after leak detective has been
unloaded.
Tobias Brunner [Mon, 27 Jun 2016 15:33:58 +0000 (17:33 +0200)]
openssl: Update GCM/crypter API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 15:31:31 +0000 (17:31 +0200)]
openssl: Update HMAC API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 15:27:54 +0000 (17:27 +0200)]
openssl: Don't use deprecated RAND_pseudo_bytes()
Tobias Brunner [Mon, 27 Jun 2016 15:26:16 +0000 (17:26 +0200)]
openssl: Update PKCS#12 API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 15:22:34 +0000 (17:22 +0200)]
openssl: Update PKCS#7 API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 14:56:22 +0000 (16:56 +0200)]
openssl: Update CRL API to OpenSSL 1.1.0
There is currently no way to compare the outer and inner algorithms
encoded in a parsed CRL. X509_CRL_verify() does not seem to check that
either, though (unlike X509_verify()).
Tobias Brunner [Mon, 27 Jun 2016 13:49:19 +0000 (15:49 +0200)]
openssl: Update x509 API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 10:36:32 +0000 (12:36 +0200)]
openssl: Update ECDSA API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 10:08:29 +0000 (12:08 +0200)]
openssl: Update RSA API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 10:07:50 +0000 (12:07 +0200)]
openssl: Make some utilities take const BIGNUM pointers
Tobias Brunner [Tue, 28 Jun 2016 13:19:57 +0000 (15:19 +0200)]
openssl: Add macro to define fallback functions for non-opaque OpenSSL versions
Tobias Brunner [Mon, 27 Jun 2016 09:47:26 +0000 (11:47 +0200)]
openssl: Update DH API to OpenSSL 1.1.0
Tobias Brunner [Mon, 27 Jun 2016 09:17:56 +0000 (11:17 +0200)]
openssl: Update crypter API to OpenSSL 1.1.0
EVP_CIPHER and EVP_CIPHER_CTX are now opaque types, the getters already
existed before.
Tobias Brunner [Mon, 27 Jun 2016 09:17:31 +0000 (11:17 +0200)]
openssl: Fix mapping from ASN1 to chunk_t with OpenSSL 1.1.0
ASN1_OBJECT is now opaque.
Tobias Brunner [Mon, 27 Jun 2016 09:02:36 +0000 (11:02 +0200)]
openssl: Update initialization and cleanup for OpenSSL 1.1.0
We can't call OPENSSL_cleanup() as that would prevent us from
re-initializing the library again (which we use in the Android app, that
loads/unloads plugins).
Tobias Brunner [Mon, 27 Jun 2016 09:01:43 +0000 (11:01 +0200)]
openssl: OpenSSL 1.1.0 is thread-safe so we don't have to setup callbacks
Tobias Brunner [Wed, 29 Jun 2016 08:36:10 +0000 (10:36 +0200)]
testing: Ignore tests/local directory
This could be used for experimental test scenarios that should not get
tracked in the repository.
Tobias Brunner [Tue, 28 Jun 2016 12:34:13 +0000 (14:34 +0200)]
android: Actually add Android.mk for libtpmtss
Tobias Brunner [Fri, 24 Jun 2016 10:18:28 +0000 (12:18 +0200)]
travis: Disable tss-tss2 and aikpub2 but enable TrouSerS and build aikgen
Ubuntu 12.04 does not provide libtss2-dev.
Tobias Brunner [Fri, 24 Jun 2016 11:03:15 +0000 (13:03 +0200)]
configure: Enable respective TSS if aikgen/-pub2 are enabled
Tobias Brunner [Tue, 28 Jun 2016 09:28:15 +0000 (11:28 +0200)]
android: Fix build after adding libtpmtss
Andreas Steffen [Sun, 26 Jun 2016 16:54:56 +0000 (18:54 +0200)]
Version bump to 5.5.0dr1
Andreas Steffen [Sun, 26 Jun 2016 16:40:01 +0000 (18:40 +0200)]
Merge branch 'tpm2'
The libtpmtss library supports both TPM 1.2 and TPM 2.0 Trusted
Platform Modules. Features comprise capability discovery,
listing of PCRs, AIK generation and quote signatures.
Andreas Steffen [Sun, 26 Jun 2016 14:00:43 +0000 (16:00 +0200)]
libtpmtss: Added to integrity checks
Andreas Steffen [Thu, 23 Jun 2016 10:42:22 +0000 (12:42 +0200)]
aikpub2: Output AIK signature algorithm
Andreas Steffen [Mon, 20 Jun 2016 08:47:27 +0000 (10:47 +0200)]
Refactoring to tpm_tss_quote_info object
Andreas Steffen [Thu, 16 Jun 2016 15:41:03 +0000 (17:41 +0200)]
libimcv: Changed debug level for functional components from 2 to 3
Andreas Steffen [Thu, 16 Jun 2016 15:40:10 +0000 (17:40 +0200)]
libtpmtss: Implemented TSS2 quote() method
Andreas Steffen [Tue, 14 Jun 2016 21:34:29 +0000 (23:34 +0200)]
libtpmtss: Implemented TSS2 read_pcr() method
Andreas Steffen [Sun, 5 Jun 2016 18:39:41 +0000 (20:39 +0200)]
libimcv: migrate pts to tpm_tss
Andreas Steffen [Sun, 5 Jun 2016 18:31:13 +0000 (20:31 +0200)]
libtpmtss: Get TPM 2.0 capabilities
Andreas Steffen [Sat, 4 Jun 2016 18:13:52 +0000 (20:13 +0200)]
libtpmtss: Retrieve TPM 1.2 version info
Andreas Steffen [Thu, 2 Jun 2016 21:01:11 +0000 (23:01 +0200)]
Created libtpmtss library handling access to v1.2 and v2.0 TPMs
Andreas Steffen [Tue, 31 May 2016 21:48:28 +0000 (23:48 +0200)]
aikpub2: --handle option retrieves public key from TPM 2.0 NVRAM
Andreas Steffen [Mon, 16 May 2016 08:53:44 +0000 (10:53 +0200)]
aikpub2: Convert TSS 2.0 AIK public key blob into PKCS#1 format
Tobias Brunner [Mon, 20 Jun 2016 16:31:13 +0000 (18:31 +0200)]
testing: Start charon before Apache in tnc/tnccs-20-pdp-pt-tls
The change in
c423d0e8a124 ("testing: Fix race in tnc/tnccs-20-pdp-pt-tls
scenario") is not really ideal as now the vici plugin might not yet be
ready when `swanctl --load-creds` is called. Perhaps starting charon
before Apache causes enough delay.
Once we switch to charon-systemd this isn't a problem anymore as starting the
unit will block until everything is up and ready. Also, the individual
swanctl calls will be redundant as the default service unit calls --load-all.
But start scripts do run before charon-systemd signals that the daemon is
ready, so using these would work too then.
Tobias Brunner [Mon, 20 Jun 2016 16:18:46 +0000 (18:18 +0200)]
testing: Only load selected plugins in swanctl
The main issue is that the ldap and curl plugins, or rather the libraries
they use, initialize GnuTLS (curl, strangely, even when it is, by its own
account, linked against OpenSSL). Some of these allocations are only freed
once the libraries are unloaded. This means that the leak detective causes
invalid frees when swanctl is terminated and libraries are unloaded after the
leak detective is already deinitialized.
Tobias Brunner [Fri, 17 Jun 2016 16:53:51 +0000 (18:53 +0200)]
Merge branch 'exchange-collisions'
Improves the handling of IKEv2 exchange collisions in several corner
cases. TEMPORARY_FAILURE and CHILD_SA_NOT_FOUND notifies that were defined
with RFC 7296 are now handled and sent as appropriate.
The behavior in these situations is tested with new unit tests.
Fixes #379, #464, #876, #1293.
Tobias Brunner [Fri, 10 Jun 2016 14:41:47 +0000 (16:41 +0200)]
unit-tests: Add tests for expires after CHILD_SA rekeying
Tobias Brunner [Fri, 10 Jun 2016 14:00:25 +0000 (16:00 +0200)]
child-rekey: Only rekey installed CHILD_SAs
Depending on the lifetimes a CHILD_SA we rekeyed as responder might
expire shortly afterwards. We don't want to rekey it again.
When retrying due to an INVALID_KE_PAYLOAD notify the expected state
is CHILD_REKEYING if it is anything else (e.g. due to a collision) we
ignore it.
We also abort the exchange properly if we don't find the CHILD_SA, no
need for an empty INFORMATIONAL exchange anymore.
Tobias Brunner [Thu, 2 Jun 2016 16:15:27 +0000 (18:15 +0200)]
Report test coverage of libcharon and starter
Tobias Brunner [Thu, 2 Jun 2016 15:28:03 +0000 (17:28 +0200)]
unit-tests: Add test for CHILD_SA rekey if a retry due to an INVALID_KE_PAYLOAD is delayed
Tobias Brunner [Thu, 2 Jun 2016 15:23:35 +0000 (17:23 +0200)]
child-rekey: Ignore failed colliding CHILD_SA rekeyings
If a passive rekeying fails due to an INVALID_KE_PAYLOAD we don't want
to consider this task later when resolving collisions. This previously
might have caused the wrong SA to get deleted/installed based on the nonces
in the unsuccessful exchange.
Tobias Brunner [Thu, 2 Jun 2016 14:03:30 +0000 (16:03 +0200)]
unit-tests: Add test for collision between IKE_SA rekey and CHILD_SA creation
Tobias Brunner [Thu, 2 Jun 2016 14:01:48 +0000 (16:01 +0200)]
child-create: Retry creating the CHILD_SA if TEMPORARY_FAILURE is received
We queue a delayed task that is initiated after a while.
Tobias Brunner [Thu, 2 Jun 2016 13:50:11 +0000 (15:50 +0200)]
ikev2: Add possibility to delay initiation of a queued task
Such a task is not initiated unless a certain time has passed. This
allows delaying certain tasks but avoids problems if we'd do this
via a scheduled job (e.g. if the IKE_SA is rekeyed in the meantime).
If the IKE_SA is rekeyed the delay of such tasks is reset when the
tasks are adopted i.e. they get executed immediately on the new IKE_SA.
This hasn't been implemented for IKEv1 yet.
Tobias Brunner [Thu, 2 Jun 2016 13:24:36 +0000 (15:24 +0200)]
ike: Reduce RETRY_INTERVAL a bit
Retry exchanges between 5 and 15 seconds after a temporary failure.
Tobias Brunner [Thu, 2 Jun 2016 13:13:24 +0000 (15:13 +0200)]
ike-rekey: Return TEMPORARY_FAILURE when concurrently creating a CHILD_SA
Tobias Brunner [Wed, 1 Jun 2016 13:49:45 +0000 (15:49 +0200)]
unit-tests: Add tests for IKE rekeying if INVALID_KE_PAYLOAD notifies are received
Tobias Brunner [Wed, 1 Jun 2016 10:18:56 +0000 (12:18 +0200)]
ike: Add configuration option to switch to preferring supplied proposals over local ones