Handle collisions between rekey and the following delete properly
[strongswan.git] / NEWS
diff --git a/NEWS b/NEWS
index 3d37723..5cc4584 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,684 @@
+strongswan-4.4.1
+----------------
+
+- The major refactoring of the IKEv1 Mode Config functionality now allows
+  the transport and handling of any Mode Config attribute.
+
+
+strongswan-4.4.0
+----------------
+
+- The IKEv2 High Availability plugin has been integrated. It provides
+  load sharing and failover capabilities in a cluster of currently two nodes,
+  based on an extend ClusterIP kernel module. More information is available at
+  http://wiki.strongswan.org/projects/strongswan/wiki/HighAvailability.
+  The development of the High Availability functionality was sponsored by
+  secunet Security Networks AG.
+
+- Added IKEv1 and IKEv2 configuration support for the AES-GMAC
+  authentication-only ESP cipher. Our aes_gmac kernel patch or a Linux
+  2.6.34 kernel is required to make AES-GMAC available via the XFRM
+  kernel interface.
+
+- Added support for Diffie-Hellman groups 22, 23 and 24 to the gmp, gcrypt
+  and openssl plugins, usable by both pluto and charon. The new proposal
+  keywords are modp1024s160, modp2048s224 and modp2048s256. Thanks to Joy Latten
+  from IBM for his contribution.
+
+- The IKEv1 pluto daemon supports RAM-based virtual IP pools using
+  the rightsourceip directive with a subnet from which addresses
+  are allocated.
+
+- The ipsec pki --gen and --pub commands now allow the output of
+  private and public keys in PEM format using the --outform pem
+  command line option.
+
+- The new DHCP plugin queries virtual IP addresses for clients from a DHCP
+  server using broadcasts, or a defined server using the
+  charon.plugins.dhcp.server strongswan.conf option. DNS/WINS server information
+  is additionally served to clients if the DHCP server provides such
+  information. The plugin is used in ipsec.conf configurations having
+  rightsourceip set to %dhcp.
+
+- A new plugin called farp fakes ARP responses for virtual IP addresses
+  handed out to clients from the IKEv2 daemon charon. The plugin lets a
+  road-warrior act as a client on the local LAN if it uses a virtual IP
+  from the responders subnet, e.g. acquired using the DHCP plugin.
+
+- The existing IKEv2 socket implementations have been migrated to the
+  socket-default and the socket-raw plugins. The new socket-dynamic plugin
+  binds sockets dynamically to ports configured via the left-/rightikeport
+  ipsec.conf connection parameters.
+
+- The android charon plugin stores received DNS server information as "net.dns"
+  system properties, as used by the Android platform.
+
+
+strongswan-4.3.6
+----------------
+
+- The IKEv2 daemon supports RFC 3779 IP address block constraints
+  carried as a critical X.509v3 extension in the peer certificate.
+
+- The ipsec pool --add|del dns|nbns command manages DNS and NBNS name
+  server entries that are sent via the IKEv1 Mode Config or IKEv2
+  Configuration Payload to remote clients.
+
+- The Camellia cipher can be used as an IKEv1 encryption algorithm.
+
+- The IKEv1 and IKEV2 daemons now check certificate path length constraints.
+
+- The new ipsec.conf conn option "inactivity" closes a CHILD_SA if no traffic
+  was sent or received within the given interval. To close the complete IKE_SA
+  if its only CHILD_SA was inactive, set the global strongswan.conf option
+  "charon.inactivity_close_ike" to yes.
+
+- More detailed IKEv2 EAP payload information in debug output
+
+- IKEv2 EAP-SIM and EAP-AKA share joint libsimaka library
+
+- Added required userland changes for proper SHA256 and SHA384/512 in ESP that
+  will be introduced with Linux 2.6.33. The "sha256"/"sha2_256" keyword now
+  configures the kernel with 128 bit truncation, not the non-standard 96
+  bit truncation used by previous releases. To use the old 96 bit truncation
+  scheme, the new "sha256_96" proposal keyword has been introduced.
+
+- Fixed IPComp in tunnel mode, stripping out the duplicated outer header. This
+  change makes IPcomp tunnel mode connections incompatible with previous
+  releases; disable compression on such tunnels.
+
+- Fixed BEET mode connections on recent kernels by installing SAs with
+  appropriate traffic selectors, based on a patch by Michael Rossberg.
+
+- Using extensions (such as BEET mode) and crypto algorithms (such as twofish,
+  serpent, sha256_96) allocated in the private use space now require that we
+  know its meaning, i.e. we are talking to strongSwan. Use the new
+  "charon.send_vendor_id" option in strongswan.conf to let the remote peer know
+  this is the case.
+
+- Experimental support for draft-eronen-ipsec-ikev2-eap-auth, where the
+  responder omits public key authentication in favor of a mutual authentication
+  method. To enable EAP-only authentication, set rightauth=eap on the responder
+  to rely only on the MSK constructed AUTH payload. This not-yet standardized
+  extension requires the strongSwan vendor ID introduced above.
+
+- The IKEv1 daemon ignores the Juniper SRX notification type 40001, thus
+  allowing interoperability.
+
+
+strongswan-4.3.5
+----------------
+
+- The IKEv1 pluto daemon can now use SQL-based address pools to deal out
+  virtual IP addresses as a Mode Config server. The pool capability has been
+  migrated from charon's sql plugin to a new attr-sql plugin which is loaded
+  by libstrongswan and which can be used by both daemons either with a SQLite
+  or MySQL database and the corresponding plugin.
+
+- Plugin names have been streamlined: EAP plugins now have a dash after eap
+  (e.g. eap-sim), as it is used with the --enable-eap-sim ./configure option.
+  Plugin configuration sections in strongswan.conf now use the same name as the
+  plugin itself (i.e. with a dash). Make sure to update "load" directives and
+  the affected plugin sections in existing strongswan.conf files.
+
+- The private/public key parsing and encoding has been split up into
+  separate pkcs1, pgp, pem and dnskey plugins. The public key implementation
+  plugins gmp, gcrypt and openssl can all make use of them.
+
+- The EAP-AKA plugin can use different backends for USIM/quintuplet
+  calculations, very similar to the EAP-SIM plugin. The existing 3GPP2 software
+  implementation has been migrated to a separate plugin.
+
+- The IKEv2 daemon charon gained basic PGP support. It can use locally installed
+  peer certificates and can issue signatures based on RSA private keys.
+
+- The new 'ipsec pki' tool provides a set of commands to maintain a public
+  key infrastructure. It currently supports operations to create RSA and ECDSA
+  private/public keys, calculate fingerprints and issue or verify certificates.
+
+- Charon uses a monotonic time source for statistics and job queueing, behaving
+  correctly if the system time changes (e.g. when using NTP).
+
+- In addition to time based rekeying, charon supports IPsec SA lifetimes based
+  on processed volume or number of packets. They new ipsec.conf paramaters
+  'lifetime' (an alias to 'keylife'), 'lifebytes' and 'lifepackets' handle
+  SA timeouts, while the parameters 'margintime' (an alias to rekeymargin),
+  'marginbytes' and 'marginpackets' trigger the rekeying before a SA expires.
+  The existing parameter 'rekeyfuzz' affects all margins.
+
+- If no CA/Gateway certificate is specified in the NetworkManager plugin,
+  charon uses a set of trusted root certificates preinstalled by distributions.
+  The directory containing CA certificates can be specified using the
+  --with-nm-ca-dir=path configure option.
+
+- Fixed the encoding of the Email relative distinguished name in left|rightid
+  statements.
+
+- Fixed the broken parsing of PKCS#7 wrapped certificates by the pluto daemon.
+
+- Fixed smartcard-based authentication in the pluto daemon which was broken by
+  the ECDSA support introduced with the 4.3.2 release.
+
+- A patch contributed by Heiko Hund fixes mixed IPv6 in IPv4 and vice versa
+  tunnels established with the IKEv1 pluto daemon.
+
+- The pluto daemon now uses the libstrongswan x509 plugin for certificates and
+  CRls and the struct id type was replaced by identification_t used by charon
+  and the libstrongswan library.
+
+
+strongswan-4.3.4
+----------------
+
+- IKEv2 charon daemon ported to FreeBSD and Mac OS X. Installation details can
+  be found on wiki.strongswan.org.
+
+- ipsec statusall shows the number of bytes transmitted and received over
+  ESP connections configured by the IKEv2 charon daemon.
+
+- The IKEv2 charon daemon supports include files in ipsec.secrets.
+
+
+strongswan-4.3.3
+----------------
+
+- The configuration option --enable-integrity-test plus the strongswan.conf
+  option libstrongswan.integrity_test = yes activate integrity tests
+  of the IKE daemons charon and pluto, libstrongswan and all loaded
+  plugins. Thus dynamic library misconfigurations and non-malicious file
+  manipulations can be reliably detected.
+
+- The new default setting libstrongswan.ecp_x_coordinate_only=yes allows
+  IKEv1 interoperability with MS Windows using the ECP DH groups 19 and 20.
+
+- The IKEv1 pluto daemon now supports the AES-CCM and AES-GCM ESP
+  authenticated encryption algorithms.
+
+- The IKEv1 pluto daemon now supports V4 OpenPGP keys.
+
+- The RDN parser vulnerability discovered by Orange Labs research team
+  was not completely fixed in version 4.3.2. Some more modifications
+  had to be applied to the asn1_length() function to make it robust.
+
+
+strongswan-4.3.2
+----------------
+
+- The new gcrypt plugin provides symmetric cipher, hasher, RNG, Diffie-Hellman
+  and RSA crypto primitives using the LGPL licensed GNU gcrypt library.
+
+- libstrongswan features an integrated crypto selftest framework for registered
+  algorithms. The test-vector plugin provides a first set of test vectors and
+  allows pluto and charon to rely on tested crypto algorithms.
+
+- pluto can now use all libstrongswan plugins with the exception of x509 and xcbc.
+  Thanks to the openssl plugin, the ECP Diffie-Hellman groups 19, 20, 21, 25, and
+  26 as well as ECDSA-256, ECDSA-384, and ECDSA-521 authentication can be used
+  with IKEv1.
+
+- Applying their fuzzing tool, the Orange Labs vulnerability research team found
+  another two DoS vulnerabilities, one in the rather old ASN.1 parser of Relative
+  Distinguished Names (RDNs) and a second one in the conversion of ASN.1 UTCTIME
+  and GENERALIZEDTIME strings to a time_t value.
+
+
+strongswan-4.3.1
+----------------
+
+- The nm plugin now passes DNS/NBNS server information to NetworkManager,
+  allowing a gateway administrator to set DNS/NBNS configuration on clients
+  dynamically.
+
+- The nm plugin also accepts CA certificates for gateway authentication. If
+  a CA certificate is configured, strongSwan uses the entered gateway address
+  as its idenitity, requiring the gateways certificate to contain the same as
+  subjectAltName. This allows a gateway administrator to deploy the same
+  certificates to Windows 7 and NetworkManager clients.
+
+- The command ipsec purgeike deletes IKEv2 SAs that don't have a CHILD SA.
+  The command ipsec down <conn>{n} deletes CHILD SA instance n of connection
+  <conn> whereas ipsec down <conn>{*} deletes all CHILD SA instances.
+  The command ipsec down <conn>[n] deletes IKE SA instance n of connection
+  <conn> plus dependent CHILD SAs whereas ipsec down <conn>[*] deletes all
+  IKE SA instances of connection <conn>.
+
+- Fixed a regression introduced in 4.3.0 where EAP authentication calculated
+  the AUTH payload incorrectly. Further, the EAP-MSCHAPv2 MSK key derivation
+  has been updated to be compatible with the Windows 7 Release Candidate.
+
+- Refactored installation of triggering policies. Routed policies are handled
+  outside of IKE_SAs to keep them installed in any case. A tunnel gets
+  established only once, even if initiation is delayed due network outages.
+
+- Improved the handling of multiple acquire signals triggered by the kernel.
+
+- Fixed two DoS vulnerabilities in the charon daemon that were discovered by
+  fuzzing techniques: 1) Sending a malformed IKE_SA_INIT request leaved an
+  incomplete state which caused a null pointer dereference if a subsequent
+  CREATE_CHILD_SA request was sent. 2) Sending an IKE_AUTH request with either
+  a missing TSi or TSr payload caused a null pointer derefence because the
+  checks for TSi and TSr were interchanged. The IKEv2 fuzzer used was
+  developped by the Orange Labs vulnerability research team. The tool was
+  initially written by Gabriel Campana and is now maintained by Laurent Butti.
+
+- Added support for AES counter mode in ESP in IKEv2 using the proposal
+  keywords aes128ctr, aes192ctr and aes256ctr.
+
+- Further progress in refactoring pluto: Use of the curl and ldap plugins
+  for fetching crls and OCSP. Use of the random plugin to get keying material
+  from /dev/random or /dev/urandom. Use of the openssl plugin as an alternative
+  to the aes, des, sha1, sha2, and md5 plugins. The blowfish, twofish, and
+  serpent encryption plugins are now optional and are not enabled by default.
+
+
+strongswan-4.3.0
+----------------
+
+- Support for the IKEv2 Multiple Authentication Exchanges extension (RFC4739).
+  Initiators and responders can use several authentication rounds (e.g. RSA
+  followed by EAP) to authenticate. The new ipsec.conf leftauth/rightauth and
+  leftauth2/rightauth2 parameters define own authentication rounds or setup
+  constraints for the remote peer. See the ipsec.conf man page for more detials.
+
+- If glibc printf hooks (register_printf_function) are not available,
+  strongSwan can use the vstr string library to run on non-glibc systems.
+
+- The IKEv2 charon daemon can now configure the ESP CAMELLIA-CBC cipher
+  (esp=camellia128|192|256).
+
+- Refactored the pluto and scepclient code to use basic functions (memory
+  allocation, leak detective, chunk handling, printf_hooks, strongswan.conf
+  attributes, ASN.1 parser, etc.) from the libstrongswan library.
+
+- Up to two DNS and WINS servers to be sent via IKEv1 ModeConfig can be
+  configured in the pluto section of strongswan.conf.
+
+
+strongswan-4.2.14
+-----------------
+
+- The new server-side EAP RADIUS plugin (--enable-eap-radius)
+  relays EAP messages to and from a RADIUS server. Succesfully
+  tested with with a freeradius server using EAP-MD5 and EAP-SIM.
+
+- A vulnerability in the Dead Peer Detection (RFC 3706) code was found by
+  Gerd v. Egidy <gerd.von.egidy@intra2net.com> of Intra2net AG affecting
+  all Openswan and strongSwan releases. A malicious (or expired ISAKMP)
+  R_U_THERE or R_U_THERE_ACK Dead Peer Detection packet can cause the
+  pluto IKE daemon to crash and restart. No authentication or encryption
+  is required to trigger this bug. One spoofed UDP packet can cause the
+  pluto IKE daemon to restart and be unresponsive for a few seconds while
+  restarting. This DPD null state vulnerability has been officially
+  registered as CVE-2009-0790 and is fixed by this release.
+
+- ASN.1 to time_t conversion caused a time wrap-around for
+  dates after Jan 18 03:14:07 UTC 2038 on 32-bit platforms.
+  As a workaround such dates are set to the maximum representable
+  time, i.e. Jan 19 03:14:07 UTC 2038.
+
+- Distinguished Names containing wildcards (*) are not sent in the
+  IDr payload anymore.
+
+
+strongswan-4.2.13
+-----------------
+
+- Fixed a use-after-free bug in the DPD timeout section of the
+  IKEv1 pluto daemon which sporadically caused a segfault.
+
+- Fixed a crash in the IKEv2 charon daemon occuring with
+  mixed RAM-based and SQL-based virtual IP address pools.
+
+- Fixed ASN.1 parsing of algorithmIdentifier objects where the
+  parameters field is optional.
+
+- Ported nm plugin to NetworkManager 7.1.
+
+
+strongswan-4.2.12
+-----------------
+
+- Support of the EAP-MSCHAPv2 protocol enabled by the option
+  --enable-eap-mschapv2. Requires the MD4 hash algorithm enabled
+  either by --enable-md4 or --enable-openssl.
+
+- Assignment of up to two DNS and up to two WINS servers to peers via
+  the IKEv2 Configuration Payload (CP). The IPv4 or IPv6 nameserver
+  addresses are defined in strongswan.conf.
+
+- The strongSwan applet for the Gnome NetworkManager is now built and
+  distributed as a separate tarball under the name NetworkManager-strongswan.
+
+
+strongswan-4.2.11
+-----------------
+
+- Fixed ESP NULL encryption broken by the refactoring of keymat.c.
+  Also introduced proper initialization and disposal of keying material.
+
+- Fixed the missing listing of connection definitions in ipsec statusall
+  broken by an unfortunate local variable overload.
+
+
+strongswan-4.2.10
+-----------------
+
+- Several performance improvements to handle thousands of tunnels with almost
+  linear upscaling. All relevant data structures have been replaced by faster
+  counterparts with better lookup times.
+
+- Better parallelization to run charon on multiple cores. Due to improved
+  ressource locking and other optimizations the daemon can take full
+  advantage of 16 or even more cores.
+
+- The load-tester plugin can use a NULL Diffie-Hellman group and simulate
+  unique identities and certificates by signing peer certificates using a CA
+  on the fly.
+
+- The redesigned stroke in-memory IP pool handles leases. The "ipsec leases"
+  command queries assigned leases.
+
+- Added support for smartcards in charon by using the ENGINE API provided by
+  OpenSSL, based on patches by Michael Ro├čberg.
+
+- The Padlock plugin supports the hardware RNG found on VIA CPUs to provide a
+  reliable source of randomness.
+
+strongswan-4.2.9
+----------------
+
+- Flexible configuration of logging subsystem allowing to log to multiple
+  syslog facilities or to files using fine-grained log levels for each target.
+
+- Load testing plugin to do stress testing of the IKEv2 daemon against self
+  or another host. Found and fixed issues during tests in the multi-threaded
+  use of the OpenSSL plugin.
+
+- Added profiling code to synchronization primitives to find bottlenecks if
+  running on multiple cores. Found and fixed an issue where parts of the
+  Diffie-Hellman calculation acquired an exclusive lock. This greatly improves
+  parallelization to multiple cores.
+
+- updown script invocation has been separated into a plugin of its own to
+  further slim down the daemon core.
+
+- Separated IKE_SA/CHILD_SA key derivation process into a closed system,
+  allowing future implementations to use a secured environment in e.g. kernel
+  memory or hardware.
+
+- The kernel interface of charon has been modularized. XFRM NETLINK (default)
+  and PFKEY (--enable-kernel-pfkey) interface plugins for the native IPsec
+  stack of the Linux 2.6 kernel as well as a PFKEY interface for the KLIPS
+  IPsec stack (--enable-kernel-klips) are provided.
+
+- Basic Mobile IPv6 support has been introduced, securing Binding Update
+  messages as well as tunneled traffic between Mobile Node and Home Agent.
+  The installpolicy=no option allows peaceful cooperation with a dominant
+  mip6d daemon and the new type=transport_proxy implements the special MIPv6
+  IPsec transport proxy mode where the IKEv2 daemon uses the Care-of-Address
+  but the IPsec SA is set up for the Home Adress.
+
+- Implemented migration of Mobile IPv6 connections using the KMADDRESS
+  field contained in XFRM_MSG_MIGRATE messages sent by the mip6d daemon
+  via the Linux 2.6.28 (or appropriately patched) kernel.
+
+
+strongswan-4.2.8
+----------------
+
+- IKEv2 charon daemon supports authentication based on raw public keys
+  stored in the SQL database backend. The ipsec listpubkeys command
+  lists the available raw public keys via the stroke interface.
+
+- Several MOBIKE improvements: Detect changes in NAT mappings in DPD exchanges,
+  handle events if kernel detects NAT mapping changes in UDP-encapsulated
+  ESP packets (requires kernel patch), reuse old addesses in MOBIKE updates as
+  long as possible and other fixes.
+
+- Fixed a bug in addr_in_subnet() which caused insertion of wrong source
+  routes for destination subnets having netwmasks not being a multiple of 8 bits.
+  Thanks go to Wolfgang Steudel, TU Ilmenau for reporting this bug.
+
+
+strongswan-4.2.7
+----------------
+
+- Fixed a Denial-of-Service vulnerability where an IKE_SA_INIT message with
+  a KE payload containing zeroes only can cause a crash of the IKEv2 charon
+  daemon due to a NULL pointer returned by the mpz_export() function of the
+  GNU Multiprecision Library (GMP). Thanks go to Mu Dynamics Research Labs
+  for making us aware of this problem.
+
+- The new agent plugin provides a private key implementation on top of an
+  ssh-agent.
+
+- The NetworkManager plugin has been extended to support certificate client
+  authentication using RSA keys loaded from a file or using ssh-agent.
+
+- Daemon capability dropping has been ported to libcap and must be enabled
+  explicitly --with-capabilities=libcap. Future version will support the
+  newer libcap2 library.
+
+- ipsec listalgs lists the IKEv2 cryptografic algorithms registered with the
+  charon keying daemon.
+
+
+strongswan-4.2.6
+----------------
+
+- A NetworkManager plugin allows GUI-based configuration of road-warrior
+  clients in a simple way. It features X509 based gateway authentication
+  and EAP client authentication, tunnel setup/teardown and storing passwords
+  in the Gnome Keyring.
+
+- A new EAP-GTC plugin implements draft-sheffer-ikev2-gtc-00.txt and allows
+  username/password authentication against any PAM service on the gateway.
+  The new EAP method interacts nicely with the NetworkManager plugin and allows
+  client authentication against e.g. LDAP.
+
+- Improved support for the EAP-Identity method. The new ipsec.conf eap_identity
+  parameter defines an additional identity to pass to the server in EAP
+  authentication.
+
+- The "ipsec statusall" command now lists CA restrictions, EAP
+  authentication types and EAP identities.
+
+- Fixed two multithreading deadlocks occurring when starting up
+  several hundred tunnels concurrently.
+
+- Fixed the --enable-integrity-test configure option which
+  computes a SHA-1 checksum over the libstrongswan library.
+
+
+strongswan-4.2.5
+----------------
+
+- Consistent logging of IKE and CHILD SAs at the audit (AUD) level.
+
+- Improved the performance of the SQL-based virtual IP address pool
+  by introducing an additional addresses table. The leases table
+  storing only history information has become optional and can be
+  disabled by setting charon.plugins.sql.lease_history = no in
+  strongswan.conf.
+
+- The XFRM_STATE_AF_UNSPEC flag added to xfrm.h allows IPv4-over-IPv6
+  and IPv6-over-IPv4 tunnels with the 2.6.26 and later Linux kernels.
+
+- management of different virtual IP pools for different
+  network interfaces have become possible.
+
+- fixed a bug which prevented the assignment of more than 256
+  virtual IP addresses from a pool managed by an sql database.
+
+- fixed a bug which did not delete own IPCOMP SAs in the kernel.
+
+
+strongswan-4.2.4
+----------------
+
+- Added statistics functions to ipsec pool --status and ipsec pool --leases
+  and input validation checks to various ipsec pool commands.
+
+- ipsec statusall now lists all loaded charon plugins and displays
+  the negotiated IKEv2 cipher suite proposals.
+
+- The openssl plugin supports the elliptic curve Diffie-Hellman groups
+  19, 20, 21, 25, and 26.
+
+- The openssl plugin supports ECDSA authentication using elliptic curve
+  X.509 certificates.
+
+- Fixed a bug in stroke which caused multiple charon threads to close
+  the file descriptors during packet transfers over the stroke socket.
+
+- ESP sequence numbers are now migrated in IPsec SA updates handled by
+  MOBIKE. Works only with Linux kernels >= 2.6.17.
+
+
+strongswan-4.2.3
+----------------
+
+- Fixed the strongswan.conf path configuration problem that occurred when
+  --sysconfig was not set explicitly in ./configure.
+
+- Fixed a number of minor bugs that where discovered during the 4th
+  IKEv2 interoperability workshop in San Antonio, TX.
+
+
+strongswan-4.2.2
+----------------
+
+- Plugins for libstrongswan and charon can optionally be loaded according
+  to a configuration in strongswan.conf. Most components provide a
+  "load = " option followed by a space separated list of plugins to load.
+  This allows e.g. the fallback from a hardware crypto accelerator to
+  to software-based crypto plugins.
+
+- Charons SQL plugin has been extended by a virtual IP address pool.
+  Configurations with a rightsourceip=%poolname setting query a SQLite or
+  MySQL database for leases. The "ipsec pool" command helps in administrating
+  the pool database. See ipsec pool --help for the available options
+
+- The Authenticated Encryption Algorithms AES-CCM-8/12/16 and AES-GCM-8/12/16
+  for ESP are now supported starting with the Linux 2.6.25 kernel. The
+  syntax is e.g. esp=aes128ccm12 or esp=aes256gcm16.
+
+
+strongswan-4.2.1
+----------------
+
+- Support for "Hash and URL" encoded certificate payloads has been implemented
+  in the IKEv2 daemon charon. Using the "certuribase" option of a CA section
+  allows to assign a base URL to all certificates issued by the specified CA.
+  The final URL is then built by concatenating that base and the hex encoded
+  SHA1 hash of the DER encoded certificate. Note that this feature is disabled
+  by default and must be enabled using the option "charon.hash_and_url".
+
+- The IKEv2 daemon charon now supports the "uniqueids" option to close multiple
+  IKE_SAs with the same peer. The option value "keep" prefers existing
+  connection setups over new ones, where the value "replace" replaces existing
+  connections.
+
+- The crypto factory in libstrongswan additionaly supports random number
+  generators, plugins may provide other sources of randomness. The default
+  plugin reads raw random data from /dev/(u)random.
+
+- Extended the credential framework by a caching option to allow plugins
+  persistent caching of fetched credentials. The "cachecrl" option has been
+  re-implemented.
+
+- The new trustchain verification introduced in 4.2.0 has been parallelized.
+  Threads fetching CRL or OCSP information no longer block other threads.
+
+- A new IKEv2 configuration attribute framework has been introduced allowing
+  plugins to provide virtual IP addresses, and in the future, other
+  configuration attribute services (e.g. DNS/WINS servers).
+
+- The stroke plugin has been extended to provide virtual IP addresses from
+  a pool defined in ipsec.conf. The "rightsourceip" parameter now accepts
+  address pools in CIDR notation (e.g. 10.1.1.0/24). The parameter also accepts
+  the value "%poolname", where "poolname" identifies a pool provided by a
+  separate plugin.
+
+- Fixed compilation on uClibc and a couple of other minor bugs.
+
+- Set DPD defaults in ipsec starter to dpd_delay=30s and dpd_timeout=150s.
+
+- The IKEv1 pluto daemon now supports the ESP encryption algorithm CAMELLIA
+  with key lengths of 128, 192, and 256 bits, as well as the authentication
+  algorithm AES_XCBC_MAC. Configuration example: esp=camellia192-aesxcbc.
+
+
+strongswan-4.2.0
+----------------
+
+- libstrongswan has been modularized to attach crypto algorithms,
+  credential implementations (keys, certificates) and fetchers dynamically
+  through plugins. Existing code has been ported to plugins:
+    - RSA/Diffie-Hellman implementation using the GNU Multi Precision library
+    - X509 certificate system supporting CRLs, OCSP and attribute certificates
+    - Multiple plugins providing crypto algorithms in software
+    - CURL and OpenLDAP fetcher
+
+- libstrongswan gained a relational database API which uses pluggable database
+  providers. Plugins for MySQL and SQLite are available.
+
+- The IKEv2 keying daemon charon is more extensible. Generic plugins may provide
+  connection configuration, credentials and EAP methods or control the daemon.
+  Existing code has been ported to plugins:
+    - EAP-AKA, EAP-SIM, EAP-MD5 and EAP-Identity
+    - stroke configuration, credential and control (compatible to pluto)
+    - XML bases management protocol to control and query the daemon
+  The following new plugins are available:
+    - An experimental SQL configuration, credential and logging plugin on
+      top of either MySQL or SQLite
+    - A unit testing plugin to run tests at daemon startup
+
+- The authentication and credential framework in charon has been heavily
+  refactored to support modular credential providers, proper
+  CERTREQ/CERT payload exchanges and extensible authorization rules.
+
+- The framework of strongSwan Manager has envolved to the web application
+  framework libfast (FastCGI Application Server w/ Templates) and is usable
+  by other applications.
+
+
+strongswan-4.1.11
+-----------------
+
+- IKE rekeying in NAT situations did not inherit the NAT conditions
+  to the rekeyed IKE_SA so that the UDP encapsulation was lost with
+  the next CHILD_SA rekeying.
+
+- Wrong type definition of the next_payload variable in id_payload.c
+  caused an INVALID_SYNTAX error on PowerPC platforms.
+
+- Implemented IKEv2 EAP-SIM server and client test modules that use
+  triplets stored in a file. For details on the configuration see
+  the scenario 'ikev2/rw-eap-sim-rsa'.
+
+
+strongswan-4.1.10
+-----------------
+
+- Fixed error in the ordering of the certinfo_t records in the ocsp cache that
+  caused multiple entries of the same serial number to be created.
+
+- Implementation of a simple EAP-MD5 module which provides CHAP
+  authentication. This may be interesting in conjunction with certificate
+  based server authentication, as weak passwords can't be brute forced
+  (in contradiction to traditional IKEv2 PSK).
+
+- A complete software based implementation of EAP-AKA, using algorithms
+  specified in 3GPP2 (S.S0055). This implementation does not use an USIM,
+  but reads the secrets from ipsec.secrets. Make sure to read eap_aka.h
+  before using it.
+
+- Support for vendor specific EAP methods using Expanded EAP types. The
+  interface to EAP modules has been slightly changed, so make sure to
+  check the changes if you're already rolling your own modules.
+
+
 strongswan-4.1.9
 ----------------
 
