ecc

package
v0.5.1 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2019 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EllipticCurve

type EllipticCurve struct {
	A *big.Int
	B *big.Int
	P *big.Int
	G Point
	N *big.Int
	H *big.Int
}
y**2 = x**3 + a*x + b  % p

EllipticCurve represents the parameters of a short Weierstrass equation elliptic curve.

func (*EllipticCurve) Add

func (ec *EllipticCurve) Add(P, Q Point) (R Point)

Add computes R = P + Q on EllipticCurve ec.

func (*EllipticCurve) Decompress

func (ec *EllipticCurve) Decompress(x *big.Int, ylsb uint) (P Point, err error)

Decompress decompresses coordinate x and ylsb (y's least significant bit) into a Point P on EllipticCurve ec.

func (*EllipticCurve) IsInfinity

func (ec *EllipticCurve) IsInfinity(P Point) bool

IsInfinity checks if point P is infinity on EllipticCurve ec.

func (*EllipticCurve) IsOnCurve

func (ec *EllipticCurve) IsOnCurve(P Point) bool

IsOnCurve checks if point P is on EllipticCurve ec.

func (*EllipticCurve) ScalarBaseMult

func (ec *EllipticCurve) ScalarBaseMult(k *big.Int) (Q Point)

ScalarBaseMult computes Q = k * G on EllipticCurve ec.

func (*EllipticCurve) ScalarMult

func (ec *EllipticCurve) ScalarMult(k *big.Int, P Point) (Q Point)

ScalarMult computes Q = k * P on EllipticCurve ec.

type Point

type Point struct {
	X *big.Int
	Y *big.Int
}

Point represents a point on an EllipticCurve.

type PrivateKey

type PrivateKey struct {
	PublicKey
	D *big.Int
}

PrivateKey represents a Bitcoin private key.

func GenerateKey

func GenerateKey(rand io.Reader) (priv PrivateKey, err error)

GenerateKey generates a public and private key pair using random source rand.

func NewPrivateKey

func NewPrivateKey(d *big.Int) *PrivateKey

func (*PrivateKey) ToBytes

func (priv *PrivateKey) ToBytes() (b []byte)

ToBytes converts a Bitcoin private key to a 32-byte byte slice.

type PublicKey

type PublicKey struct {
	Point
}

PublicKey represents a Bitcoin public key.

func (*PublicKey) ToBytes

func (pub *PublicKey) ToBytes() (b []byte)

ToBytes converts a Bitcoin public key to a 33-byte byte slice with point compression.

func (*PublicKey) ToBytesUncompressed

func (pub *PublicKey) ToBytesUncompressed() (b []byte)

ToBytesUncompressed converts a Bitcoin public key to a 65-byte byte slice without point compression.

Jump to

Keyboard shortcuts

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