error testing the hd

This commit is contained in:
Ethan Buchman 2017-03-22 16:45:30 -04:00
parent ce9c57fca8
commit c6be97c71c
1 changed files with 53 additions and 9 deletions

View File

@ -1,6 +1,10 @@
package crypto
import (
"bytes"
"crypto/hmac"
"crypto/sha512"
"encoding/binary"
"encoding/hex"
"encoding/json"
"fmt"
@ -13,6 +17,7 @@ import (
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcutil/hdkeychain"
"github.com/mndrix/btcutil"
"github.com/tyler-smith/go-bip32"
"github.com/tendermint/go-crypto"
@ -67,12 +72,13 @@ func TestHDToAddr(t *testing.T) {
fmt.Println(i, d.Mnemonic)
priv, pub := tylerSmith(seed)
//priv, pub := btcsuite(seed)
// priv, pub := btcsuite(seed)
fmt.Printf("\t%X %X\n", seedB, seed)
fmt.Printf("\t%X %X\n", privB, priv)
fmt.Printf("\t%X %X\n", pubB, pub)
assert.Equal(t, priv, privB, "Expected priv keys to match")
_, _ = priv, privB
// assert.Equal(t, priv, privB, "Expected priv keys to match")
assert.Equal(t, pub, pubB, "Expected pub keys to match")
var pubT crypto.PubKeySecp256k1
@ -94,7 +100,23 @@ func ifExit(err error, n int) {
}
func btcsuite(seed []byte) ([]byte, []byte) {
masterKey, _ := hdkeychain.NewMaster(seed, &chaincfg.MainNetParams)
fmt.Println("HD")
masterKey, err := hdkeychain.NewMaster(seed, &chaincfg.MainNetParams)
if err != nil {
hmac := hmac.New(sha512.New, []byte("Bitcoin seed"))
hmac.Write([]byte(seed))
intermediary := hmac.Sum(nil)
curve := btcutil.Secp256k1()
curveParams := curve.Params()
// Split it into our key and chain code
keyBytes := intermediary[:32]
fmt.Printf("\t%X\n", keyBytes)
fmt.Printf("\t%X\n", curveParams.N.Bytes())
keyInt, _ := binary.ReadVarint(bytes.NewBuffer(keyBytes))
fmt.Printf("\t%d\n", keyInt)
}
fh := hdkeychain.HardenedKeyStart
k, err := masterKey.Child(uint32(fh + 44))
ifExit(err, 44)
@ -118,13 +140,35 @@ func btcsuite(seed []byte) ([]byte, []byte) {
// return priv and pub
func tylerSmith(seed []byte) ([]byte, []byte) {
masterKey, _ := bip32.NewMasterKey(seed)
masterKey, err := bip32.NewMasterKey(seed)
if err != nil {
hmac := hmac.New(sha512.New, []byte("Bitcoin seed"))
hmac.Write([]byte(seed))
intermediary := hmac.Sum(nil)
curve := btcutil.Secp256k1()
curveParams := curve.Params()
// Split it into our key and chain code
keyBytes := intermediary[:32]
fmt.Printf("\t%X\n", keyBytes)
fmt.Printf("\t%X\n", curveParams.N.Bytes())
keyInt, _ := binary.ReadVarint(bytes.NewBuffer(keyBytes))
fmt.Printf("\t%d\n", keyInt)
}
ifExit(err, 0)
fh := bip32.FirstHardenedChild
k, _ := masterKey.NewChildKey(fh + 44)
k, _ = k.NewChildKey(fh + 118)
k, _ = k.NewChildKey(fh + 0)
k, _ = k.NewChildKey(0)
k, _ = k.NewChildKey(0)
k, err := masterKey.NewChildKey(fh + 44)
ifExit(err, 44)
k, err = k.NewChildKey(fh + 118)
ifExit(err, 118)
k, err = k.NewChildKey(fh + 0)
ifExit(err, 1)
k, err = k.NewChildKey(0)
ifExit(err, 2)
k, err = k.NewChildKey(0)
ifExit(err, 3)
priv := k.Key
pub := k.PublicKey().Key