@@ -15,9 +696,10 @@ strongswan-4.1.9
 - Fixes and improvements to multithreading code.
 
 - IKEv2 plugins have been renamed to libcharon-* to avoid naming conflicts.
-  Make sure to remove the old plugins in $libexecdir/ipsec, otherwise they get 
+  Make sure to remove the old plugins in $libexecdir/ipsec, otherwise they get
   loaded twice.
 
+
 strongswan-4.1.8
 ----------------
 
@@ -60,18 +742,18 @@ strongswan-4.1.6
 - the default ipsec routing table plus its corresponding priority
   used for inserting source routes has been changed from 100 to 220.
   It can be configured using the --with-ipsec-routing-table and
-  --with-ipsec-routing-table-prio options. 
-  
+  --with-ipsec-routing-table-prio options.
+
 - the --enable-integrity-test configure option tests the
   integrity of the libstrongswan crypto code during the charon
   startup.
-  
+
 - the --disable-xauth-vid configure option disables the sending
   of the XAUTH vendor ID. This can be used as a workaround when
   interoperating with some Windows VPN clients that get into
   trouble upon reception of an XAUTH VID without eXtended
   AUTHentication having been configured.
-  
+
 - ipsec stroke now supports the rereadsecrets, rereadaacerts,
   rereadacerts, and listacerts options.
 
