Documentation
¶
Index ¶
- Constants
- Variables
- func CheckSum(buf []byte) []byte
- func CheckWIF(wif string) (valid bool, err error)
- func Decrypt(encryptedKey string, password string) (*bchutil.WIF, error)
- func DecryptECMuliplied(b []byte, passphrase string) (*bchutil.WIF, error)
- func DecryptNonECMultiplied(b []byte, password string) (*bchutil.WIF, error)
- func Encrypt(wif *bchutil.WIF, password string) (string, error)
- func EncryptECMultiply(intermediatePassphrase string) (string, string, error)
- func GeneratePassphrase(password string, salt []byte) (string, error)
- func Hash256(buf []byte) []byte
- type EllipticCurve
- func (ec *EllipticCurve) Add(P, Q Point) (R Point)
- func (ec *EllipticCurve) Decompress(x *big.Int, ylsb uint) (P Point, err error)
- func (ec *EllipticCurve) IsInfinity(P Point) bool
- func (ec *EllipticCurve) IsOnCurve(P Point) bool
- func (ec *EllipticCurve) ScalarBaseMult(k *big.Int) (Q Point)
- func (ec *EllipticCurve) ScalarMult(k *big.Int, P Point) (Q Point)
- type Point
- type PrivateKey
- type PublicKey
Constants ¶
const PubKeyBytesLenCompressed = 33
Variables ¶
var ( Base58DecodeError = errors.New("Could not decode encryped BIP38 key.") BIP38UnsupportedKey = errors.New("Unsupported BIP38 key. Encrypted key possibly corrupted.") BIP38ChecksumMismatch = errors.New("BIP38 checksum mismatch. Encrypted key possibly corrupted.") FaultyPassword = errors.New("Bitcoin address checksum mismatch. Faulty password!") PassfactorToPasspointError = errors.New("Could not derive passpoint from passfactor.") BigIntError = errors.New("Failed to create Int for N") )
Functions ¶
func CheckWIF ¶
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.
func DecryptECMuliplied ¶
Decrypt BIP38 byte slice which has the ECMultiply flag set
func DecryptNonECMultiplied ¶
Decrypt BIP38 byte slice which does not have the ECMultiply flag set
func EncryptECMultiply ¶
Generate BIP38 secret from intermediate passphrase with EC multiply (prefix 0x43). BIP38 Printer code. https://github.com/bitcoin/bips/blob/master/bip-0038.mediawiki#encryption-when-ec-multiply-mode-is-used
func GeneratePassphrase ¶
Generate intermediate passphrase from password + salt
Types ¶
type EllipticCurve ¶
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 ¶
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 PrivateKey ¶
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) 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 ¶
FromBytes converts a byte slice (either with or without point compression) to a Bitcoin public key.
func (*PublicKey) ToAddress ¶
ToAddress converts a Bitcoin public key to a compressed Bitcoin address string.
func (*PublicKey) ToAddressUncompressed ¶
ToAddressUncompressed converts a Bitcoin public key to an uncompressed Bitcoin address string.
func (*PublicKey) ToBytes ¶
ToBytes converts a Bitcoin public key to a 33-byte byte slice with point compression.
func (*PublicKey) ToBytesUncompressed ¶
ToBytesUncompressed converts a Bitcoin public key to a 65-byte byte slice without point compression.