crypto

package
v4.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FlattenECPoints

func FlattenECPoints(in []*ECPoint) ([]*big.Int, error)

func GenerateNTildei

func GenerateNTildei(rand io.Reader, safePrimes [2]*big.Int) (NTildei, h1i, h2i *big.Int, err error)

Types

type ECPoint

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

ECPoint convenience helper

func NewECPoint

func NewECPoint(curve elliptic.Curve, X, Y *big.Int) (*ECPoint, error)

Creates a new ECPoint and checks that the given coordinates are on the elliptic curve.

func NewECPointNoCurveCheck

func NewECPointNoCurveCheck(curve elliptic.Curve, X, Y *big.Int) *ECPoint

Creates a new ECPoint without checking that the coordinates are on the elliptic curve. Only use this function when you are completely sure that the point is already on the curve.

func ScalarBaseMult

func ScalarBaseMult(curve elliptic.Curve, k *big.Int) *ECPoint

ScalarBaseMult multiplies the curve base point by k. Like ScalarMult it panics when the result is the point at infinity; prefer ScalarBaseMultChecked at sites that may receive a zero, order-multiple, or attacker-influenced scalar.

func ScalarBaseMultChecked

func ScalarBaseMultChecked(curve elliptic.Curve, k *big.Int) (*ECPoint, error)

ScalarBaseMultChecked multiplies the curve base point by k and returns an error, rather than panicking, when the result is the point at infinity (k ≡ 0 mod N).

func UnFlattenECPoints

func UnFlattenECPoints(curve elliptic.Curve, in []*big.Int, noCurveCheck ...bool) ([]*ECPoint, error)

func (*ECPoint) Add

func (p *ECPoint) Add(p1 *ECPoint) (*ECPoint, error)

func (*ECPoint) Curve

func (p *ECPoint) Curve() elliptic.Curve

func (*ECPoint) EightInvEight

func (p *ECPoint) EightInvEight() *ECPoint

func (*ECPoint) Equals

func (p *ECPoint) Equals(p2 *ECPoint) bool

func (*ECPoint) GobDecode

func (p *ECPoint) GobDecode(buf []byte) error

func (*ECPoint) GobEncode

func (p *ECPoint) GobEncode() ([]byte, error)

func (*ECPoint) IsOnCurve

func (p *ECPoint) IsOnCurve() bool

func (*ECPoint) MarshalJSON

func (p *ECPoint) MarshalJSON() ([]byte, error)

crypto.ECPoint is not inherently json marshal-able

func (*ECPoint) ScalarMult

func (p *ECPoint) ScalarMult(k *big.Int) *ECPoint

ScalarMult multiplies the point by k. It panics if the result is the point at infinity (which is not a representable ECPoint on a short-Weierstrass curve). Retained for callers that have already established k cannot reduce to 0 mod the group order; prefer ScalarMultChecked at sites that may receive a zero, order-multiple, or otherwise attacker-influenced scalar.

func (*ECPoint) ScalarMultChecked

func (p *ECPoint) ScalarMultChecked(k *big.Int) (*ECPoint, error)

ScalarMultChecked multiplies the point by k and returns an error, rather than panicking, when the result is the point at infinity. curve.ScalarMult yields the identity for k ≡ 0 mod N (a zero or order-multiple scalar); on a short-Weierstrass curve such as secp256k1 the identity encodes as (0,0), which is off-curve and so is rejected by NewECPoint. Callers that may pass such a scalar should use this variant and handle the error instead of crashing.

func (*ECPoint) SetCurve

func (p *ECPoint) SetCurve(curve elliptic.Curve) *ECPoint

func (*ECPoint) ToECDSAPubKey

func (p *ECPoint) ToECDSAPubKey() *ecdsa.PublicKey

func (*ECPoint) UnmarshalJSON

func (p *ECPoint) UnmarshalJSON(payload []byte) error

func (*ECPoint) ValidateBasic

func (p *ECPoint) ValidateBasic() bool

func (*ECPoint) X

func (p *ECPoint) X() *big.Int

func (*ECPoint) Y

func (p *ECPoint) Y() *big.Int

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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