@@ -134,7 +816,7 @@ strongswan-4.1.4
   of an argument string that is used with the PKCS#11 C_Initialize()
   function. This non-standard feature is required by the NSS softoken
   library. This patch was contributed by Robert Varga.
-       
+
 - Fixed a bug in ipsec starter introduced by strongswan-2.8.5
   which caused a segmentation fault in the presence of unknown
   or misspelt keywords in ipsec.conf. This bug fix was contributed
@@ -147,7 +829,7 @@ strongswan-4.1.4
 strongswan-4.1.3
 ----------------
 
-- IKEv2 peer configuration selection now can be based on a given 
+- IKEv2 peer configuration selection now can be based on a given
   certification authority using the rightca= statement.
 
 - IKEv2 authentication based on RSA signatures now can handle multiple
@@ -164,11 +846,11 @@ strongswan-4.1.3
   improves the systems security, as a possible intruder may only get the
   CAP_NET_ADMIN capability.
 
-- Further modularization of charon: Pluggable control interface and 
+- Further modularization of charon: Pluggable control interface and
   configuration backend modules provide extensibility. The control interface
   for stroke is included, and further interfaces using DBUS (NetworkManager)
   or XML are on the way. A backend for storing configurations in the daemon
-  is provided and more advanced backends (using e.g. a database) are trivial 
+  is provided and more advanced backends (using e.g. a database) are trivial
   to implement.
 
  - Fixed a compilation failure in libfreeswan occuring with Linux kernel
