MilagroCrypto.jl
Julia bindings for AMCL_jll.
The objective of this project is to provide efficient and secure access to the AMCL C library from Julia for all supported platforms (OS and CPU).
Status
Everything should work although only a tiny subset of the native APIs have been tested. Only tested on Mac so far, but I'm not expecting problems on any other target.
- all native (C) APIs should be reachable
- support all Julia platforms
- optimised
octet
implementation - travis CI to build for all targets
- add more examples for common use-cases
- usability improvement (e.g. add a + method for curve points)
- add implicit conversions where useful
Getting Started
Install Package
using Pkg
Pkg.add("MilagroCrypto")
Examples
Example | Showcase |
---|---|
bls381_sign_verify.jl |
|
bls381_sub.jl | Implement missing BLS_BLS381_SUB_G1 function with Curve primitives |
You can run an example (in this case bls381_sign_verify.jl) like this:
julia example/bls381_sign_verify.jl
Benchmarks
Check the benchmarks directory.
You can run a benchmarks with the BLS381 curve like this:
julia benchmark/bls.jl
If you want to test with other curve(s):
julia benchmark/bls.jl BN254 BLS461
Tests
Run tests with:
julia -e 'using Pkg; Pkg.activate("."); Pkg.test()'
Frequently Asked Questions
My Application hangs for a while when using this lib
If you are using the csprng()
method, it will generate random seed from /dev/random
,
which will "hang" by design if there is not enough entropy in the pool.
Try re-running your app with the JULIA_DEBUG=MilagroCrypto
environment variable and look for
the got seed from OS
console log to confirm that your application is not
stuck waiting for more entropy.
Contibutions
Are most welcome. However, please note the objective of this project.
- Pick something to improve from the list above
- Create PR
- Make sure Travis CI is happy