> but then I have to make my own libraries for all languages that I want to offer end-to-end encryption for.

Do C (or something where the mapping to C is known), and lots of languages have FFI libs where wrapping that is fairly trivial, reducing the need to make your own libraries for all languages.

Or do a tool with a CLI, and other langs can call that.

Ideally, your primary implementation does both of those, making it easy to wrap and call. That's how things like GPG are so widely supported.

> Do C (or something where the mapping to C is known), and lots of languages have FFI libs where wrapping that is fairly trivial

That is an interesting idea, yet still a lot of work, sadly. I was hoping somebody had done the legwork already. I looked at Tink [1] and age [2] based on my co-worker's recommendation, but they all seem to have limited implementations in other languages.

[1] https://github.com/google/tink

[2] https://github.com/FiloSottile/age