Documentation ¶
Index ¶
- Constants
- Variables
- func ExpandPublicKey(key []byte) (*big.Int, *big.Int)
- func NewSeed() ([]byte, error)
- type Key
- func (key *Key) B58Serialize() string
- func (key *Key) DerivePath(path string) (*Key, error)
- func (key *Key) NewChildKey(childIdx uint32) (*Key, error)
- func (key *Key) PublicKey() *Key
- func (key *Key) PublicKeyExtended() []byte
- func (key *Key) Serialize() ([]byte, error)
- func (key *Key) String() string
- func (key *Key) ToECDSA() (*ecdsa.PrivateKey, error)
Constants ¶
View Source
const ( // FirstHardenedChild is the index of the firxt "harded" child key as per the // bip32 spec FirstHardenedChild = uint32(0x80000000) // PublicKeyCompressedLength is the byte count of a compressed public key PublicKeyCompressedLength = 33 )
Variables ¶
View Source
var (
// PrivateWalletVersion is the version flag for serialized private keys
PrivateWalletVersion, _ = hex.DecodeString("0488ADE4")
// PublicWalletVersion is the version flag for serialized private keys
PublicWalletVersion, _ = hex.DecodeString("0488B21E")
// ErrSerializedKeyWrongSize is returned when trying to deserialize a key that
// has an incorrect length
ErrSerializedKeyWrongSize = errors.New("Serialized keys should by exactly 82 bytes")
// ErrHardnedChildPublicKey is returned when trying to create a harded child
// of the public key
ErrHardnedChildPublicKey = errors.New("Can't create hardened child for public key")
// ErrInvalidChecksum is returned when deserializing a key with an incorrect
// checksum
ErrInvalidChecksum = errors.New("Checksum doesn't match")
// ErrInvalidPrivateKey is returned when a derived private key is invalid
ErrInvalidPrivateKey = errors.New("Invalid private key")
// ErrInvalidPublicKey is returned when a derived public key is invalid
ErrInvalidPublicKey = errors.New("Invalid public key")
// ErrInvalidPath is returned when a path is invalid
ErrInvalidPath = errors.New("Invalid path")
// ErrInvalidIndex is returned when an index is invalid
ErrInvalidIndex = errors.New("Invalid index")
)
View Source
var ( // BitcoinBase58Encoding is the encoding used for bitcoin addresses BitcoinBase58Encoding = basen.NewEncoding("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz") )
Functions ¶
func ExpandPublicKey ¶
ExpandPublicKey As described at https://crypto.stackexchange.com/a/8916
Types ¶
type Key ¶
type Key struct { Key []byte // 33 bytes Version []byte // 4 bytes ChildNumber []byte // 4 bytes FingerPrint []byte // 4 bytes ChainCode []byte // 32 bytes Depth byte // 1 bytes IsPrivate bool // unserialized }
Key represents a bip32 extended key
func B58Deserialize ¶
B58Deserialize deserializes a Key encoded in base58 encoding
func NewMasterKey ¶
NewMasterKey creates a new master extended key from a seed
func (*Key) B58Serialize ¶
B58Serialize encodes the Key in the standard Bitcoin base58 encoding
func (*Key) DerivePath ¶
DerivePath Generate BIP44 account
func (*Key) NewChildKey ¶
NewChildKey derives a child key from a given parent as outlined by bip32
func (*Key) PublicKey ¶
PublicKey returns the public version of key or return a copy The 'Neuter' function from the bip32 spec
func (*Key) PublicKeyExtended ¶
PublicKeyExtended expand PublicKey and return
Click to show internal directories.
Click to hide internal directories.