A variant of ChaCha20-Poly1305 that OpenSSH uses
("chacha20-poly1305@openssh.com").
LICENSE | ||
README.md |
cc20p1305ssh
A Golang library variant of ChaCha20-Poly1305 that OpenSSH uses ("chacha20-poly1305@openssh.com").
Note that this module only supports the OpenSSH variant.
Why is this necessary?
Because Golang.org/x/crypto removes functionality (even for very common tech) and thinks OpenSSH is a "weird" use case.
They have no decent support for OpenSSH keys or lower-level operations. And guess what -- sometimes you need lower-level functionality. Who knew?
Why don't you expose the rest of ChaCha20/Poly1305/ChaCha20-Poly1305?
- To keep code light (and thus easier to debug, audit, etc.)
- Because otherwise the module name is inaccurate
- Because OpenSSH has their own specific variant
- Which means we can handle SSH-specific functionality if needed
- Because Golang/x/crypto has made it painfully clear that if you want something that deviates from what they think is "best practice", you need to do it yourself
Based on golang.org/x/crypto/chacha20poly1305 (source specifically forked from chacha20poly1305, chacha20, and poly1305), sliced, diced, and ripped to pieces.