Project

General

Profile

libstrongswan

libstrongswan is the foundation library of the IKEv2 keying daemon. It is the
base of all newer strongSwan components.

Plugins

libstrongswan itself also supports plugins to provide modular cryptographic
algorithms, database support or transport protocol implementations. Each plugin
implements the plugin_t interface and registers itself at one of the factories:

credentials Credential implementations, e.g. certificates or keys.
crypto Crypto implementations, e.g. encryption algorithms or hashers.
database Database wrappers to access different databases transparently.
fetcher Transport helpers to fetch files, e.g. via HTTP/FTP.
  +-------------------------------------+
  | libstrongswan           +---+ +-----+------+
  |                         |   | |    aes     |
  |                         |   | +-----+------+
  | +-------------+         |   | +-----+------+
  | | credentials |  ---->  | p | |    curl    |
  | +-------------+         | l | +-----+------+
  | +-------------+  <----  | u | +-----+------+
  | | crypto      |         | g | |    des     |
  | +-------------+  ---->  | i | +-----+------+
  | +-------------+         | n | +-----+------+
  | | database    |  <----  |   | |  fips_prf  |
  | +-------------+         | l | +-----+------+
  | +-------------+  ---->  | o | +-----+------+
  | | fetcher     |         | a | |    gmp     |
  | +-------------+  <----  | d | +-----+------+
  |                         | e | +-----+------+
  |                         | r | |    hmac    |
  |                         |   | +-----+------+
  |                         |   | +-----+------+
  |                         |   | |    ...     |
  |                         +---+ +-----+------+
  +-------------------------------------+

There is a growing list of plugins available (see source:src/libstrongswan/plugins).