// generateKeyPair generates and stores a secp256k1 keypair in a file. func generateKeyPair(filename string) error { key, err := ecdsa.GenerateKey(curve, rand.Reader) if err != nil { return err } pub := btcec.PublicKey{curve, key.PublicKey.X, key.PublicKey.Y} priv := btcec.PrivateKey{key.PublicKey, key.D} addr, err := address.NewAddressPubKeyHash(Hash160(pub.SerializeCompressed()), PubKeyHashAddrID) if err != nil { return err } privWif := NewWIF(priv) var buf bytes.Buffer buf.WriteString("Address: ") buf.WriteString(addr.EncodeAddress()) buf.WriteString("\n") buf.WriteString("Private key: ") buf.WriteString(privWif.String()) buf.WriteString("\n") err = writeNewFile(filename, buf.Bytes(), 0644) if err != nil { return err } return nil }
// Address converts the extended key to a standard bitcoin pay-to-pubkey-hash // address for the passed network. func (k *ExtendedKey) Address(pkhaid [2]byte) (*address.AddressPubKeyHash, error) { pkHash := Hash160(k.pubKeyBytes()) return address.NewAddressPubKeyHash(pkHash, pkhaid) }