Involved Source Files Package nistec implements the NIST P elliptic curves from FIPS 186-4.
This package uses fiat-crypto or specialized assembly and Go code 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 where possible. The point at infinity is
handled and encoded according to SEC 1, Version 2.0, and invalid curve points
can't be represented.p224.gop224_sqrt.gop256_asm.gop256_ordinv.gop384.gop521.gop256_asm_amd64.s
Package-Level Type Names (total 4)
/* sort by: | */
P224Point is a P224 point. The zero value is NOT valid. Add sets q = p1 + p2, and returns q. The points may overlap. 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. BytesCompressed returns the compressed 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. BytesX returns the encoding of the x-coordinate of p, as specified in SEC 1,
Version 2.0, Section 2.3.5, or an error if p is the point at infinity. Double sets q = p + p, and returns q. The points may overlap. ScalarBaseMult sets p = scalar * B, where B is the canonical generator, and
returns p. ScalarMult sets p = scalar * q, and returns p. Select sets q to p1 if cond == 1, and to p2 if cond == 0. Set sets p = q and returns p. 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. SetGenerator sets p to the canonical generator and returns p.
func NewP224Point() *P224Point
func (*P224Point).Add(p1, p2 *P224Point) *P224Point
func (*P224Point).Double(p *P224Point) *P224Point
func (*P224Point).ScalarBaseMult(scalar []byte) (*P224Point, error)
func (*P224Point).ScalarMult(q *P224Point, scalar []byte) (*P224Point, error)
func (*P224Point).Select(p1, p2 *P224Point, cond int) *P224Point
func (*P224Point).Set(q *P224Point) *P224Point
func (*P224Point).SetBytes(b []byte) (*P224Point, error)
func (*P224Point).SetGenerator() *P224Point
func (*P224Point).Add(p1, p2 *P224Point) *P224Point
func (*P224Point).Double(p *P224Point) *P224Point
func (*P224Point).ScalarMult(q *P224Point, scalar []byte) (*P224Point, error)
func (*P224Point).Select(p1, p2 *P224Point, cond int) *P224Point
func (*P224Point).Set(q *P224Point) *P224Point
P256Point is a P-256 point. The zero value should not be assumed to be valid
(although it is in this implementation). Add sets q = p1 + p2, and returns q. The points may overlap. 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. BytesCompressed returns the compressed 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. BytesX returns the encoding of the x-coordinate of p, as specified in SEC 1,
Version 2.0, Section 2.3.5, or an error if p is the point at infinity. Double sets q = p + p, and returns q. The points may overlap. ScalarBaseMult sets r = scalar * generator, where scalar is a 32-byte big
endian value, and returns r. If scalar is not 32 bytes long, ScalarBaseMult
returns an error and the receiver is unchanged. ScalarMult sets r = scalar * q, where scalar is a 32-byte big endian value,
and returns r. If scalar is not 32 bytes long, ScalarBaseMult returns an
error and the receiver is unchanged. Select sets q to p1 if cond == 1, and to p2 if cond == 0. Set sets p = q and returns p. 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. SetGenerator sets p to the canonical generator and returns p.
func NewP256Point() *P256Point
func (*P256Point).Add(r1, r2 *P256Point) *P256Point
func (*P256Point).Double(p *P256Point) *P256Point
func (*P256Point).ScalarBaseMult(scalar []byte) (*P256Point, error)
func (*P256Point).ScalarMult(q *P256Point, scalar []byte) (*P256Point, error)
func (*P256Point).Select(p1, p2 *P256Point, cond int) *P256Point
func (*P256Point).Set(q *P256Point) *P256Point
func (*P256Point).SetBytes(b []byte) (*P256Point, error)
func (*P256Point).SetGenerator() *P256Point
func (*P256Point).Add(r1, r2 *P256Point) *P256Point
func (*P256Point).Double(p *P256Point) *P256Point
func (*P256Point).ScalarMult(q *P256Point, scalar []byte) (*P256Point, error)
func (*P256Point).Select(p1, p2 *P256Point, cond int) *P256Point
func (*P256Point).Set(q *P256Point) *P256Point
P384Point is a P384 point. The zero value is NOT valid. Add sets q = p1 + p2, and returns q. The points may overlap. 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. BytesCompressed returns the compressed 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. BytesX returns the encoding of the x-coordinate of p, as specified in SEC 1,
Version 2.0, Section 2.3.5, or an error if p is the point at infinity. Double sets q = p + p, and returns q. The points may overlap. ScalarBaseMult sets p = scalar * B, where B is the canonical generator, and
returns p. ScalarMult sets p = scalar * q, and returns p. Select sets q to p1 if cond == 1, and to p2 if cond == 0. Set sets p = q and returns p. 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. SetGenerator sets p to the canonical generator and returns p.
func NewP384Point() *P384Point
func (*P384Point).Add(p1, p2 *P384Point) *P384Point
func (*P384Point).Double(p *P384Point) *P384Point
func (*P384Point).ScalarBaseMult(scalar []byte) (*P384Point, error)
func (*P384Point).ScalarMult(q *P384Point, scalar []byte) (*P384Point, error)
func (*P384Point).Select(p1, p2 *P384Point, cond int) *P384Point
func (*P384Point).Set(q *P384Point) *P384Point
func (*P384Point).SetBytes(b []byte) (*P384Point, error)
func (*P384Point).SetGenerator() *P384Point
func (*P384Point).Add(p1, p2 *P384Point) *P384Point
func (*P384Point).Double(p *P384Point) *P384Point
func (*P384Point).ScalarMult(q *P384Point, scalar []byte) (*P384Point, error)
func (*P384Point).Select(p1, p2 *P384Point, cond int) *P384Point
func (*P384Point).Set(q *P384Point) *P384Point
P521Point is a P521 point. The zero value is NOT valid. Add sets q = p1 + p2, and returns q. The points may overlap. 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. BytesCompressed returns the compressed 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. BytesX returns the encoding of the x-coordinate of p, as specified in SEC 1,
Version 2.0, Section 2.3.5, or an error if p is the point at infinity. Double sets q = p + p, and returns q. The points may overlap. ScalarBaseMult sets p = scalar * B, where B is the canonical generator, and
returns p. ScalarMult sets p = scalar * q, and returns p. Select sets q to p1 if cond == 1, and to p2 if cond == 0. Set sets p = q and returns p. 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. SetGenerator sets p to the canonical generator and returns p.
func NewP521Point() *P521Point
func (*P521Point).Add(p1, p2 *P521Point) *P521Point
func (*P521Point).Double(p *P521Point) *P521Point
func (*P521Point).ScalarBaseMult(scalar []byte) (*P521Point, error)
func (*P521Point).ScalarMult(q *P521Point, scalar []byte) (*P521Point, error)
func (*P521Point).Select(p1, p2 *P521Point, cond int) *P521Point
func (*P521Point).Set(q *P521Point) *P521Point
func (*P521Point).SetBytes(b []byte) (*P521Point, error)
func (*P521Point).SetGenerator() *P521Point
func (*P521Point).Add(p1, p2 *P521Point) *P521Point
func (*P521Point).Double(p *P521Point) *P521Point
func (*P521Point).ScalarMult(q *P521Point, scalar []byte) (*P521Point, error)
func (*P521Point).Select(p1, p2 *P521Point, cond int) *P521Point
func (*P521Point).Set(q *P521Point) *P521Point
Package-Level Functions (total 5)
NewP224Point returns a new P224Point representing the point at infinity point.
NewP256Point returns a new P256Point representing the point at infinity.
NewP384Point returns a new P384Point representing the point at infinity point.
NewP521Point returns a new P521Point representing the point at infinity point.
The pages are generated with Goldsv0.7.0-preview. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.