The key exchange is simply an XOR of the pre-shared key with the session key instead of a proper key wrapping, there's no chaining mode specified for the AES encryption as far as I can see and perhaps most critically none of the data is authenticated.
A great example of "don't roll your own crypto".
Second, I think it's important to know how crypto fails in order to use it properly. https://www.cryptopals.com has a bunch of challenges that walk you through breaking a crypto implementation.
I am not ready yet, but are you for hire to help a startup with your expertise in the near future? How could I contact you?
Is there no website of canonical examples of good crypto that can be shown to the author, so that they may trivially have good crypto?
Ultimately protocols like this need to be designed by someone with extensive experience in cryptography, then reviewed and tested by many similar people, before they can be considered safe to use.
Iirc this is what wireguard is based on and wireguard would be a great project to learn the crypto choices from.
The way for a non-cryptographer to make good crypto is to not write any crypto and rely on standard setups like TLS. Even chaining standard algorithms together can be dangerous.
the peer-linker's source can be found here https://github.com/mojyack/peer-linker
The documentation is not ready yet, but I will write it soon.
The current service epidemic have almost killed free IT in general and we must stop it.
/s
First person compared it to WireGuard, next person said yeah but it's probably for education, and I'm saying yeah but I think it's fair to compare it to WireGuard since the README doesn't make it clear whether it's a toy or a production tool.
And if you compare it to WireGuard then it becomes clear you shouldn't use this thing if you want real encryption.
It may not perfect, but I think it's a lot better.