@@ -192,7 +874,7 @@ strongswan-4.1.2
 
 - Removed the dependencies from the /usr/include/linux/ headers by
   including xfrm.h, ipsec.h, and pfkeyv2.h in the distribution.
-  
+
 - crlNumber is now listed by ipsec listcrls
 
 - The xauth_modules.verify_secret() function now passes the
@@ -241,7 +923,7 @@ strongswan-4.1.0
 - Support for SHA2-256/384/512 PRF and HMAC functions in IKEv2.
 
 - Full support of CA information sections. ipsec listcainfos
-  now shows all collected crlDistributionPoints and OCSP 
+  now shows all collected crlDistributionPoints and OCSP
   accessLocations.
 
 - Support of the Online Certificate Status Protocol (OCSP) for IKEv2.
@@ -292,8 +974,8 @@ strongswan-4.0.6
   with ISAKMP Main Mode RSA or PSK authentication. Both client and
   server side were implemented. Handling of user credentials can
   be done by a run-time loadable XAUTH module. By default user
-  credentials are stored in ipsec.secrets. 
-         
+  credentials are stored in ipsec.secrets.
+
 - IKEv2: Support for reauthentication when rekeying
 
 - IKEv2: Support for transport mode
@@ -365,8 +1047,8 @@ strongswan-4.0.3
 ----------------
 
 - Added support for the auto=route ipsec.conf parameter and the
