Functions
Add
method
#
Add sets q = p1 + p2, and returns q. The points may overlap.
func (q *P224Point) Add(p1 *P224Point, p2 *P224Point) *P224Point
Add
method
#
Add sets q = p1 + p2, and returns q. The points may overlap.
func (q *P521Point) Add(p1 *P521Point, p2 *P521Point) *P521Point
Add
method
#
Add sets q = p1 + p2, and returns q. The points may overlap.
func (q *P256Point) Add(p1 *P256Point, p2 *P256Point) *P256Point
Add
method
#
Add sets q = p1 + p2, and returns q. The points may overlap.
func (q *P256Point) Add(r1 *P256Point, r2 *P256Point) *P256Point
Add
method
#
Add sets q = p1 + p2, and returns q. The points may overlap.
func (q *P384Point) Add(p1 *P384Point, p2 *P384Point) *P384Point
AddAffine
method
#
AddAffine sets q = p1 + p2, if infinity == 0, and to p1 if infinity == 1.
p2 can't be the point at infinity as it can't be represented in affine
coordinates, instead callers can set p2 to an arbitrary point and set
infinity to 1.
func (q *P256Point) AddAffine(p1 *P256Point, p2 *p256AffinePoint, infinity int) *P256Point
Bytes
method
#
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 (p *P256Point) Bytes() []byte
Bytes
method
#
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 (p *P256Point) Bytes() []byte
Bytes
method
#
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 (p *P224Point) Bytes() []byte
Bytes
method
#
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 (p *P384Point) Bytes() []byte
Bytes
method
#
func (s *p256OrdElement) Bytes() []byte
Bytes
method
#
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 (p *P521Point) Bytes() []byte
BytesCompressed
method
#
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.
func (p *P256Point) BytesCompressed() []byte
BytesCompressed
method
#
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.
func (p *P384Point) BytesCompressed() []byte
BytesCompressed
method
#
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.
func (p *P224Point) BytesCompressed() []byte
BytesCompressed
method
#
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.
func (p *P521Point) BytesCompressed() []byte
BytesCompressed
method
#
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.
func (p *P256Point) BytesCompressed() []byte
BytesX
method
#
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.
func (p *P256Point) BytesX() ([]byte, error)
BytesX
method
#
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.
func (p *P384Point) BytesX() ([]byte, error)
BytesX
method
#
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.
func (p *P224Point) BytesX() ([]byte, error)
BytesX
method
#
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.
func (p *P521Point) BytesX() ([]byte, error)
BytesX
method
#
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.
func (p *P256Point) BytesX() ([]byte, error)
Compute
method
#
Compute populates the table to the first 16 multiples of q.
func (table *p256Table) Compute(q *P256Point) *p256Table
Double
method
#
Double sets q = p + p, and returns q. The points may overlap.
func (q *P256Point) Double(p *P256Point) *P256Point
Double
method
#
Double sets q = p + p, and returns q. The points may overlap.
func (q *P521Point) Double(p *P521Point) *P521Point
Double
method
#
Double sets q = p + p, and returns q. The points may overlap.
func (q *P384Point) Double(p *P384Point) *P384Point
Double
method
#
Double sets q = p + p, and returns q. The points may overlap.
func (q *P256Point) Double(p *P256Point) *P256Point
Double
method
#
Double sets q = p + p, and returns q. The points may overlap.
func (q *P224Point) Double(p *P224Point) *P224Point
Negate
method
#
Negate sets p to -p, if cond == 1, and to p if cond == 0.
func (p *p256AffinePoint) Negate(cond int) *p256AffinePoint
Negate
method
#
Negate sets p to -p, if cond == 1, and to p if cond == 0.
func (p *P256Point) Negate(cond int) *P256Point
NewP224Point
function
#
NewP224Point returns a new P224Point representing the point at infinity point.
func NewP224Point() *P224Point
NewP256Point
function
#
NewP256Point returns a new P256Point representing the point at infinity point.
func NewP256Point() *P256Point
NewP256Point
function
#
NewP256Point returns a new P256Point representing the point at infinity.
func NewP256Point() *P256Point
NewP384Point
function
#
NewP384Point returns a new P384Point representing the point at infinity point.
func NewP384Point() *P384Point
NewP521Point
function
#
NewP521Point returns a new P521Point representing the point at infinity point.
func NewP521Point() *P521Point
P256OrdInverse
function
#
func P256OrdInverse(k []byte) ([]byte, error)
P256OrdInverse
function
#
func P256OrdInverse(k []byte) ([]byte, error)
Projective
method
#
func (p *p256AffinePoint) Projective() *P256Point
Rsh
method
#
Rsh returns the 64 least significant bits of x >> n. n must be lower
than 256. The value of n leaks through timing side-channels.
func (s *p256OrdElement) Rsh(n int) uint64
ScalarBaseMult
method
#
ScalarBaseMult sets p = scalar * B, where B is the canonical generator, and
returns p.
func (p *P224Point) ScalarBaseMult(scalar []byte) (*P224Point, error)
ScalarBaseMult
method
#
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.
func (r *P256Point) ScalarBaseMult(scalar []byte) (*P256Point, error)
ScalarBaseMult
method
#
ScalarBaseMult sets p = 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.
func (p *P256Point) ScalarBaseMult(scalar []byte) (*P256Point, error)
ScalarBaseMult
method
#
ScalarBaseMult sets p = scalar * B, where B is the canonical generator, and
returns p.
func (p *P384Point) ScalarBaseMult(scalar []byte) (*P384Point, error)
ScalarBaseMult
method
#
ScalarBaseMult sets p = scalar * B, where B is the canonical generator, and
returns p.
func (p *P521Point) ScalarBaseMult(scalar []byte) (*P521Point, error)
ScalarMult
method
#
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.
func (r *P256Point) ScalarMult(q *P256Point, scalar []byte) (*P256Point, error)
ScalarMult
method
#
ScalarMult sets p = scalar * q, and returns p.
func (p *P224Point) ScalarMult(q *P224Point, scalar []byte) (*P224Point, error)
ScalarMult
method
#
ScalarMult sets p = scalar * q, and returns p.
func (p *P384Point) ScalarMult(q *P384Point, scalar []byte) (*P384Point, error)
ScalarMult
method
#
ScalarMult sets p = scalar * q, and returns p.
func (p *P521Point) ScalarMult(q *P521Point, scalar []byte) (*P521Point, error)
ScalarMult
method
#
ScalarMult sets r = scalar * q, where scalar is a 32-byte big endian value,
and returns r. If scalar is not 32 bytes long, ScalarMult returns an error
and the receiver is unchanged.
func (p *P256Point) ScalarMult(q *P256Point, scalar []byte) (*P256Point, error)
Select
method
#
Select sets q to p1 if cond == 1, and to p2 if cond == 0.
func (q *P384Point) Select(p1 *P384Point, p2 *P384Point, cond int) *P384Point
Select
method
#
Select selects the n-th multiple of the table base point into p. It works in
constant time by iterating over every entry of the table. n must be in [0, 15].
func (table *p224Table) Select(p *P224Point, n uint8)
Select
method
#
Select selects the n-th multiple of the table base point into p. It works in
constant time. n must be in [0, 16]. If n is 0, p is set to the identity point.
func (table *p256Table) Select(p *P256Point, n uint8)
Select
method
#
Select selects the n-th multiple of the table base point into p. It works in
constant time. n can be in [0, 32], but (unlike p256Table.Select) if n is 0,
p is set to an undefined value.
func (table *p256AffineTable) Select(p *p256AffinePoint, n uint8)
Select
method
#
Select sets q to p1 if cond == 1, and to p2 if cond == 0.
func (q *P256Point) Select(p1 *P256Point, p2 *P256Point, cond int) *P256Point
Select
method
#
Select sets q to p1 if cond == 1, and to p2 if cond == 0.
func (q *P521Point) Select(p1 *P521Point, p2 *P521Point, cond int) *P521Point
Select
method
#
Select sets q to p1 if cond == 1, and to p2 if cond == 0.
func (q *P256Point) Select(p1 *P256Point, p2 *P256Point, cond int) *P256Point
Select
method
#
Select sets q to p1 if cond == 1, and to p2 if cond == 0.
func (q *P224Point) Select(p1 *P224Point, p2 *P224Point, cond int) *P224Point
Select
method
#
Select selects the n-th multiple of the table base point into p. It works in
constant time by iterating over every entry of the table. n must be in [0, 15].
func (table *p521Table) Select(p *P521Point, n uint8)
Select
method
#
Select selects the n-th multiple of the table base point into p. It works in
constant time by iterating over every entry of the table. n must be in [0, 15].
func (table *p384Table) Select(p *P384Point, n uint8)
Set
method
#
Set sets p = q and returns p.
func (p *P256Point) Set(q *P256Point) *P256Point
Set
method
#
Set sets p = q and returns p.
func (p *P384Point) Set(q *P384Point) *P384Point
Set
method
#
Set sets p = q and returns p.
func (p *P256Point) Set(q *P256Point) *P256Point
Set
method
#
Set sets p = q and returns p.
func (p *P521Point) Set(q *P521Point) *P521Point
Set
method
#
Set sets p = q and returns p.
func (p *P224Point) Set(q *P224Point) *P224Point
SetBytes
method
#
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.
func (p *P224Point) SetBytes(b []byte) (*P224Point, error)
SetBytes
method
#
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.
func (p *P384Point) SetBytes(b []byte) (*P384Point, error)
SetBytes
method
#
SetBytes sets s to the big-endian value of x, reducing it as necessary.
func (s *p256OrdElement) SetBytes(x []byte) (*p256OrdElement, error)
SetBytes
method
#
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.
func (p *P256Point) SetBytes(b []byte) (*P256Point, error)
SetBytes
method
#
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.
func (p *P256Point) SetBytes(b []byte) (*P256Point, error)
SetBytes
method
#
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.
func (p *P521Point) SetBytes(b []byte) (*P521Point, error)
SetGenerator
method
#
SetGenerator sets p to the canonical generator and returns p.
func (p *P256Point) SetGenerator() *P256Point
SetGenerator
method
#
SetGenerator sets p to the canonical generator and returns p.
func (p *P256Point) SetGenerator() *P256Point
SetGenerator
method
#
SetGenerator sets p to the canonical generator and returns p.
func (p *P384Point) SetGenerator() *P384Point
SetGenerator
method
#
SetGenerator sets p to the canonical generator and returns p.
func (p *P521Point) SetGenerator() *P521Point
SetGenerator
method
#
SetGenerator sets p to the canonical generator and returns p.
func (p *P224Point) SetGenerator() *P224Point
affineFromMont
method
#
affineFromMont sets (x, y) to the affine coordinates of p, converted out of the
Montgomery domain.
func (p *P256Point) affineFromMont(x *p256Element, y *p256Element)
boothW5
function
#
func boothW5(in uint) (int, int)
boothW5
function
#
func boothW5(in uint64) (uint8, int)
boothW6
function
#
func boothW6(in uint) (int, int)
boothW6
function
#
func boothW6(in uint64) (uint8, int)
bytes
method
#
func (p *P256Point) bytes(out *[p256UncompressedLength]byte) []byte
bytes
method
#
func (p *P521Point) bytes(out *[*ast.BinaryExpr]byte) []byte
bytes
method
#
func (p *P224Point) bytes(out *[*ast.BinaryExpr]byte) []byte
bytes
method
#
func (p *P384Point) bytes(out *[*ast.BinaryExpr]byte) []byte
bytes
method
#
func (p *P256Point) bytes(out *[p256UncompressedLength]byte) []byte
bytesCompressed
method
#
func (p *P256Point) bytesCompressed(out *[p256CompressedLength]byte) []byte
bytesCompressed
method
#
func (p *P224Point) bytesCompressed(out *[*ast.BinaryExpr]byte) []byte
bytesCompressed
method
#
func (p *P521Point) bytesCompressed(out *[*ast.BinaryExpr]byte) []byte
bytesCompressed
method
#
func (p *P384Point) bytesCompressed(out *[*ast.BinaryExpr]byte) []byte
bytesCompressed
method
#
func (p *P256Point) bytesCompressed(out *[p256CompressedLength]byte) []byte
bytesToLimbs
function
#
func bytesToLimbs(l *[4]uint64, b *[32]byte)
bytesX
method
#
func (p *P256Point) bytesX(out *[p256ElementLength]byte) ([]byte, error)
bytesX
method
#
func (p *P521Point) bytesX(out *[p521ElementLength]byte) ([]byte, error)
bytesX
method
#
func (p *P256Point) bytesX(out *[p256ElementLength]byte) ([]byte, error)
bytesX
method
#
func (p *P224Point) bytesX(out *[p224ElementLength]byte) ([]byte, error)
bytesX
method
#
func (p *P384Point) bytesX(out *[p384ElementLength]byte) ([]byte, error)
generatorTable
method
#
generatorTable returns a sequence of p384Tables. The first table contains
multiples of G. Each successive table is the previous table doubled four
times.
func (p *P384Point) generatorTable() *[*ast.BinaryExpr]p384Table
generatorTable
method
#
generatorTable returns a sequence of p224Tables. The first table contains
multiples of G. Each successive table is the previous table doubled four
times.
func (p *P224Point) generatorTable() *[*ast.BinaryExpr]p224Table
generatorTable
method
#
generatorTable returns a sequence of p521Tables. The first table contains
multiples of G. Each successive table is the previous table doubled four
times.
func (p *P521Point) generatorTable() *[*ast.BinaryExpr]p521Table
init
function
#
func init()
init
function
#
func init()
isInfinity
method
#
isInfinity returns 1 if p is the point at infinity and 0 otherwise.
func (p *P256Point) isInfinity() int
limbsToBytes
function
#
func limbsToBytes(b *[32]byte, l *[4]uint64)
p224B
function
#
func p224B() *fiat.P224Element
p224CheckOnCurve
function
#
func p224CheckOnCurve(x *fiat.P224Element, y *fiat.P224Element) error
p224Polynomial
function
#
p224Polynomial sets y2 to x³ - 3x + b, and returns y2.
func p224Polynomial(y2 *fiat.P224Element, x *fiat.P224Element) *fiat.P224Element
p224Sqrt
function
#
p224Sqrt sets e to a square root of x. If x is not a square, p224Sqrt returns
false and e is unchanged. e and x can overlap.
func p224Sqrt(e *fiat.P224Element, x *fiat.P224Element) (isSquare bool)
p224SqrtCandidate
function
#
p224SqrtCandidate sets r to a square root candidate for x. r and x must not overlap.
func p224SqrtCandidate(r *fiat.P224Element, x *fiat.P224Element)
p256Add
function
#
p256Add sets res = x + y.
func p256Add(res *p256Element, x *p256Element, y *p256Element)
p256B
function
#
func p256B() *fiat.P256Element
p256BaseMult
method
#
func (p *P256Point) p256BaseMult(scalar *p256OrdElement)
p256BigToLittle
function
#
func p256BigToLittle(l *p256Element, b *[32]byte)
p256CheckOnCurve
function
#
func p256CheckOnCurve(x *p256Element, y *p256Element) error
p256CheckOnCurve
function
#
func p256CheckOnCurve(x *fiat.P256Element, y *fiat.P256Element) error
p256Equal
function
#
p256Equal returns 1 if a and b are equal and 0 otherwise.
func p256Equal(a *p256Element, b *p256Element) int
p256FromMont
function
#
Montgomery multiplication by R⁻¹, or 1 outside the domain.
Sets res = in * R⁻¹, bringing res out of the Montgomery domain.
go:noescape
func p256FromMont(res *p256Element, in *p256Element)
p256Inverse
function
#
p256Inverse sets out to in⁻¹ mod p. If in is zero, out will be zero.
func p256Inverse(out *p256Element, in *p256Element)
p256LessThanP
function
#
p256LessThanP returns 1 if x < p, and 0 otherwise. Note that a p256Element is
not allowed to be equal to or greater than p, so if this function returns 0
then x is invalid.
func p256LessThanP(x *p256Element) int
p256LittleToBig
function
#
func p256LittleToBig(b *[32]byte, l *p256Element)
p256MovCond
function
#
If cond is 0, sets res = b, otherwise sets res = a.
go:noescape
func p256MovCond(res *P256Point, a *P256Point, b *P256Point, cond int)
p256Mul
function
#
Montgomery multiplication. Sets res = in1 * in2 * R⁻¹ mod p.
go:noescape
func p256Mul(res *p256Element, in1 *p256Element, in2 *p256Element)
p256NegCond
function
#
If cond is not 0, sets val = -val mod p.
go:noescape
func p256NegCond(val *p256Element, cond int)
p256OrdBigToLittle
function
#
func p256OrdBigToLittle(l *p256OrdElement, b *[32]byte)
p256OrdLittleToBig
function
#
func p256OrdLittleToBig(b *[32]byte, l *p256OrdElement)
p256OrdMul
function
#
Montgomery multiplication modulo org(G). Sets res = in1 * in2 * R⁻¹.
go:noescape
func p256OrdMul(res *p256OrdElement, in1 *p256OrdElement, in2 *p256OrdElement)
p256OrdReduce
function
#
p256OrdReduce ensures s is in the range [0, ord(G)-1].
func p256OrdReduce(s *p256OrdElement)
p256OrdSqr
function
#
Montgomery square modulo org(G), repeated n times (n >= 1).
go:noescape
func p256OrdSqr(res *p256OrdElement, in *p256OrdElement, n int)
p256PointAddAffineAsm
function
#
Point addition with an affine point and constant time conditions.
If zero is 0, sets res = in2. If sel is 0, sets res = in1.
If sign is not 0, sets res = in1 + -in2. Otherwise, sets res = in1 + in2
go:noescape
func p256PointAddAffineAsm(res *P256Point, in1 *P256Point, in2 *p256AffinePoint, sign int, sel int, zero int)
p256PointAddAsm
function
#
Point addition. Sets res = in1 + in2. Returns one if the two input points
were equal and zero otherwise. If in1 or in2 are the point at infinity, res
and the return value are undefined.
go:noescape
func p256PointAddAsm(res *P256Point, in1 *P256Point, in2 *P256Point) int
p256PointDoubleAsm
function
#
Point doubling. Sets res = in + in. in can be the point at infinity.
go:noescape
func p256PointDoubleAsm(res *P256Point, in *P256Point)
p256Polynomial
function
#
p256Polynomial sets y2 to x³ - 3x + b, and returns y2.
func p256Polynomial(y2 *p256Element, x *p256Element) *p256Element
p256Polynomial
function
#
p256Polynomial sets y2 to x³ - 3x + b, and returns y2.
func p256Polynomial(y2 *fiat.P256Element, x *fiat.P256Element) *fiat.P256Element
p256ScalarMult
method
#
func (p *P256Point) p256ScalarMult(scalar *p256OrdElement)
p256Select
function
#
p256Select sets res to the point at index idx in the table.
idx must be in [0, 15]. It executes in constant time.
go:noescape
func p256Select(res *P256Point, table *p256Table, idx int)
p256SelectAffine
function
#
p256SelectAffine sets res to the point at index idx in the table.
idx must be in [0, 31]. It executes in constant time.
go:noescape
func p256SelectAffine(res *p256AffinePoint, table *p256AffineTable, idx int)
p256Sqr
function
#
Montgomery square, repeated n times (n >= 1).
go:noescape
func p256Sqr(res *p256Element, in *p256Element, n int)
p256Sqrt
function
#
p256Sqrt sets e to a square root of x. If x is not a square, p256Sqrt returns
false and e is unchanged. e and x can overlap.
func p256Sqrt(e *fiat.P256Element, x *fiat.P256Element) (isSquare bool)
p256Sqrt
function
#
p256Sqrt sets e to a square root of x. If x is not a square, p256Sqrt returns
false and e is unchanged. e and x can overlap.
func p256Sqrt(e *p256Element, x *p256Element) (isSquare bool)
p256Square
function
#
p256Square sets e to the square of x, repeated n times > 1.
func p256Square(e *fiat.P256Element, x *fiat.P256Element, n int)
p384B
function
#
func p384B() *fiat.P384Element
p384CheckOnCurve
function
#
func p384CheckOnCurve(x *fiat.P384Element, y *fiat.P384Element) error
p384Polynomial
function
#
p384Polynomial sets y2 to x³ - 3x + b, and returns y2.
func p384Polynomial(y2 *fiat.P384Element, x *fiat.P384Element) *fiat.P384Element
p384Sqrt
function
#
p384Sqrt sets e to a square root of x. If x is not a square, p384Sqrt returns
false and e is unchanged. e and x can overlap.
func p384Sqrt(e *fiat.P384Element, x *fiat.P384Element) (isSquare bool)
p384SqrtCandidate
function
#
p384SqrtCandidate sets z to a square root candidate for x. z and x must not overlap.
func p384SqrtCandidate(z *fiat.P384Element, x *fiat.P384Element)
p521B
function
#
func p521B() *fiat.P521Element
p521CheckOnCurve
function
#
func p521CheckOnCurve(x *fiat.P521Element, y *fiat.P521Element) error
p521Polynomial
function
#
p521Polynomial sets y2 to x³ - 3x + b, and returns y2.
func p521Polynomial(y2 *fiat.P521Element, x *fiat.P521Element) *fiat.P521Element
p521Sqrt
function
#
p521Sqrt sets e to a square root of x. If x is not a square, p521Sqrt returns
false and e is unchanged. e and x can overlap.
func p521Sqrt(e *fiat.P521Element, x *fiat.P521Element) (isSquare bool)
p521SqrtCandidate
function
#
p521SqrtCandidate sets z to a square root candidate for x. z and x must not overlap.
func p521SqrtCandidate(z *fiat.P521Element, x *fiat.P521Element)
uint64IsZero
function
#
uint64IsZero returns 1 if x is zero and zero otherwise.
func uint64IsZero(x uint64) int