All Projects → ConsenSys → Gurvy

ConsenSys / Gurvy

Licence: apache-2.0
gurvy implements Elliptic Curve Cryptography (+Pairing) for BLS12-381, BLS12-377, BW6-761, and BN256. Originally developed (and used) by gnark

Programming Languages

golang
3204 projects
assembly
5116 projects

Projects that are alternatives of or similar to Gurvy

Gcp Iot Core Examples
Google Cloud Platform IOT Core Examples
Stars: ✭ 103 (+56.06%)
Mutual labels:  cryptography, elliptic-curves
Fastecdsa
Python library for fast elliptic curve crypto
Stars: ✭ 158 (+139.39%)
Mutual labels:  cryptography, elliptic-curves
Useful Crypto Resources
A place for useful crypto-related resources plus some of my fav stuff
Stars: ✭ 131 (+98.48%)
Mutual labels:  cryptography, elliptic-curves
Bitcoin Cryptography Library
Nayuki's implementation of cryptographic primitives used in Bitcoin.
Stars: ✭ 81 (+22.73%)
Mutual labels:  cryptography, elliptic-curves
Curve25519 Dalek
A pure-Rust implementation of group operations on Ristretto and Curve25519
Stars: ✭ 477 (+622.73%)
Mutual labels:  cryptography, elliptic-curves
Curv
Rust language general purpose elliptic curve cryptography.
Stars: ✭ 138 (+109.09%)
Mutual labels:  cryptography, elliptic-curves
Practical Cryptography For Developers Book
Practical Cryptography for Developers: Hashes, MAC, Key Derivation, DHKE, Symmetric and Asymmetric Ciphers, Public Key Cryptosystems, RSA, Elliptic Curves, ECC, secp256k1, ECDH, ECIES, Digital Signatures, ECDSA, EdDSA
Stars: ✭ 2,400 (+3536.36%)
Mutual labels:  cryptography, elliptic-curves
tweedle
Generator and supporting evidence for security of the Tweedledum/Tweedledee pair of elliptic curves suitable for Halo
Stars: ✭ 16 (-75.76%)
Mutual labels:  cryptography, elliptic-curves
Bulletproofs
Bulletproofs are short non-interactive zero-knowledge proofs that require no trusted setup
Stars: ✭ 458 (+593.94%)
Mutual labels:  cryptography, elliptic-curves
Wickr Crypto C
An implementation of the Wickr Secure Messaging Protocol in C
Stars: ✭ 279 (+322.73%)
Mutual labels:  cryptography, elliptic-curves
Swift Crypto
Open-source implementation of a substantial portion of the API of Apple CryptoKit suitable for use on Linux platforms.
Stars: ✭ 1,005 (+1422.73%)
Mutual labels:  cryptography, elliptic-curves
X25519
Public key cryptography library for Ruby providing the X25519 Diffie-Hellman function
Stars: ✭ 37 (-43.94%)
Mutual labels:  cryptography, elliptic-curves
Constantine
Constant time pairing-based or elliptic curve based cryptography and digital signatures
Stars: ✭ 61 (-7.58%)
Mutual labels:  cryptography, elliptic-curves
Raaz
Cryptographic library for Haskell
Stars: ✭ 60 (-9.09%)
Mutual labels:  cryptography
Fhe Toolkit Linux
IBM Fully Homomorphic Encryption Toolkit For Linux. This toolkit is a Linux based Docker container that demonstrates computing on encrypted data without decrypting it! The toolkit ships with two demos including a fully encrypted Machine Learning inference with a Neural Network and a Privacy-Preserving key-value search.
Stars: ✭ 1,123 (+1601.52%)
Mutual labels:  cryptography
Bramble
Bramble is a hacking Open source suite.
Stars: ✭ 60 (-9.09%)
Mutual labels:  cryptography
Savjeecoin
A simple blockchain in Javascript. For educational purposes only.
Stars: ✭ 1,097 (+1562.12%)
Mutual labels:  cryptography
Cloakify
CloakifyFactory - Data Exfiltration & Infiltration In Plain Sight; Convert any filetype into list of everyday strings, using Text-Based Steganography; Evade DLP/MLS Devices, Defeat Data Whitelisting Controls, Social Engineering of Analysts, Evade AV Detection
Stars: ✭ 1,136 (+1621.21%)
Mutual labels:  cryptography
Masterpassword
Project moved to https://gitlab.com/spectre.app
Stars: ✭ 1,122 (+1600%)
Mutual labels:  cryptography
Minisign
A dead simple tool to sign files and verify digital signatures.
Stars: ✭ 1,105 (+1574.24%)
Mutual labels:  cryptography

gurvy

License Go Report Card PkgGoDev

gurvy implements Elliptic Curve Cryptography (+Pairing) for BLS381, BLS377 and BN256.

It is actively developed and maintained by the team ([email protected]) behind:

Warning

gurvy has not been audited and is provided as-is, use at your own risk. In particular, gurvy makes no security guarantees such as constant time implementation or side-channel attack resistance.

gurvy is optimized for 64bits architectures (x86 amd64) and tested on Unix (Linux / macOS).

Curves supported

  • BLS12-381 (Zcash)
  • BN256 (Ethereum)
  • BLS377 (ZEXE)
  • BW6-761 (EC supporting pairing on BLS377 field of definition)

Getting started

Go version

gurvy is tested with the last 2 major releases of Go (1.14 and 1.15).

Install gurvy

go get github.com/consensys/gurvy

Note if that if you use go modules, in go.mod the module path is case sensitive (use consensys and not ConsenSys).

Documentation

PkgGoDev

The APIs are consistent accross the curves. For example, here is bn256 godoc.

Benchmarks

Here are our measurements comparing gurvy (and goff our finite field library) with mcl.

These benchmarks ran on a AWS z1d.3xlarge instance, with hyperthreading disabled.

bn256 mcl(ns/op) gurvy & goff (ns/op)
Fp::Add 3.32 3.44
Fp::Mul 18.43 16.1
Fp::Square 18.64 15.1
Fp::Inv 690.55 2080*
Fp::Pow 6485 7440*
G1::ScalarMul 41394 56900
G1::Add 213 224
G1::Double 155 178
G2::ScalarMul 88423 141000
G2::Add 598 871
G2::Double 371 386
Pairing 478244 489258

bls381 mcl(ns/op) gurvy & goff (ns/op)
Fp::Add 5.42 4.6
Fp::Mul 33.63 29.3
Fp::Square 33.86 27
Fp::Inv 1536 4390*
Fp::Pow 18039 18300*
G1::ScalarMul 76799 91500
G1::Add 424 389
G1::Double 308 301
G2::ScalarMul 159068 273000
G2::Add 1162 1240
G2::Double 727 799
Pairing 676513 707984

*note that some routines don't have assembly implementation in goff yet.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the Apache 2 License - see the LICENSE file for details

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].