Commit Graph
100 Commits
Author SHA1 Message Date
Reto Buerki f7fea72e46 Recipes: Disable Anet unit tests
Some Anet unit tests may fail because of the network configuration on
the testing host. These failures do not indicate a problem in Anet but
are a result of unpredictable events.
2013-03-25 16:49:30 +01:00
Reto Buerki 3db17b0ccc Fixed TKM build 2013-03-22 10:35:48 +01:00
Reto Buerki db50a35ad8 Add NEWS about TKM separation 2013-03-19 15:24:36 +01:00
Reto Buerki 0063e03325 Do not hardwire keys to KEY_RSA
Make the TKM private and public keys more easily extendable by
determining the associated key type dynamically.
2013-03-19 15:23:51 +01:00
Reto Buerki 38c1fd3cb1 Provide TKM credential encoder
The TKM credential encoder creates fingerprints of type
KEYID_PUBKEY_INFO_SHA1 and KEYID_PUBKEY_SHA1 using
CRED_PART_RSA_PUB_ASN1_DER.

This makes the pkcs1 plugin unnecessary.
2013-03-19 15:23:51 +01:00
Reto Buerki 1b22565ba5 Switch to openssl plugin 2013-03-19 15:23:51 +01:00
Reto Buerki 8484f2bc5c Implement multiple-clients integration test
Two transport connections to gateway sun are set up, one from client
carol and the other from client dave. The gateway sun uses the Trusted
Key Manager (TKM) and is the responder for both connections. The
authentication is based on X.509 certificates. In order to test the
connections, both carol and dave ping gateway sun.
2013-03-19 15:23:51 +01:00
Reto Buerki a520e4a010 Implement net2net-xfrmproxy integration test 2013-03-19 15:23:50 +01:00
Reto Buerki 847d320950 Implement net2net-initiator integration test 2013-03-19 15:23:50 +01:00
Reto Buerki d8b2064a34 Add xfrm_proxy integration test 2013-03-19 15:23:50 +01:00
Reto Buerki f10f7fe261 Provide script to build Ada XFRM proxy 2013-03-19 15:23:50 +01:00
Reto Buerki 3150dbd3e3 Add TKM responder integration test 2013-03-19 15:23:50 +01:00
Reto Buerki 117375ed00 Add initial TKM integration test
A connection between the hosts moon and sun is set up. The host moon
uses the Trusted Key Manager (TKM) and is the initiator of the transport
connection. The authentication is based on X.509 certificates.
2013-03-19 15:23:50 +01:00
Reto Buerki 7b702150a0 Add expect-file guest image script
This script can be used in pretest.dat files to wait until a given file
appears.
2013-03-19 15:23:50 +01:00
Reto Buerki 0e1d008d71 Add /usr/local/lib/ipsec to linker cache 2013-03-19 15:23:50 +01:00
Reto Buerki b491ee4ecd Provide recipes to build tkm and required libraries 2013-03-19 15:23:50 +01:00
Reto Buerki 3fc766d61e Add GNAT compiler and Ada libs to base image 2013-03-19 15:23:50 +01:00
Reto Buerki ae6f4ee39f Don't manually register kernel_netlink_net
Load complete kernel_netlink plugin instead. Registering the TKM
specific plugins first still ensures that the correct ipsec plugin
is used.

Lazy initialize the RNG_WEAK plugin to avoid the unsatisfiable
soft dependency on startup.
2013-03-19 15:23:50 +01:00
Reto Buerki 32b2ea9edb Move stroke plugin to the end of PLUGINS list
This fixes the problem of stroke being unable to load the ca
certificates on startup.
2013-03-19 15:23:50 +01:00
Reto Buerki 41eaaef79b Make sure IP_XFRM_POLICY is defined 2013-03-19 15:23:50 +01:00
Reto Buerki f47ea969f8 Implement TKM-specific credential set
The TKM credential set extends the in-memory credential set. It
provides a private key enumerator which is used to instantiate private
key proxy objects on-demand. This allows the usage of private keys with
arbitrary identifiers.
2013-03-19 15:23:50 +01:00
Reto Buerki ec169572a0 Initialize libstrongswan in test_runner main() 2013-03-19 15:23:50 +01:00
Reto Buerki 3360bad910 Remove result out parameter from EES Init
Error processing is done by the registered exception handler.
2013-03-19 15:23:49 +01:00
Reto Buerki c457128ab6 charon-tkm: Register TKM private key on startup 2013-03-19 15:23:49 +01:00
Reto Buerki 08d199fa3d Add TKM private key implementation
The key currently imitates the private key of [email protected] by
returning it's fingerprint in the get_fingerprint function.

