nistec

package standard library
go1.18 Latest Latest
Warning

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

Go to latest
Published: Mar 15, 2022 License: BSD-3-Clause Imports: 3 Imported by: 0

Documentation

Overview

Package nistec implements the NIST P elliptic curves from FIPS 186-4.

This package uses fiat-crypto for its backend field arithmetic (not math/big) and exposes constant-time, heap allocation-free, byte slice-based safe APIs. Group operations use modern and safe complete addition formulas. The point at infinity is handled and encoded according to SEC 1, Version 2.0, and invalid curve points can't be represented.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type P224Point

type P224Point struct {
	// contains filtered or unexported fields
}

P224Point is a P-224 point. The zero value is NOT valid.

func NewP224Generator

func NewP224Generator() *P224Point

NewP224Generator returns a new P224Point set to the canonical generator.

func NewP224Point

func NewP224Point() *P224Point

NewP224Point returns a new P224Point representing the point at infinity point.

func (*P224Point) Add

func (q *P224Point) Add(p1, p2 *P224Point) *P224Point

Add sets q = p1 + p2, and returns q. The points may overlap.

func (*P224Point) Bytes

func (p *P224Point) Bytes() []byte

Bytes returns the uncompressed or infinity encoding of p, as specified in SEC 1, Version 2.0, Section 2.3.3. Note that the encoding of the point at infinity is shorter than all other encodings.

func (*P224Point) Double

func (q *P224Point) Double(p *P224Point) *P224Point

Double sets q = p + p, and returns q. The points may overlap.

func (*P224Point) ScalarMult

func (p *P224Point) ScalarMult(q *P224Point, scalar []byte) *P224Point

ScalarMult sets p = scalar * q, and returns p.

func (*P224Point) Select

func (q *P224Point) Select(p1, p2 *P224Point, cond int) *P224Point

Select sets q to p1 if cond == 1, and to p2 if cond == 0.

func (*P224Point) Set

func (p *P224Point) Set(q *P224Point) *P224Point

Set sets p = q and returns p.

func (*P224Point) SetBytes

func (p *P224Point) SetBytes(b []byte) (*P224Point, error)

SetBytes sets p to the compressed, uncompressed, or infinity value encoded in b, as specified in SEC 1, Version 2.0, Section 2.3.4. If the point is not on the curve, it returns nil and an error, and the receiver is unchanged. Otherwise, it returns p.

type P384Point

type P384Point struct {
	// contains filtered or unexported fields
}

P384Point is a P-384 point. The zero value is NOT valid.

func NewP384Generator

func NewP384Generator() *P384Point

NewP384Generator returns a new P384Point set to the canonical generator.

func NewP384Point

func NewP384Point() *P384Point

NewP384Point returns a new P384Point representing the point at infinity point.

func (*P384Point) Add

func (q *P384Point) Add(p1, p2 *P384Point) *P384Point

Add sets q = p1 + p2, and returns q. The points may overlap.

func (*P384Point) Bytes

func (p *P384Point) Bytes() []byte

Bytes returns the uncompressed or infinity encoding of p, as specified in SEC 1, Version 2.0, Section 2.3.3. Note that the encoding of the point at infinity is shorter than all other encodings.

func (*P384Point) Double

func (q *P384Point) Double(p *P384Point) *P384Point

Double sets q = p + p, and returns q. The points may overlap.

func (*P384Point) ScalarMult

func (p *P384Point) ScalarMult(q *P384Point, scalar []byte) *P384Point

ScalarMult sets p = scalar * q, and returns p.

func (*P384Point) Select

func (q *P384Point) Select(p1, p2 *P384Point, cond int) *P384Point

Select sets q to p1 if cond == 1, and to p2 if cond == 0.

func (*P384Point) Set

func (p *P384Point) Set(q *P384Point) *P384Point

Set sets p = q and returns p.

func (*P384Point) SetBytes

func (p *P384Point) SetBytes(b []byte) (*P384Point, error)

SetBytes sets p to the compressed, uncompressed, or infinity value encoded in b, as specified in SEC 1, Version 2.0, Section 2.3.4. If the point is not on the curve, it returns nil and an error, and the receiver is unchanged. Otherwise, it returns p.

type P521Point

type P521Point struct {
	// contains filtered or unexported fields
}

P521Point is a P-521 point. The zero value is NOT valid.

func NewP521Generator

func NewP521Generator() *P521Point

NewP521Generator returns a new P521Point set to the canonical generator.

func NewP521Point

func NewP521Point() *P521Point

NewP521Point returns a new P521Point representing the point at infinity point.

func (*P521Point) Add

func (q *P521Point) Add(p1, p2 *P521Point) *P521Point

Add sets q = p1 + p2, and returns q. The points may overlap.

func (*P521Point) Bytes

func (p *P521Point) Bytes() []byte

Bytes returns the uncompressed or infinity encoding of p, as specified in SEC 1, Version 2.0, Section 2.3.3. Note that the encoding of the point at infinity is shorter than all other encodings.

func (*P521Point) Double

func (q *P521Point) Double(p *P521Point) *P521Point

Double sets q = p + p, and returns q. The points may overlap.

func (*P521Point) ScalarMult

func (p *P521Point) ScalarMult(q *P521Point, scalar []byte) *P521Point

ScalarMult sets p = scalar * q, and returns p.

func (*P521Point) Select

func (q *P521Point) Select(p1, p2 *P521Point, cond int) *P521Point

Select sets q to p1 if cond == 1, and to p2 if cond == 0.

func (*P521Point) Set

func (p *P521Point) Set(q *P521Point) *P521Point

Set sets p = q and returns p.

func (*P521Point) SetBytes

func (p *P521Point) SetBytes(b []byte) (*P521Point, error)

SetBytes sets p to the compressed, uncompressed, or infinity value encoded in b, as specified in SEC 1, Version 2.0, Section 2.3.4. If the point is not on the curve, it returns nil and an error, and the receiver is unchanged. Otherwise, it returns p.

Jump to

Keyboard shortcuts

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