-  ipsec route/unroute commands for IKEv2. This allows to set up IKE_SAs and 
-  CHILD_SAs dynamically on demand when traffic is detected by the 
+  ipsec route/unroute commands for IKEv2. This allows to set up IKE_SAs and
+  CHILD_SAs dynamically on demand when traffic is detected by the
   kernel.
 
 - Added support for rekeying IKE_SAs in IKEv2 using the ikelifetime parameter.
@@ -386,9 +1068,9 @@ strongswan-4.0.2
   default is leftsendcert=always, since CERTREQ payloads are not supported
   yet. Optional CRLs must be imported locally into /etc/ipsec.d/crls.
 
-- Added support for leftprotoport/rightprotoport parameters in IKEv2. IKEv2 
+- Added support for leftprotoport/rightprotoport parameters in IKEv2. IKEv2
   would offer more possibilities for traffic selection, but the Linux kernel
-  currently does not support it. That's why we stick with these simple 
+  currently does not support it. That's why we stick with these simple
   ipsec.conf rules for now.
 
 - Added Dead Peer Detection (DPD) which checks liveliness of remote peer if no
@@ -400,8 +1082,8 @@ strongswan-4.0.2
   to port 4500, uses UDP encapsulated ESP packets, handles peer address
   changes gracefully and sends keep alive message periodically.
 
