gocurves

package module
v0.0.0-...-7e3930a Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2022 License: CC0-1.0 Imports: 2 Imported by: 0

README

gocurves

Elliptic Curves for go's crypto/elliptic package.

GoDoc

Additional Elliptic Curves for crypto/elliptic. Curves are implemented using *elliptic.CurveParams.

About the Brainpool Standard Curves [RFC5639].

The ECC Brainpool, is a working group of the state-industrial association TeleTrusT (members including BKA, BSI) on the subject of Elliptic Curve Cryptography. The working group specified a number of elliptic curves in 2005, which were standardized in March 2010 in RFC 5639 of the IETF.

For these curves, the choice of bit length 512 should be mentioned, in contrast to the bit length 521 preferred by many other institutions (e.g. NIST, SECG).

POSSIBLE KLEPTOGRAPHY: The design space of the Brainpool curves contains so many degrees of freedom that a back door cannot be excluded with certainty. The Brainpool curves are also uncertain about some desirable properties.

Of the Brainpool curves only the brainpoolP*t1 variants are implemented because of crypto/elliptic's limitation, that the domain parameter A must be -3.

About the Microsoft's Nothing Up My Sleeve (NUMS) curves.

These curves are elliptic curves over a prime field, just like the NIST or Brainpool curves. However, the domain-parameters are choosen using a VERY TIGHT DESIGN SPACE to ensure, that the introduction of a backdoor is infeasable. For a desired size of s bits the prime p is choosen as p = 2^s - c with the smallest c where c>0 and p mod 4 = 3 and p being prime.

For Weierstrass curves (with a = -3 for backward compatibility) b is choosen the smallest abs(b) where the prime order n = #Eb(GF(p)) of the curve is as high as possible, dealing a highter n for a larger abs(b).

See https://tools.ietf.org/html/draft-black-numscurves-02 and https://eprint.iacr.org/2014/130

Of the NUMS curves only the Weierstrass curves are implemented.

Documentation

Overview

Additional Elliptic Curves for crypto/elliptic. Curves are implemented using *elliptic.CurveParams.

About the Brainpool Standard Curves [RFC5639].

The ECC Brainpool, is a working group of the state-industrial association TeleTrusT (members including BKA, BSI) on the subject of Elliptic Curve Cryptography. The working group specified a number of elliptic curves in 2005, which were standardized in March 2010 in RFC 5639 of the IETF.

For these curves, the choice of bit length 512 should be mentioned, in contrast to the bit length 521 preferred by many other institutions (e.g. NIST, SECG).

POSSIBLE KLEPTOGRAPHY: The design space of the Brainpool curves contains so many degrees of freedom that a back door cannot be excluded with certainty. The Brainpool curves are also uncertain about some desirable properties.

Of the Brainpool curves only the brainpoolP*t1 variants are implemented because of crypto/elliptic's limitation, that the domain parameter A must be -3.

About the Microsoft's Nothing Up My Sleeve (NUMS) curves.

These curves are elliptic curves over a prime field, just like the NIST or Brainpool curves. However, the domain-parameters are choosen using a VERY TIGHT DESIGN SPACE to ensure, that the introduction of a backdoor is infeasable. For a desired size of [s] bits the prime [p] is choosen as [p = 2^s - c] with the smallest [c] where [c>0] and [p mod 4 = 3] and [p] being prime.

For Weierstrass curves (with [a = -3] for backward compatibility) [b] is choosen the smallest [abs(b)] where the prime order [n = #Eb(GF(p))] of the curve is as high as possible, dealing a highter [n] for a larger [abs(b)].

See https://tools.ietf.org/html/draft-black-numscurves-02 and https://eprint.iacr.org/2014/130

Of the NUMS curves only the Weierstrass curves are implemented.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bp160

func Bp160() elliptic.Curve

Bp160() returns a Curve which implements brainpoolP160t1 of Brainpool Standard

func Bp192

func Bp192() elliptic.Curve

Bp192() returns a Curve which implements brainpoolP192t1 of Brainpool Standard

func Bp224

func Bp224() elliptic.Curve

Bp224() returns a Curve which implements brainpoolP224t1 of Brainpool Standard

func Bp256

func Bp256() elliptic.Curve

Bp256() returns a Curve which implements brainpoolP256t1 of Brainpool Standard

func Bp320

func Bp320() elliptic.Curve

Bp320() returns a Curve which implements brainpoolP320t1 of Brainpool Standard

func Bp384

func Bp384() elliptic.Curve

Bp384() returns a Curve which implements brainpoolP384t1 of Brainpool Standard

func Bp512

func Bp512() elliptic.Curve

Bp512() returns a Curve which implements brainpoolP512t1 of Brainpool Standard

func Nums256

func Nums256() elliptic.Curve

Nums256() returns a Curve which implements nums256d1 of Microsoft's Nothing Up My Sleeve (NUMS)

func Nums256t1

func Nums256t1() elliptic.Curve

Nums256t1() returns a Curve which implements nums256t1 of Microsoft's Nothing Up My Sleeve (NUMS)

func Nums384

func Nums384() elliptic.Curve

Nums384() returns a Curve which implements nums384d1 of Microsoft's Nothing Up My Sleeve (NUMS)

func Nums512

func Nums512() elliptic.Curve

Nums512() returns a Curve which implements nums512d1 of Microsoft's Nothing Up My Sleeve (NUMS)

func Nums512t1

func Nums512t1() elliptic.Curve

Nums512t1() returns a Curve which implements nums512t1 of Microsoft's Nothing Up My Sleeve (NUMS)

Types

This section is empty.

Jump to

Keyboard shortcuts

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