Skip to content

monkeygroover/brine

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Languages

  • Objective-C 72.5%
  • C 19.5%
  • Makefile 3.7%
  • C++ 1.9%
  • Erlang 1.7%
  • CMake 0.7%