=== Kernel Crypto changes to support WireGuard

Contact: John Baldwin <jhb@FreeBSD.org>

During the past few months, I merged several changes to the kernel to better
support the WireGuard driver.  These include extensions to the 'struct
enc_xform' interface to better support AEAD ciphers, changes to 'struct
enc_xform' to support multi-block operations for improved performance, and the
addition of the XChaCha20-Poly1305 AEAD cipher suite to OCF.  Additionally, the
kernel now includes a new "direct" API for ChaCha20-Poly1305 operations on
small, flat buffers.  A change in review adds an API to support curve25519
operations.  With these changes, the WireGuard driver is mostly able to use
crypto APIs from the kernel rather than its internal implementations.

In parallel I have been updating the WireGuard driver to use the new
APIs verifying interoperability with the existing driver.  One of the
next tasks is to refine these changes (along with some minor bug
fixes) as candidates for upstreaming into the WireGuard driver.

Sponsor: The FreeBSD Foundation