This associates the private key with alice's X.509 cert and charon will
use it to create a signature over the local AUTH octets of the test
connection.

The private key serves as a proxy to the TKM ike_isa_sign operation and
extracts the required information from the auth octets chunk passed on
by the keymat.
2013-03-19 15:23:49 +01:00
Reto Buerki fe504b745d keymat: Store signature info in auth octets
Store the ISA context id and the initial message in the auth octets
chunk using the sign_info_t struct. Charon will pass on this information
to the TKM private key sign operation where it is extracted.
2013-03-19 15:23:49 +01:00
Reto Buerki a2f97ff860 Add AUTH signature info data structure
The sign_info_t type is used to transfer an ISA context id and the
initial message from the keymat to the TKM private key sign operation.
2013-03-19 15:23:49 +01:00
Reto Buerki 270b321e97 Implement Ada exception processing
Register a global exception action with the Ada runtime to log uncaught
exceptions to the daemon log and terminate.
2013-03-19 15:23:48 +01:00
Reto Buerki e0cb01f44d Implement Esa Event Service (EES)
The Esa Event Service can be used to trigger ESP SA (ESA) events such as
acquire or expire. The incoming events are forwarded to the hydra kernel
interface for processing.
2013-03-19 15:23:48 +01:00
Reto Buerki 6c237edb9a Remove netlink proxy from TKM kernel interface
The TKM is now able to manage simple child SAs, so there is no need for
the netlink proxy anymore.
2013-03-19 15:23:47 +01:00
Reto Buerki a642e3ba27 Avoid proxy for bypass_socket, enable_udp_decap
This is in preparation for the removal of the netlink kernel proxy. The
code is copied as-is from the kernel_netlink_ipsec plugin.
2013-03-19 15:23:47 +01:00
Reto Buerki 8f1dfb3d9e chunk_map: Store key, value pair in entry_t struct
To make the chunk map more robust it now stores a clone of the data
chunk given on insertion. The entry struct is needed to properly free
the allocated chunk after use.
2013-03-19 15:23:47 +01:00
Reto Buerki 3972769690 Call ike_isa_auth_psk in listener authorize hook
This exchange initiates the AUTH verification in the TKM.
2013-03-19 15:23:47 +01:00
Reto Buerki 9df5645623 listener: Register message hook
Use the message hook to save the AUTHENTICATION payload of an incoming
IKE_AUTH message.