-- Reimplemented IKE_SA state machine for charon, which allows simultaneous 
-  rekeying, more shared code, cleaner design, proper retransmission 
+- Reimplemented IKE_SA state machine for charon, which allows simultaneous
+  rekeying, more shared code, cleaner design, proper retransmission
   and a more extensible code base.
 
 - The mixed PSK/RSA roadwarrior detection capability introduced by the
@@ -416,22 +1098,22 @@ strongswan-4.0.2
 strongswan-4.0.1
 ----------------
 
-- Added algorithm selection to charon: New default algorithms for 
+- Added algorithm selection to charon: New default algorithms for
   ike=aes128-sha-modp2048, as both daemons support it. The default
   for IPsec SAs is now esp=aes128-sha,3des-md5. charon handles
   the ike/esp parameter the same way as pluto. As this syntax does
-  not allow specification of a pseudo random function, the same 
+  not allow specification of a pseudo random function, the same
   algorithm as for integrity is used (currently sha/md5). Supported
   algorithms for IKE:
     Encryption: aes128, aes192, aes256
     Integrity/PRF: md5, sha (using hmac)
     DH-Groups: modp768, 1024, 1536, 2048, 4096, 8192
   and for ESP:
-    Encryption: aes128, aes192, aes256, 3des, blowfish128, 
+    Encryption: aes128, aes192, aes256, 3des, blowfish128,
                 blowfish192, blowfish256
     Integrity: md5, sha1
   More IKE encryption algorithms will come after porting libcrypto into
-  libstrongswan. 
+  libstrongswan.
 
 - initial support for rekeying CHILD_SAs using IKEv2. Currently no
   perfect forward secrecy is used. The rekeying parameters rekey,
