(no title)
moreentropy | 6 years ago
The original implementation is a kernel module. You can find a bunch of (excellent) talks online by wireguard's author which all have a focus on security aspects and avoiding vulnerabilities. Besides, Go and Rust (3rd pty) implementations exist.
nikisweeting|6 years ago
I have a short post about it here:
https://docs.sweeting.me/s/ask-stupid-questions
nprateem|6 years ago
Correct. This is a discussion site after all.
> The original implementation is a kernel module
How does that make it safer if it's written in C? Of course no one likes to think they're writing vulnerable code...
rswail|6 years ago
The kernel uses various C macros and GCC extensions. Ensuring that a module written in another language was compatible, even given that it would need to be built outside the normal tree would make its maintenance within the kernel tree impossible.
In terms of being written in C++/Rust/whatever, as an external module that complies with the kernel ABI (not guaranteed between kernel releases), go for it.
But if you want to have your protocol/module in the standard kernel tree, C is your choice.