The AUTH payload will be passed on to the TKM ike_isa_auth operation in
the authorize hook.
2013-03-19 15:23:47 +01:00
Reto Buerki 071e792a85 keymat: Add AUTH payload setter/getter functions
These functions are used in the TKM specific bus listener to
store/retrieve the AUTH payload chunk in the message/authorize hooks.
2013-03-19 15:23:47 +01:00
Reto Buerki d0ce4116b0 Register TKM bus listener in charon-tkm 2013-03-19 15:23:47 +01:00
Reto Buerki c6c8d74026 Add TKM specific bus listener skeleton
This listener gets informed about IKE authorization rounds and will be
used to call ike_isa_auth on a given ISA.
2013-03-19 15:23:47 +01:00
Reto Buerki d91acfdb5d Add ISA context id getter to TKM keymat 2013-03-19 15:23:47 +01:00
Reto Buerki cdd4d73ff5 keymat: Acquire AE context ID on initialization 2013-03-19 15:23:47 +01:00
Reto Buerki c755645032 Add TKM_CTX_AE (Authenticated Endpoint context) 2013-03-19 15:23:47 +01:00
Reto Buerki bf1034a776 keymat: Acquire ISA context ID on initialization 2013-03-19 15:23:47 +01:00
Reto Buerki 7fb3e5ed10 Add TKM_CTX_ISA (IKE SA context) 2013-03-19 15:23:46 +01:00
Reto Buerki fa22fc2419 Use remote PSK signature computed by TKM 2013-03-19 15:23:46 +01:00
Reto Buerki e7a497c307 keymat: Check for aes256-sha512 in derive_ike_keys
Return FALSE if peers try to use other algorithm combinations.
2013-03-19 15:23:46 +01:00
Reto Buerki e285544be2 Factor out AEAD transform creation
Introduce static aead_create_from_keys function to initialize AEAD
transforms from key chunks.
2013-03-19 15:23:46 +01:00
Reto Buerki 4be8471fab Add keymat IKE key derivation test case 2013-03-19 15:23:46 +01:00
Reto Buerki 3290b9995c 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.
2013-03-19 15:23:46 +01:00
Reto Buerki 4c38878db5 keymat: Extract enc,inc algorithms from proposal
Extract encryption and integrity algorithms from proposal and check them
before deriving IKE keys.
2013-03-19 15:23:46 +01:00
Reto Buerki fc828aaac6 keymat: Call TKM Isa_Create procedure 2013-03-19 15:23:46 +01:00
Reto Buerki 0327fac6b6 Implement chunk_to_sequence function
This function converts a given chunk to a variable-length byte sequence.
2013-03-19 15:23:46 +01:00
Reto Buerki 53232d5883 Implement sequence_to_chunk function
This function converts a given TKM variable-length byte sequence to
chunk.
2013-03-19 15:23:46 +01:00
Reto Buerki ebe592a393 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.
2013-03-19 15:23:46 +01:00
Reto Buerki 1ee792f9ea 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.
2013-03-19 15:23:45 +01:00
Reto Buerki 5b3bcdfada Add skeleton for TKM keymat variant 2013-03-19 15:23:45 +01:00
Reto Buerki 84967b4439 id_manager: Use limits given by TKM 2013-03-19 15:23:45 +01:00
Reto Buerki 50e35e66d2 Pass context limits on to id manager 2013-03-19 15:23:45 +01:00
Reto Buerki ef5372395a Request limits from TKM on init 2013-03-19 15:23:45 +01:00
Reto Buerki 7aa573a50e 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.
2013-03-19 15:23:45 +01:00
Reto Buerki 49c513c1d9 Use id manager to acquire DH context id 2013-03-19 15:23:45 +01:00
Reto Buerki 65a777f7fb Add TKM_CTX_DH (Diffie-Hellman context) to id manager 2013-03-19 15:23:45 +01:00
Reto Buerki c38459d77d Use id manager to acquire nonce context id 2013-03-19 15:23:45 +01:00
Reto Buerki f3cd7f50de 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.
2013-03-19 15:23:45 +01:00
Reto Buerki d51305aa3f charon-tkm: Register tkm nonce generator 2013-03-19 15:23:45 +01:00
Reto Buerki 8e95bf455d tkm_nonceg: Return nonce generated by TKM 2013-03-19 15:23:45 +01:00
Reto Buerki 3d2746309e Initialize TKM client library in tkm.c 2013-03-19 15:23:45 +01:00
Reto Buerki 559fe48c50 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.
2013-03-19 15:23:45 +01:00
Reto Buerki b32e732b2f Check kvm command existence in start-testing 2013-02-22 19:22:08 +01:00
Reto Buerki 88bffacfdc Drop vim swap file 2013-01-17 16:55:04 +01:00
Reto Buerki f3db566983 Enforce reception of multicast traffic on virbr[1|2]
This is needed to let the ha/both-active test pass.
2013-01-17 16:55:04 +01:00
Reto Buerki 41943e9c1b Make core dumps work
Core dumps are written to the /var/local/dumps directory.
2013-01-17 16:55:04 +01:00
Reto Buerki e3a3013323 Append seconds to TESTDATE
This avoids 'file exists' warnings when running tests multiple times in
one minute.
2013-01-17 16:55:04 +01:00
Reto Buerki 2c4954ad24 Switch to 'mapped' access mode for hostfs
Passthrough mode only works as expected when running as root. On
Debian/Ubuntu systems qemu runs as user 'libvirt-qemu' and group 'kvm'
so all shared files must be chowned to grant access from guests.

Symlinks created on the host are still problematic because the Plan 9
filesystem has no direct notion of symbolic links, see [1].