@@ -446,7 +1128,7 @@ strongswan-4.0.1
 
 - new build environment featuring autotools. Features such
   as HTTP, LDAP and smartcard support may be enabled using
-  the ./configure script. Changing install directories 
+  the ./configure script. Changing install directories
   is possible, too. See ./configure --help for more details.
 
 - better integration of charon with ipsec starter, which allows
@@ -460,7 +1142,7 @@ strongswan-4.0.0
 ----------------
 
 - initial support of the IKEv2 protocol. Connections in
-  ipsec.conf designated by keyexchange=ikev2 are negotiated 
+  ipsec.conf designated by keyexchange=ikev2 are negotiated
   by the new IKEv2 charon keying daemon whereas those marked
   by keyexchange=ikev1 or the default keyexchange=ike are
   handled thy the IKEv1 pluto keying daemon. Currently only
@@ -496,7 +1178,7 @@ strongswan-2.7.0
   internal network interface which is part of the client subnet
   because an iptables INPUT and OUTPUT rule would be required.
   lefthostaccess=yes will cause this additional ACCEPT rules to
-  be inserted. 
+  be inserted.
 
 - mixed PSK|RSA roadwarriors are now supported. The ISAKMP proposal
   payload is preparsed in order to find out whether the roadwarrior
@@ -510,7 +1192,7 @@ strongswan-2.6.4
 - the new _updown_policy template allows ipsec policy based
   iptables firewall rules. Required are iptables version
   >= 1.3.5 and linux kernel >= 2.6.16. This script obsoletes
-  the _updown_espmark template, so that no INPUT mangle rules 
+  the _updown_espmark template, so that no INPUT mangle rules
   are required any more.
 
 - added support of DPD restart mode
@@ -526,13 +1208,13 @@ strongswan-2.6.4
 strongswan-2.6.3
 ----------------
 
-- /etc/init.d/ipsec or /etc/rc.d/ipsec is now a copy of the ipsec 
+- /etc/init.d/ipsec or /etc/rc.d/ipsec is now a copy of the ipsec
   command and not of ipsec setup any more.
 
 - ipsec starter now supports AH authentication in conjunction with
   ESP encryption. AH authentication is configured in ipsec.conf
   via the auth=ah parameter.
-  
+
 - The command ipsec scencrypt|scdecrypt <args> is now an alias for
   ipsec whack --scencrypt|scdecrypt <args>.
 
@@ -540,7 +1222,7 @@ strongswan-2.6.3
   the exact time of the last use of an active eroute. This information
   is used by the Dead Peer Detection algorithm and is also displayed by
   the ipsec status command.
-  
+
 
 strongswan-2.6.2
 ----------------
@@ -604,7 +1286,7 @@ strongswan-2.6.0
   accelerated tremedously.
 
 - Added support of %defaultroute to the ipsec starter. If the IP address
-  changes, a HUP signal to the ipsec starter will automatically 
+  changes, a HUP signal to the ipsec starter will automatically
   reload pluto's connections.
 
 - moved most compile time configurations from pluto/Makefile to
@@ -636,7 +1318,7 @@ strongswan-2.5.6
   function (e.g. OpenSC), the RSA encryption is done in
   software using the public key fetched from the smartcard.
 
-- The scepclient function now allows to define the 
+- The scepclient function now allows to define the
   validity of a self-signed certificate using the --days,
   --startdate, and --enddate options. The default validity
   has been changed from one year to five years.
@@ -659,7 +1341,7 @@ strongswan-2.5.5
              [--outbase 16|hex|64|base64|256|text|ascii]
              [--keyid <keyid>]
 
-  The default setting for inbase and outbase is hex. 
+  The default setting for inbase and outbase is hex.
 
   The new proxy interface can be used for securing symmetric
   encryption keys required by the cryptoloop or dm-crypt
@@ -705,7 +1387,7 @@ strongswan-2.5.3
   always|yes (the default, always send a cert)
   ifasked    (send the cert only upon a cert request)
   never|no   (never send a cert, used for raw RSA keys and
-              self-signed certs) 
+              self-signed certs)
 
 - fixed the initialization of the ESP key length to a default of
   128 bits in the case that the peer does not send a key length
@@ -797,7 +1479,7 @@ strongswan-2.5.0
   of ipsec.conf. The dynamically fetched CRLs are stored under
   a unique file name containing the issuer's subjectKeyID
   in /etc/ipsec.d/crls.
-  
+
 - Applied a one-line patch courtesy of Michael Richardson
   from the Openswan project which fixes the kernel-oops
   in KLIPS when an snmp daemon is running on the same box.
@@ -834,19 +1516,19 @@ strongswan-2.4.2
 - Added the _updown_espmark template which requires all
   incoming ESP traffic to be marked with a default mark
   value of 50.
-  
+
 - Introduced the pkcs11keepstate parameter in the config setup
   section of ipsec.conf. With pkcs11keepstate=yes the PKCS#11
-  session and login states are kept as long as possible during 
+  session and login states are kept as long as possible during
   the lifetime of pluto. This means that a PIN entry via a key
   pad has to be done only once.
 
 - Introduced the pkcs11module parameter in the config setup
   section of ipsec.conf which specifies the PKCS#11 module
   to be used with smart cards. Example:
-  
+
     pkcs11module=/usr/lib/pkcs11/opensc-pkcs11.lo
-  
+
 - Added support of smartcard readers equipped with a PIN pad.
 
 - Added patch by Jay Pfeifer which detects when netkey
@@ -855,7 +1537,7 @@ strongswan-2.4.2
 - Added two patches by Herbert Xu. The first uses ip xfrm
   instead of setkey to flush the IPsec policy database. The
   second sets the optional flag in inbound IPComp SAs only.
-    
+
 - Applied Ulrich Weber's patch which fixes an interoperability
   problem between native IPsec and KLIPS systems caused by
   setting the replay window to 32 instead of 0 for ipcomp.
@@ -878,8 +1560,8 @@ strongswan-2.4.0a
 
 - updated copyright statement to include David Buechi and
   Michael Meier
-  
-  
+
+
 strongswan-2.4.0
 ----------------
 
@@ -896,10 +1578,10 @@ strongswan-2.4.0
   always?] returns an XFRM_ACQUIRE message with an undefined
   protocol family field and the connection setup fails.
   As a workaround IPv4 (AF_INET) is now assumed.
