I have found that ECC.jl in principle could provide the stuff I need. However, the library is too technical for my present understanding of cryptography. It would be really helpful if someone could answer the usage questions I have on it. I have posted them in the GitLab issue.
For most applications, I really really recommend using a well-established conservative C library, and not using some half-baked implementation from github / gitlab. Don’t get me wrong, half-baked implementations from github / gitlab are awesome and are exactly what you want for toying around with protocols and cryptographic research.
Crypto that faces attackers is hard.
For example, you probably want your public key functions resistant against timing sidechannel. ECC.jl is not constant-time, as far as I looked at the code. Even if it was, you are unqualified to audit the implementation for side-channels and therefore should never use it in prod.
I am just hoping that by making an awesome use of cryptographic libraries someone would be willing to invest time to make cryptographic library situation better for Julia. For the moment half baked implementations are good for me
Author of Paillier.jl here, just wanted to point out it is not using constant time functions, and doesn’t offer any hashing capabilities. Rather it is a tool for building prototypes of systems and protocols relying on a partially homomorphic cryptosystem.
I have created libs & bindings for Apache Milagro Crypto Library (AMCL) 2.0.1. It is in very early stage, but all C API should be exposed in Julia and it supports all Julia platforms (incl. Linux, Windows, MacOS, FreeBSD).
I’m working on getting it registered in the General Julia registry. Until then, you can install it from here:
This is big! Thank you for the wrapper, it is much needed
In the example, I see how to make signatures and verify them. Is it also possible to work directly with the primitives themselves? For example, can I access cryptographic groups (or curves) to use them to implement Diffie-Hellman key exchange?