[1] - http://ericvh.github.com/9p-rfc/rfc9p2000.u.html
2013-01-17 16:55:04 +01:00
Reto Buerki 677795c3e7 Make guest ACPI shutdown work 2013-01-17 16:55:03 +01:00
Reto Buerki c25f850601 Drop obsolete Gentoo dhcpd init script 2013-01-17 16:55:03 +01:00
Reto Buerki 530f7b8421 No need to enable ip_forward in pretest files
It is enabled by default now.
2013-01-17 16:55:03 +01:00
Reto Buerki 49b1655ae1 Auto-create symlink to testing directory in workdir 2013-01-17 16:55:03 +01:00
Reto Buerki aafc0a1799 Make test scripts callable from any path 2013-01-17 16:54:58 +01:00
Reto Buerki 0593b6c975 Export compile directory to guests
Use 9p over virtio to share files on the host with the guest domains.
The files are accessible in the guests /hostfs directory.
2013-01-17 16:54:58 +01:00
Reto Buerki 48ea1d8b0b Create all images in $BUILDDIR/images 2013-01-17 16:54:58 +01:00
Reto Buerki 482d3ec9ff Also restore 'default' host configuration 2013-01-17 16:54:58 +01:00
Reto Buerki 58e0b386ea Add eth1 NIC to alice domain 2013-01-17 16:54:58 +01:00
Reto Buerki 602ba2f6d1 Adjust ikev2/farp test to qemu network interfaces 2013-01-17 16:54:58 +01:00
Reto Buerki 23382d2e00 Directly use STRONGSWANHOSTS in build-guestimages
Drop support for building guests specified on the command line; creating
all images unconditionally is very fast now thanks to qcow2.
2013-01-17 16:54:57 +01:00
Reto Buerki 12f1ff3a0e Drop SELECTEDTESTSONLY support 2013-01-17 16:54:57 +01:00
Reto Buerki 50fb9b8457 Use exit trap to kill open ssh sessions 2013-01-17 16:54:57 +01:00
Reto Buerki 7fa92110e8 Adjust ikev2/dhcp tests to qemu network interfaces 2013-01-17 16:54:57 +01:00
Reto Buerki b351656cc7 Disable checksum offloading on moon's eth1 interface
Disable checksum offloading on eth1 because it does not currently work
with virtio and the isc-dhcp-server running on venus, see [1].

[1] - https://bugs.mageia.org/show_bug.cgi?id=1243
2013-01-17 16:54:57 +01:00
Reto Buerki 63178a8830 Add ethtool to debootstrap package includes 2013-01-17 16:54:56 +01:00
Reto Buerki 82499010eb stop-testing requires virsh 2013-01-17 16:54:56 +01:00
Reto Buerki bd4c6122a4 Add ssh config to guest root account 2013-01-17 16:54:56 +01:00
Reto Buerki cbe031d755 Make root image a clone of the base image 2013-01-17 16:54:56 +01:00
Reto Buerki 76ccd25a05 Add expect-connection guest image script
This script can be used in pretest.dat files to wait until an IPsec
connection becomes available. This avoids unconditional sleeps and
improves test performance.

The ipv6 tests have been updated to use the expect-connection script.
2013-01-17 16:54:55 +01:00
Reto Buerki 44e83859e0 Rename build-umlhostfs script to build-guestimages 2013-01-17 16:54:55 +01:00
Reto Buerki 90dd71e41c Rename build-umlrootfs script to build-rootimg 2013-01-17 16:54:55 +01:00
Reto Buerki 258cbd40cf Unify naming of base,root image settings 2013-01-17 16:54:55 +01:00
Reto Buerki aba43136c2 Drop now obsolete UML helper functions 2013-01-17 16:54:55 +01:00
Reto Buerki 345dba0de4 Exclude iptables from debootstrap 2013-01-17 16:54:55 +01:00
Reto Buerki 74c0839ad6 Run on_exit commands in FILO order 2013-01-17 16:54:54 +01:00
Reto Buerki 97265abaf0 Inform kernel about /dev/nbd0 partition changes 2013-01-17 16:54:54 +01:00
Reto Buerki b24d3ed5fc Test availability of required commands 2013-01-17 16:54:54 +01:00