ec3

module
v0.0.0-...-3948e75 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2020 License: BSD-3-Clause

README

ec3

Elliptic Curve Cryptography Compiler.

ec3 is an incomplete experiment that set out with the goal of auto-generating Go elliptic curve implementations for any parameter choices, with performance as close as possible to hand-crafted implementations.

In its current state, ec3 can generate a full implementation of the NIST P-256 elliptic curve, however much more work is required to reach performance parity with the standard library implementation. It's unpolished and comes with no guarantees: ec3 is shared as-is in the hopes that the approach is interesting to others, or some subcomponents are independently useful. In particular:

  • The addchain project started life as part of ec3. This library generates short addition chains required for optimization of finite field exponentiation. The results rival or sometimes beat the best known hand-optimized chains.
  • The efd package embeds the Explicit-Formulas Database and provides Go libraries for manipulating formulae in op3 format.

If you are interested in the ec3 approach, you should check out ECCKiila which used fiat-crypto for finite field operations. Work is also ongoing to import fiat-crypto implementations in the Go standard library.

Directories

Path Synopsis
arith
eval
Package eval provides an evaluator for arithmetic intermediate representation.
Package eval provides an evaluator for arithmetic intermediate representation.
eval/m64
Package m64 provides a 64-bit arithmetic evaluator.
Package m64 provides a 64-bit arithmetic evaluator.
ir
Package ir defines an intermediate representation for multi-precision arithmetic.
Package ir defines an intermediate representation for multi-precision arithmetic.
mp
Package mp provides multi-precision operations for arithmetic programs.
Package mp provides multi-precision operations for arithmetic programs.
asm
fp
mp
cmd
ec3
efd
efd
Package efd provides the Explicit-Formulas Database.
Package efd provides the Explicit-Formulas Database.
db
op3
op3/eval
Package eval provides an evaluator for op3 programs.
Package eval provides an evaluator for op3 programs.
examples
gen
fmla
Package fmla generates functions from formulae.
Package fmla generates functions from formulae.
fp
internal
bigints
Package bigints provides helpers for slices of multi-precision integers.
Package bigints provides helpers for slices of multi-precision integers.
calc
Package calc evaluates simple arithmetic expressions.
Package calc evaluates simple arithmetic expressions.
cli
Package cli provides utilities for building subcommand-based command line interfaces.
Package cli provides utilities for building subcommand-based command line interfaces.
container/disjointset
Package disjointset implements the disjoint-set data structure.
Package disjointset implements the disjoint-set data structure.
flags
Package flags provides helpers for the standard flag package.
Package flags provides helpers for the standard flag package.
ints
Package ints provides simple integer utilities.
Package ints provides simple integer utilities.
tmpl
Package tmpl provides code generation from pure Go templates.
Package tmpl provides code generation from pure Go templates.
Package name provides utilities for symbol naming.
Package name provides utilities for symbol naming.
Package polynomial provides a polynomial type.
Package polynomial provides a polynomial type.
Package prime provides representations of classes of prime numbers.
Package prime provides representations of classes of prime numbers.
tools
assets
Command assets embeds static assets into Go source code.
Command assets embeds static assets into Go source code.
crandall
Command crandall searches for Crandall primes close to word boundaries.
Command crandall searches for Crandall primes close to word boundaries.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL