A variant of ChaCha20-Poly1305 that OpenSSH uses ("chacha20-poly1305@openssh.com").
Go to file
2022-05-02 04:15:31 -04:00
LICENSE Initial commit 2022-05-02 04:01:29 -04:00
README.md Update 'README.md' 2022-05-02 04:15:31 -04:00

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.