Our current technique for getting Wireguard to consume the crypto implementations in libwolfssl.ko is a patched Wireguard kernel module.
Recipe:
Clone the fork at https://github.com/douzzer/wolf-wireguard-kernel -- you'll need the branch named "wolfcryptified", which is the default branch for this fork.
Build libwolfssl.ko using
./configure --enable-linuxkm --enable-xchacha --enable-poly1305 --enable-curve25519
at a bare minimum. You can just use --enable-all-crypto to assure you get everything you could possible need crypto-wise, and it's wise to use --enable-cryptonly to disable the TLS/DTLS layer from the module (it's irrelevant to Wireguard obviously).
Then at the top of the patched Wireguard source tree:
make WOLFCRYPT=1 KERNELRELEASE="the-kernel-release" KERNELDIR="the-kernel-source-tree-top" WOLFSSL_ROOT="the-wolfssl-top"
The kernel release is something like "6.12.3-gentoo" or, if you're testing on the ragged edge, "6.13-rc1".
We test this nightly, on the latest release and mainline kernels, and have for several years, so it should just-work for you.
Note that if you are currently building the in-tree Wireguard module statically linked into your kernel ('Y' in .config) rather than as a dynamically loaded module ('M'), then you'll need to rebuild the kernel with in-tree Wireguard either 'M' or 'N' to avoid a conflict between the out-of-tree and in-tree implementation.