package field

Import Path
	crypto/internal/edwards25519/field (on go.dev)

Dependency Relation
	imports 4 packages, and imported by 2 packages

Involved Source Files Package field implements fast arithmetic modulo 2^255-19. fe_amd64.go fe_arm64_noasm.go fe_generic.go fe_amd64.s
Package-Level Type Names (total 2, in which 1 is exported)
/* sort exporteds by: | */
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)
Package-Level Functions (total 9, none are exported)
Package-Level Variables (total 3, none are exported)
Package-Level Constants (only one, which is unexported)