fast-elliptic-curve-p256

module
v0.0.0-...-503d3dc Latest Latest
Warning

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

Go to latest
Published: Sep 7, 2015 License: Apache-2.0, BSD-3-Clause

README

fast-elliptic-curve-p256

https://blog.cloudflare.com/go-crypto-bridging-the-performance-gap/

Repackage the golang elliptic library enhancements by Vlad Krasnov and Shay Gueron as a standalone library.

This code offers substantial performance improvements for elliptic curve crypto.

Installation:

$ go get github.com/glycerine/fast-elliptic-curve-p256/ecdsa
$ go get github.com/glycerine/fast-elliptic-curve-p256/elliptic

References:

  1. https://blog.cloudflare.com/go-crypto-bridging-the-performance-gap/
  2. https://github.com/vkrasnov/openssl/blob/vlad/inv_ord/crypto/ec/asm/ecp_nistz256-x86_64.pl
  3. https://go-review.googlesource.com/#/c/8968/
  4. https://groups.google.com/forum/#!msg/golang-codereviews/m5QTnSUZU6c/Q5RUAdefWUwJ
  5. https://github.com/openssl/openssl/pull/263/files
  6. See the paper in doc/gueron_krasnov_fast_prime_field_elliptic_curve_cryptography_with_256-bit_primes_2013.pdf for the theory of operation.

Origin: Extracted from the following https://go.googlesource.com/go commit.

commit d23a3d36860a35d661845350768d2237d984cc75 Author: Vlad Krasnov vlad@cloudflare.com Date: Fri Apr 17 06:10:35 2015 -0700

elliptic: assembly implementation of P256 for amd64

This is based on the implementation used in OpenSSL, from a
    submission by Shay Gueron and myself. Besides using assembly,
        this implementation employs several optimizations described in:

    S.Gueron and V.Krasnov, "Fast prime field elliptic-curve
                             cryptography with 256-bit primes"

In addition a new and improved modular inverse modulo N is
    implemented here. Also included performance tweaks by Andy
        Polyakov from the OpenSSL team.

The performance measured on a Haswell based Macbook Pro shows 21X
    speedup for the sign and 9X for the verify operations.
        The operation BaseMult is 30X faster (and the Diffie-Hellman/ECDSA
            key generation that use it are sped up as well).

The adaptation to Go with the help of Filippo Valsorda

Updated the submission for faster verify/ecdh, fixed some asm syntax and API

Change-Id: I86a33636747d5c92f15e0c8344caa2e7e07e0028

Directories

Path Synopsis
Package ecdsa implements the Elliptic Curve Digital Signature Algorithm, as defined in FIPS 186-3.
Package ecdsa implements the Elliptic Curve Digital Signature Algorithm, as defined in FIPS 186-3.
Package elliptic implements several standard elliptic curves over prime fields.
Package elliptic implements several standard elliptic curves over prime fields.

Jump to

Keyboard shortcuts

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