[ANN] ToyPublicKeys.jl - Public key cryptography

Hello everyone! I’m happy to announce the first registered version of ToyPublicKeys, a mostly* Julia-native implementation of public-key cryptographic protocols**.

Public key cryptography is a key pillar of the modern internet, ensuring anonymity, integrity, key exchange and authentication. ToyPublicKeys aims to serve as a playground and educational resource for anyone curious about cryptography in Julia. It’s not meant to be production-ready but rather a starting point to spark more interest in the community.

Contributions—be it implementation, documentation, or auditing—are very much welcome! :slight_smile:

* BigInt from Julia base is binding to libGMP
** So far only RSA is implemented, but Diffie-Helman, ElGamal and the rest of the mainstream cryptosystems are planned :slight_smile:

4 Likes

Looks very interesting :partying_face:. I did not know of a few of the GMP methods one could use in the context of cryptography and I may take a note here. The goal of exploring the different ways one can implement public key cryptography and expose it via APIs is quite useful as users can have different preferences and RSA space is particularly unexplored.

You may also be interested in CryptoGroups.jl, which focuses only on discrete logarithm-based cryptography. As I identified when doing benchmarks for ShuffleProofs.jl, it would benefit from implementing Montgomery arithmetic for modular prime groups and rewriting of elliptic curve implementations for performance.