code: func NewMasterKey(seed []byte) (*Key, error) {
  	// Generate key and chaincode
  	hmac := hmac.New(sha512.New, []byte("Bitcoin seed"))
  	_, err := hmac.Write(seed)
  	if err != nil {
  		return nil, err
  	}
  	intermediary := hmac.Sum(nil)
  
  	// Split it into our key and chain code
  	keyBytes := intermediary[:32]
  	chainCode := intermediary[32:]
  
  	// Validate key
  	err = validatePrivateKey(keyBytes)
  	if err != nil {
  		return nil, err
  	}
  
  	// Create the key struct
  	key := &Key{
  		Version:     PrivateWalletVersion,
  		ChainCode:   chainCode,
  		Key:         keyBytes,
  		Depth:       0x0,
  		ChildNumber: []byte{0x00, 0x00, 0x00, 0x00},
  		FingerPrint: []byte{0x00, 0x00, 0x00, 0x00},
  		IsPrivate:   true,
  	}
  
  	return key, nil
  }
docs: // NewMasterKey creates a new master extended key from a seed