Skip to content

kevsmith/brine

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

brine is a set of Erlang NIFs supplying ed25519 key generation, message signing, signature verification and key pair serialization. brine aspires to provide a simple API coupled with robust performance.

Benchmark results (as of Dec 30 2013):

===== Key Generation =====
Iterations: 1000000
Total runtime: 216s
Keys per sec: 4630
===== Message Signing =====
Iterations: 1000000
Message size: 4096 bytes
Total runtime: 23s
Signatures per sec: 43478
===== Key Pair Serialization  =====
Iterations: 1000000
Total runtime: 69s
Roundtrips per sec: 14493
Note: 1 roundtrip converts a key pair to a binary blob and back to an Erlang record

Test server: Intel Core i7-4770 (Haswell, hyperthreading enabled) @ 3.4 GHz CPU w/32 GB DDR3 RAM

Test environment: Ubuntu 13.10, gcc 4.8.1, Erlang R16B03

Special tuning: rngd and timer_entropyd used to increase available entropy

Thanks to the following folks for making brine possible:

  • Jean-Phillips Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, and Christian Winnerlein for BLAKE2
  • Orson Peters for the clean and easy-to-use ed25519 implementation
  • Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang for designing ed25519

TODO:

  • Document brine's serialization format
  • Refactor brine into libbrine w/NIF adapter to simplify writing bindings for other languages

About

Erlang NIF for ed25519 key generation, message signing, signature verification, and key pair serialization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published