Loading plugins
There are two ways to control which plugins charon loads at startup.Explicit load list
Set a space-separated list instrongswan.conf:
strongswan.conf
Modular loading
Setload_modular = yes and control each plugin via its own .conf file in /etc/strongswan.d/charon/:
strongswan.conf
/etc/strongswan.d/charon/ has a load key:
/etc/strongswan.d/charon/openssl.conf
Plugin categories
Kernel backends
Install IPsec SAs and routing policies into the OS:
kernel-netlink, kernel-pfkey, kernel-pfroute, kernel-libipsec, kernel-iph, kernel-wfpCryptography
Algorithm implementations for IKE and ESP:
openssl, botan, wolfssl, gcrypt, gmp, aesni, af-alg, and dedicated algorithm pluginsEAP methods
Password and certificate-based client authentication:
eap-md5, eap-mschapv2, eap-tls, eap-ttls, eap-peap, eap-radius, eap-sim, eap-akaCertificate handling
X.509 parsing, revocation, PKCS#11/12, constraints:
x509, revocation, constraints, pkcs11, pkcs12, pemNetwork utilities
DNS resolution, virtual IPs via DHCP, script hooks:
resolve, dhcp, updown, attrMonitoring
Traffic counters, IP lookups, error signalling:
counters, lookip, error-notifyDatabase
SQLite/MySQL for IP pools and certificate storage:
sql, attr-sqlPost-quantum
ML-KEM (CRYSTALS-Kyber) hybrid key exchange for IKEv2:
ml, curve25519Listing loaded algorithms
After charon is running, useswanctl to inspect which algorithms are actually available from loaded crypto plugins:
Plugin directories
Plugin shared objects are installed under the strongSwan library path, typically:/var/log/syslog for lines like:
Plugins listed but not found on disk are silently skipped unless
charon.plugins.<name>.load = yes is set via modular loading, in which case a missing plugin causes a warning.