Element represents an element of the field GF(2^255-19). Note that this
is not a cryptographically secure group, and should only be used to interact
with edwards25519.Point coordinates.
This type works similarly to math/big.Int, and all arguments and receivers
are allowed to alias.
The zero value is a valid zero element. Absolute sets v to |u|, and returns v. Add sets v = a + b, and returns v. Bytes returns the canonical 32-byte little-endian encoding of v. Equal returns 1 if v and u are equal, and 0 otherwise. Invert sets v = 1/z mod p, and returns v.
If z == 0, Invert returns v = 0. IsNegative returns 1 if v is negative, and 0 otherwise. Mult32 sets v = x * y, and returns v. Multiply sets v = x * y, and returns v. Negate sets v = -a, and returns v. One sets v = 1, and returns v. Pow22523 set v = x^((p-5)/8), and returns v. (p-5)/8 is 2^252-3. Select sets v to a if cond == 1, and to b if cond == 0. Set sets v = a, and returns v. SetBytes sets v to x, where x is a 32-byte little-endian encoding. If x is
not of the right length, SetBytes returns nil and an error, and the
receiver is unchanged.
Consistent with RFC 7748, the most significant bit (the high bit of the
last byte) is ignored, and non-canonical values (2^255-19 through 2^255-1)
are accepted. Note that this is laxer than specified by RFC 8032, but
consistent with most Ed25519 implementations. SqrtRatio sets r to the non-negative square root of the ratio of u and v.
If u/v is square, SqrtRatio returns r and 1. If u/v is not square, SqrtRatio
sets r according to Section 4.3 of draft-irtf-cfrg-ristretto255-decaf448-00,
and returns r and 0. Square sets v = x * x, and returns v. Subtract sets v = a - b, and returns v. Swap swaps v and u if cond == 1 or leaves them unchanged if cond == 0, and returns v. Zero sets v = 0, and returns v.
func (*Element).Absolute(u *Element) *Element
func (*Element).Add(a, b *Element) *Element
func (*Element).Invert(z *Element) *Element
func (*Element).Mult32(x *Element, y uint32) *Element
func (*Element).Multiply(x, y *Element) *Element
func (*Element).Negate(a *Element) *Element
func (*Element).One() *Element
func (*Element).Pow22523(x *Element) *Element
func (*Element).Select(a, b *Element, cond int) *Element
func (*Element).Set(a *Element) *Element
func (*Element).SetBytes(x []byte) (*Element, error)
func (*Element).SqrtRatio(u, v *Element) (R *Element, wasSquare int)
func (*Element).Square(x *Element) *Element
func (*Element).Subtract(a, b *Element) *Element
func (*Element).Zero() *Element
func (*Element).Absolute(u *Element) *Element
func (*Element).Add(a, b *Element) *Element
func (*Element).Equal(u *Element) int
func (*Element).Invert(z *Element) *Element
func (*Element).Mult32(x *Element, y uint32) *Element
func (*Element).Multiply(x, y *Element) *Element
func (*Element).Negate(a *Element) *Element
func (*Element).Pow22523(x *Element) *Element
func (*Element).Select(a, b *Element, cond int) *Element
func (*Element).Set(a *Element) *Element
func (*Element).SqrtRatio(u, v *Element) (R *Element, wasSquare int)
func (*Element).Square(x *Element) *Element
func (*Element).Subtract(a, b *Element) *Element
func (*Element).Swap(u *Element, cond int)
The pages are generated with Goldsv0.7.3-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.