Reto Buerki [Wed, 29 Aug 2012 07:44:17 +0000 (09:44 +0200)]
keymat: Create inbound and outbound AEAD transforms
Create and initialize AEAD transforms with keys derived by the TKM.
Return these transforms in the get_aead function.
IKE keys used by charon are derived by TKM now.
Reto Buerki [Wed, 29 Aug 2012 07:41:02 +0000 (09:41 +0200)]
keymat: Extract enc,inc algorithms from proposal
Extract encryption and integrity algorithms from proposal and check them
before deriving IKE keys.
Reto Buerki [Fri, 24 Aug 2012 14:17:27 +0000 (16:17 +0200)]
keymat: Call TKM Isa_Create procedure
Reto Buerki [Fri, 24 Aug 2012 10:58:47 +0000 (12:58 +0200)]
Implement chunk_to_sequence function
This function converts a given chunk to a variable-length byte sequence.
Reto Buerki [Fri, 24 Aug 2012 10:16:17 +0000 (12:16 +0200)]
Implement sequence_to_chunk function
This function converts a given TKM variable-length byte sequence to
chunk.
Adrian-Ken Rueegsegger [Wed, 22 Aug 2012 09:27:30 +0000 (11:27 +0200)]
keymat: Log nonce and DH context ids
Adrian-Ken Rueegsegger [Wed, 22 Aug 2012 09:17:14 +0000 (11:17 +0200)]
Add context id getter to TKM DH implementation
Adrian-Ken Rueegsegger [Wed, 22 Aug 2012 09:05:44 +0000 (11:05 +0200)]
keymat: Get context id of local nonce
To derive IKE keys using TKM the nonce context id of the local nonce is needed.
Get the id for a given chunk using the chunk map.
Adrian-Ken Rueegsegger [Wed, 22 Aug 2012 08:53:08 +0000 (10:53 +0200)]
nonceg: Insert id mapping when allocating nonce
Adrian-Ken Rueegsegger [Wed, 22 Aug 2012 08:17:59 +0000 (10:17 +0200)]
Add chunk map
This data structure allows to store mappings of chunks to ids. This will
be used to map nonces to their corresponding nonce context ids.
Adrian-Ken Rueegsegger [Tue, 21 Aug 2012 12:31:13 +0000 (14:31 +0200)]
Add context id getter to TKM nonce generator
Reto Buerki [Tue, 21 Aug 2012 13:29:30 +0000 (15:29 +0200)]
id_manager: Use calloc instead of malloc
This way we don't need to manually initialize the slot status; free
slots are now indicated by 0 though.
Reto Buerki [Tue, 21 Aug 2012 10:38:50 +0000 (12:38 +0200)]
Use ikev2 keymat proxy
Forward incoming calls to default ikev2 keymat instance. This is needed
to make a stepwise migration to TKM keymat possible. It will be removed
once the corresponding parts are implemented in the TKM.
Reto Buerki [Tue, 21 Aug 2012 10:17:05 +0000 (12:17 +0200)]
Add skeleton for TKM keymat variant
Reto Buerki [Thu, 9 Aug 2012 14:13:55 +0000 (16:13 +0200)]
id_manager: Use limits given by TKM
Reto Buerki [Thu, 9 Aug 2012 13:18:05 +0000 (15:18 +0200)]
Pass context limits on to id manager
Reto Buerki [Thu, 9 Aug 2012 13:12:40 +0000 (15:12 +0200)]
Request limits from TKM on init
Reto Buerki [Thu, 9 Aug 2012 10:47:58 +0000 (12:47 +0200)]
id_manager: Use array of bool instead of list
Instead of storing the acquired context ids in a linked list, use an
array of booleans for the job. A boolean value of true in the array
designates an available context id.
Reto Buerki [Wed, 8 Aug 2012 14:59:19 +0000 (16:59 +0200)]
Use id manager to acquire DH context id
Reto Buerki [Wed, 8 Aug 2012 14:56:30 +0000 (16:56 +0200)]
Add TKM_CTX_DH (Diffie-Hellman context) to id manager
Reto Buerki [Tue, 7 Aug 2012 15:46:45 +0000 (17:46 +0200)]
Use id manager to acquire nonce context id
Reto Buerki [Tue, 24 Jul 2012 08:40:26 +0000 (10:40 +0200)]
Add initial TKM Diffie-Hellman implementation
The tkm_diffie_hellman_t plugin acquires a DH context from the Trusted
Key Manager and uses it to get a DH public value and the calculated
shared secret. Proper context handling is still missing though, the
plugin currently uses context ID 1.
The get_shared_secret function will be removed as soon as the TKM
specific keymat is ready.
Reto Buerki [Tue, 12 Jun 2012 12:39:33 +0000 (14:39 +0200)]
charon-tkm: Register tkm nonce generator
Reto Buerki [Tue, 12 Jun 2012 09:05:14 +0000 (11:05 +0200)]
tkm_nonceg: Return nonce generated by TKM
Reto Buerki [Thu, 7 Jun 2012 15:45:34 +0000 (17:45 +0200)]
Initialize TKM client library in tkm.c
Reto Buerki [Fri, 18 May 2012 12:09:24 +0000 (14:09 +0200)]
Introduce TKM specific charon daemon (charon-tkm)
Analogous to charon-nm the charon-tkm daemon is a specialized charon
instance used in combination with the trusted key manager (TKM) written
in Ada.
The charon-tkm is basically a copy of the charon-nm code which will
register it's own TKM specific plugins.
The daemon binary is built using the gprbuild utility. This is needed
because it uses the tkm-rpc Ada library and consequently the Ada
runtime. gprbuild takes care of the complete binding and linker steps
required to properly initialize the Ada runtime.
Adrian-Ken Rueegsegger [Tue, 22 Jan 2013 15:13:15 +0000 (16:13 +0100)]
starter: Make daemon name configurable
A daemon can be specified using the '--daemon' command line parameter. This
tells starter to invoke a daemon other than 'charon'.
Additionally the ipsec script uses the environment variable DAEMON_NAME to tell
the starter which daemon to use.
Adrian-Ken Rueegsegger [Fri, 18 May 2012 19:19:52 +0000 (21:19 +0200)]
Add configure option --enable-unit-tests
This configure option enables check-based unit testing. Check is a unit
test framework for C [1].
The unit tests can be executed by issuing the following command in the
toplevel build directory:
make check
[1] - http://check.sourceforge.net/
Tobias Brunner [Fri, 22 Feb 2013 17:59:52 +0000 (18:59 +0100)]
Load arbitrary (non-host) attributes from strongswan.conf
This allows to e.g. load Cisco-specific attributes that contain FQDNs.
Martin Willi [Tue, 19 Mar 2013 12:44:11 +0000 (13:44 +0100)]
Don't try to mmap() empty ipsec.secret files
Tobias Brunner [Fri, 21 Sep 2012 10:14:29 +0000 (12:14 +0200)]
Delete IKE_SAs if responder does not initiate XAuth exchange within a certain time frame
Tobias Brunner [Fri, 8 Mar 2013 13:47:42 +0000 (14:47 +0100)]
testing: Rename interfaces and bridges so they are easier to identify
This simplifies capturing traffic with Wireshark on the host as each of
the guest's interfaces is clearly identified.
The three bridges were previously numbered starting from 0, this scheme
is restored here.
Tobias Brunner [Fri, 8 Mar 2013 13:18:54 +0000 (14:18 +0100)]
testing: Don't use a specific version for the QEMU machine type
The previously used pc-1.1 is not yet available on e.g. Ubuntu 12.04.
With 'pc' the most current supported version of that type is used.
Tobias Brunner [Tue, 19 Mar 2013 09:58:58 +0000 (10:58 +0100)]
NEWS about xauth-noauth added
Tobias Brunner [Tue, 19 Mar 2013 09:57:17 +0000 (10:57 +0100)]
Make sure that xauth-noauth is not used accidentally
It has to be selected explicitly with rightauth2=xauth-noauth.
Tobias Brunner [Mon, 4 Feb 2013 17:55:54 +0000 (18:55 +0100)]
Added xauth-noauth plugin
This XAuth backend does not do any authentication of client credentials
but simply sends a successful XAuth status to the client, thereby
concluding the XAuth exchange. This can be useful to fallback to basic
RSA authentication with clients that can not be configured without XAuth
authentication.
Martin Willi [Tue, 19 Mar 2013 10:20:35 +0000 (11:20 +0100)]
In stroke counters, check if we have an IKE_SA before getting the name from it
Fixes a segfault when receiving an invalid IKE SPI, where we don't have an
IKE_SA for the raised alert.
Martin Willi [Mon, 18 Mar 2013 13:29:37 +0000 (14:29 +0100)]
Add an "esp" load-tester option to configure custom CHILD_SA ESP proposal
Tobias Brunner [Mon, 18 Mar 2013 11:18:44 +0000 (12:18 +0100)]
Algorithms are not really specific to an IKE version
But not all of them can be used with IKEv1.
Fixes #314.
Martin Willi [Mon, 18 Mar 2013 09:47:26 +0000 (10:47 +0100)]
Add some 5.0.3 NEWS
Martin Willi [Mon, 18 Mar 2013 09:13:36 +0000 (10:13 +0100)]
Merge branch 'radius-ext'
Bring some extensions to eap-radius, namely a virtual IP address provider based
on received Framed-IPs, forwarding of Cisco Unity banners, Interim Accounting
updates and the reporting of sent/received packets.
Martin Willi [Mon, 18 Mar 2013 09:12:22 +0000 (10:12 +0100)]
Merge branch 'stroke-counters'
Extend stroke counters functionality by connection specific counters, and
a resetcounters command to reset the global or connection counters.
Martin Willi [Mon, 18 Mar 2013 09:11:46 +0000 (10:11 +0100)]
Merge branch 'stroke-timeout'
Add a strongswan.conf timeout option for stroke control commands.
Martin Willi [Mon, 18 Mar 2013 09:09:35 +0000 (10:09 +0100)]
Merge branch 'netlink-align'
Fixes some Netlink alignment issues, and then refactors Netlink XFRM message
attribute handling.
Martin Willi [Fri, 15 Mar 2013 15:01:32 +0000 (16:01 +0100)]
Use netlink_add_attribute() to copy over attributes during update_sa()
Martin Willi [Fri, 15 Mar 2013 14:17:13 +0000 (15:17 +0100)]
Use a helper function to add XFRM_MARK attribute
Martin Willi [Fri, 15 Mar 2013 14:05:00 +0000 (15:05 +0100)]
Use netlink_reserve() helper function in XFRM to simplify message construction
Martin Willi [Fri, 15 Mar 2013 13:32:51 +0000 (14:32 +0100)]
Add a Netlink utility function to add a RTA header and reserve space for data
Martin Willi [Fri, 15 Mar 2013 13:32:25 +0000 (14:32 +0100)]
Correctly check buffer length in netlink_add_attribute()
Martin Willi [Fri, 15 Mar 2013 13:01:15 +0000 (14:01 +0100)]
Avoid unneeded termination of netlink algorithm name arrays with END_OF_LIST
Martin Willi [Fri, 15 Mar 2013 09:55:22 +0000 (10:55 +0100)]
Add a "resetcounters" command to ipsec, clearing global or connection counters
Martin Willi [Fri, 15 Mar 2013 09:41:04 +0000 (10:41 +0100)]
Add connection name specific stroke counters
Martin Willi [Thu, 3 Jan 2013 13:09:05 +0000 (14:09 +0100)]
Add a chunk_from_str() initializer that does not include 0-terminator
Martin Willi [Thu, 14 Mar 2013 15:44:09 +0000 (16:44 +0100)]
Don't create interim update entries if RADIUS accounting is disabled
Martin Willi [Thu, 14 Mar 2013 15:35:11 +0000 (16:35 +0100)]
Add support for RADIUS Interim accounting updates
Martin Willi [Thu, 14 Mar 2013 13:01:17 +0000 (14:01 +0100)]
Add an option to delete any established IKE_SA if RADIUS server is not responding
Martin Willi [Wed, 13 Mar 2013 15:08:12 +0000 (16:08 +0100)]
Make check whether to use IKEv1 fragmentation more readable
Martin Willi [Wed, 13 Mar 2013 14:53:39 +0000 (15:53 +0100)]
Send Acct-Terminate-Cause based on some alerts catched on the bus
Currently supported are user disconnects, session timeouts and if the peer does
not respond on IKE packets or DPDs.
Martin Willi [Wed, 13 Mar 2013 15:06:54 +0000 (16:06 +0100)]
When IKEv1 DPD times out, raise missing SEND_RETRANSMIT_TIMOUT alert
Martin Willi [Wed, 13 Mar 2013 14:52:16 +0000 (15:52 +0100)]
Raise an alert if an IKE_SA could not have been reauthenticated and expires
Martin Willi [Wed, 13 Mar 2013 14:19:07 +0000 (15:19 +0100)]
Send NAS-Port, NAS-IP and Calling/Called-Station-ID in Accounting-Requests
Martin Willi [Wed, 13 Mar 2013 10:52:38 +0000 (11:52 +0100)]
Support RADIUS accounting of sent/received packets
Martin Willi [Wed, 13 Mar 2013 10:46:32 +0000 (11:46 +0100)]
Report the number of processed packets in "ipsec statusall"
Martin Willi [Wed, 13 Mar 2013 10:38:02 +0000 (11:38 +0100)]
child_sa_t.get_usestats() can additionally return the number of processed packets
Martin Willi [Wed, 13 Mar 2013 10:33:53 +0000 (11:33 +0100)]
Pass correclty sized pointer to lookup_algorithm() in PF_KEY
Martin Willi [Wed, 13 Mar 2013 10:31:36 +0000 (11:31 +0100)]
kernel_ipsec_t.query_sa() additionally returns the number of processed packets
Martin Willi [Wed, 13 Mar 2013 10:11:49 +0000 (11:11 +0100)]
Send NAS-Port, NAS-IP and Calling/Called-Station-ID in Access-Request
Martin Willi [Tue, 12 Mar 2013 19:33:08 +0000 (20:33 +0100)]
Forward Cisco Banner received from RADIUS to Unity capable clients
Martin Willi [Tue, 12 Mar 2013 19:32:05 +0000 (20:32 +0100)]
Add a radius message method to enumerate vendor specific attributes
Martin Willi [Tue, 12 Mar 2013 19:31:10 +0000 (20:31 +0100)]
Add Altiga Private Enterprise Numbers that Cisco uses in VPN 3000
Martin Willi [Tue, 12 Mar 2013 16:44:13 +0000 (17:44 +0100)]
In eap-radius, hand out received Framed-IP-Address attributes as virtual IP
Martin Willi [Fri, 8 Mar 2013 14:21:36 +0000 (15:21 +0100)]
Add missing XAuthRespPSK switch case to IKEv1 key derivation
Martin Willi [Mon, 11 Mar 2013 14:17:50 +0000 (15:17 +0100)]
strdup() iface passed to queue_route_reinstall(), fixing double-free
Martin Willi [Mon, 11 Mar 2013 14:16:13 +0000 (15:16 +0100)]
Support mutliple subnets and ranges as external load-tester addresses
Martin Willi [Mon, 11 Mar 2013 13:49:02 +0000 (14:49 +0100)]
Add a constructor to create in-memory pools from an address range
Martin Willi [Mon, 11 Mar 2013 11:32:21 +0000 (12:32 +0100)]
When adding Netlink attributes, increase header length with potential alignment
If the payload is unaligned, we must make sure the total netlink message
length includes the added alignment for the first attribute.
Martin Willi [Mon, 11 Mar 2013 10:30:47 +0000 (11:30 +0100)]
Clean up IKE_SA state if IKE_SA_INIT request does not have message ID 0
Martin Willi [Mon, 11 Mar 2013 09:52:13 +0000 (10:52 +0100)]
Ignore fourth Qick Mode message sent by Windows servers.
Initial patch by Paul Stewart, fixes #289.
Andreas Steffen [Mon, 11 Mar 2013 08:30:20 +0000 (09:30 +0100)]
added ITA Echo PA-TNC Subtype and ITA Echo Attribute type
Andreas Steffen [Mon, 11 Mar 2013 08:29:22 +0000 (09:29 +0100)]
version bump to 5.0.3dr4
Andreas Steffen [Mon, 11 Mar 2013 07:54:02 +0000 (08:54 +0100)]
moved ar_id from imv_agent to imv_state
Tobias Brunner [Fri, 8 Mar 2013 15:43:07 +0000 (16:43 +0100)]
esc() is only used if dladdr(3) is available
Tobias Brunner [Thu, 7 Mar 2013 17:21:02 +0000 (18:21 +0100)]
Fix maximum size of a mem_pool_t
Tobias Brunner [Thu, 7 Mar 2013 12:53:54 +0000 (13:53 +0100)]
New Android release after adding translations and Cert/EAP authentication
Also fixed a race condition during reauthentication and a freeze that
might happen while disconnecting.
Tobias Brunner [Thu, 7 Mar 2013 12:50:29 +0000 (13:50 +0100)]
android: Add support for combined certificate and EAP authentication
This uses RFC 4739 multiple authentication rounds to first
authenticate the client with a certificate followed by an
EAP authentication round with username and password.
Martin Willi [Thu, 7 Mar 2013 13:10:50 +0000 (14:10 +0100)]
Merge branch 'pt-tls'
Martin Willi [Thu, 7 Mar 2013 11:13:26 +0000 (12:13 +0100)]
If controller operations have a callback, don't succeed before hook gets called
Martin Willi [Thu, 7 Mar 2013 10:45:33 +0000 (11:45 +0100)]
Add a stroke command timeout option, and report status of completed command
Martin Willi [Thu, 7 Mar 2013 08:50:43 +0000 (09:50 +0100)]
As Quick Mode initiator, select a subset of the proposed and the returned TS
Cisco 5505 firewalls don't return the port if we send a specific one, letting
the is_contained_in() checks fail. Using get_subset() selection builds the
Quick Mode correctly with the common subset of selectors.
Based on an initial patch from Paul Stewart.
Martin Willi [Wed, 6 Mar 2013 13:39:51 +0000 (14:39 +0100)]
If TLS peer authentication not required, the client does nonetheless, allow it to fail
Andreas Steffen [Wed, 6 Mar 2013 10:50:32 +0000 (11:50 +0100)]
added some otherNames OIDs
Martin Willi [Tue, 5 Mar 2013 16:52:07 +0000 (17:52 +0100)]
Fix some apidoc in mem_pool.h
Tobias Brunner [Mon, 4 Mar 2013 17:05:49 +0000 (18:05 +0100)]
testing: Add screen package to base image
Makes working in a single SSH session easier.
Tobias Brunner [Mon, 4 Mar 2013 17:01:10 +0000 (18:01 +0100)]
testing: Enable ssh connection to second IP by name (e.g. moon1)
Tobias Brunner [Mon, 4 Mar 2013 10:55:26 +0000 (11:55 +0100)]
testing: ssh script accepts IP addresses instead of host names
Tobias Brunner [Mon, 4 Mar 2013 10:36:47 +0000 (11:36 +0100)]
testing: ssh script forwards arguments to ssh command
This allows to execute commands on a virtual host.
Andreas Steffen [Tue, 5 Mar 2013 08:08:25 +0000 (09:08 +0100)]
removed unneeded DS files
Andreas Steffen [Mon, 4 Mar 2013 22:21:21 +0000 (23:21 +0100)]
instead of cloning use extract_buf() method
Martin Willi [Mon, 4 Mar 2013 14:50:21 +0000 (15:50 +0100)]
Don't invoke addr2line if dladdr() did not yield a filename
Martin Willi [Mon, 4 Mar 2013 14:46:34 +0000 (15:46 +0100)]
When receiving critical signals, additionally log backtraces to syslog/files