btckey

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2018 License: MIT Imports: 9 Imported by: 32

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckWIF

func CheckWIF(wif string) (valid bool, err error)

CheckWIF checks that string wif is a valid Wallet Import Format or Wallet Import Format Compressed string. If it is not, err is populated with the reason.

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 added in v1.1.0

func NewPrivateKey(d *big.Int) *PrivateKey

func (*PrivateKey) FromBytes

func (priv *PrivateKey) FromBytes(b []byte) (err error)

FromBytes converts a 32-byte byte slice to a Bitcoin private key and derives the corresponding Bitcoin public key.

func (*PrivateKey) FromWIF

func (priv *PrivateKey) FromWIF(wif string) (err error)

FromWIF converts a Wallet Import Format string to a Bitcoin private key and derives the corresponding Bitcoin public key.

func (*PrivateKey) ToBytes

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

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

func (*PrivateKey) ToWIF

func (priv *PrivateKey) ToWIF() (wif string)

ToWIF converts a Bitcoin private key to a Wallet Import Format string.

func (*PrivateKey) ToWIFC

func (priv *PrivateKey) ToWIFC() (wifc string)

ToWIFC converts a Bitcoin private key to a Wallet Import Format string with the public key compressed flag.

type PublicKey

type PublicKey struct {
	Point
}

PublicKey represents a Bitcoin public key.

func (*PublicKey) FromBytes

func (pub *PublicKey) FromBytes(b []byte) (err error)

FromBytes converts a byte slice (either with or without point compression) to a Bitcoin public key.

func (*PublicKey) ToAddress

func (pub *PublicKey) ToAddress() (address string)

ToAddress converts a Bitcoin public key to a compressed Bitcoin address string.

func (*PublicKey) ToAddressUncompressed

func (pub *PublicKey) ToAddressUncompressed() (address string)

ToAddressUncompressed converts a Bitcoin public key to an uncompressed Bitcoin address string.

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