-  
-- the results of the UML test scenarios are now enhanced 
+
+- the results of the UML test scenarios are now enhanced
   with block diagrams of the virtual network topology used
-  in a particular test. 
+  in a particular test.
 
 
 strongswan-2.3.2
@@ -907,13 +1589,13 @@ strongswan-2.3.2
 
 - fixed IV used to decrypt informational messages.
   This bug was introduced with Mode Config functionality.
+
 - fixed NCP Vendor ID.
 
 - undid one of Ulrich Weber's maximum udp size patches
   because it caused a segmentation fault with NAT-ed
   Delete SA messages.
-  
+
 - added UML scenarios wildcards and attr-cert which
   demonstrate the implementation of IPsec policies based
   on wildcard parameters contained in Distinguished Names and
@@ -927,15 +1609,15 @@ strongswan-2.3.1
 
 - Added Mathieu Lafon's patch which upgrades the status of
   the NAT-Traversal implementation to RFC 3947.
+
 - The _startklips script now also loads the xfrm4_tunnel
   module.
-  
+
 - Added Ulrich Weber's netlink replay window size and
   maximum udp size patches.
 
 - UML testing now uses the Linux 2.6.10 UML kernel by default.
-   
+
 
 strongswan-2.3.0
 ----------------
@@ -947,22 +1629,22 @@ strongswan-2.3.0
   subdirectory.
 
 - Full support of group attributes based on X.509 attribute
-  certificates. Attribute certificates can be generated 
+  certificates. Attribute certificates can be generated
   using the openac facility. For more details see
-   
+
   man ipsec_openac.
+
   The group attributes can be used in connection definitions
   in order to give IPsec access to specific user groups.
   This is done with the new parameter left|rightgroups as in
-  
+
   rightgroups="Research, Sales"
 
   giving access to users possessing the group attributes
   Research or Sales, only.
 
 - In Quick Mode clients with subnet mask /32 are now
-  coded as IP_V4_ADDRESS or IP_V6_ADDRESS. This should 
+  coded as IP_V4_ADDRESS or IP_V6_ADDRESS. This should
   fix rekeying problems with the SafeNet/SoftRemote and NCP
   Secure Entry Clients.
 
@@ -976,7 +1658,7 @@ strongswan-2.3.0
 - Public RSA keys can now have identical IDs if either the
   issuing CA or the serial number is different. The serial
   number of a certificate is now shown by the command
-  
+
   ipsec auto --listpubkeys
 
 
@@ -991,7 +1673,7 @@ strongswan-2.2.2
 - Fixed a bug occuring with NAT-Traversal enabled when the responder
   suddenly turns initiator and the initiator cannot find a matching
   connection because of the floated IKE port 4500.
-  
+
 - Removed misleading ipsec verify command from barf.
 
 - Running under the native IP stack, ipsec --version now shows
@@ -1006,12 +1688,12 @@ strongswan-2.2.1
 
 - Fixed a bug in the ESP algorithm selection occuring when the strict flag
   is set and the first proposed transform does not match.
-  
+
 - Fixed another deadlock in the use of the lock_certs_and_keys() mutex,
   occuring when a smartcard is present.
 
 - Prevented that a superseded Phase1 state can trigger a DPD_TIMEOUT event.
-  
+
 - Fixed the printing of the notification names (null)
 
 - Applied another of Herbert Xu's Netlink patches.
@@ -1023,15 +1705,15 @@ strongswan-2.2.0
 - Support of Dead Peer Detection. The connection parameter
 
     dpdaction=clear|hold
-     
+
   activates DPD for the given connection.
 
 - The default Opportunistic Encryption (OE) policy groups are not
   automatically included anymore. Those wishing to activate OE can include
   the policy group with the following statement in ipsec.conf:
-  
+
     include /etc/ipsec.d/examples/oe.conf
-  
+
   The default for [right|left]rsasigkey is now set to %cert.
 
 - strongSwan now has a Vendor ID of its own which can be activated
@@ -1045,12 +1727,12 @@ strongswan-2.2.0
 
 - Reapplied one of Herbert Xu's NAT-Traversal patches which got
   lost during the migration from SuperFreeS/WAN.
-  
+
 - Fixed a deadlock in the use of the lock_certs_and_keys() mutex.
 
 - Fixed the unsharing of alg parameters when instantiating group
   connection.
-  
+
 
 strongswan-2.1.5
 ----------------
@@ -1092,7 +1774,7 @@ strongswan-2.1.3
 
 - Fixed another PKCS#7 vulnerability which could lead to an
   endless loop while following the X.509 trust chain.
-  
+
 
 strongswan-2.1.2
 ----------------
@@ -1100,7 +1782,7 @@ strongswan-2.1.2
 - Fixed the PKCS#7 vulnerability discovered by Thomas Walpuski
   that accepted end certificates having identical issuer and subject
   distinguished names in a multi-tier X.509 trust chain.
-  
+
 
 strongswan-2.1.1
 ----------------
@@ -1120,9 +1802,9 @@ strongswan-2.1.0
      crluri=http://www.kool.net/kool.crl # crl distribution point
      crluri2="ldap:///O=Kool, C= .."     # crl distribution point #2
      auto=add                            # add, ignore
-     
+
   The ca definitions can be monitored via the command
-  
+
      ipsec auto --listcainfos
 
 - Fixed cosmetic corruption of /proc filesystem by integrating
@@ -1134,10 +1816,10 @@ strongswan-2.0.2
 
 - Added support for the 818043 NAT-Traversal update of Microsoft's
   Windows 2000/XP IPsec client which sends an ID_FQDN during Quick Mode.
-  
-- A symbolic link to libcrypto is now added in the kernel sources 
+
+- A symbolic link to libcrypto is now added in the kernel sources
   during kernel compilation
-  
+
 - Fixed a couple of 64 bit issues (mostly casts to int).
   Thanks to Ken Bantoft who checked my sources on a 64 bit platform.
 
@@ -1156,8 +1838,8 @@ strongswan-2.0.1
 
 - applied Herbert Xu's NAT-T patches which fixes NAT-T under the native
   Linux 2.6 IPsec stack.
-  
-  
+
+
 strongswan-2.0.0
 ----------------