func TestMsgACK(t *testing.T) { t.Log("\nTestAck===========================================================================") ack := wire.NewMsgAcknowledgement(1, 2, nil, wire.END_MINUTE_10) // Sign the ack using server private keys b, _ := ack.GetBinaryForSignature() serverPrivKey, err := common.NewPrivateKeyFromHex("07c0d52cb74f4ca3106d80c4a70488426886bccc6ebc10c6bafb37bf8a65f4c38cee85c62a9e48039d4ac294da97943c2001be1539809ea5f54721f0c5477a0a") plMgr := consensus.NewProcessListMgr(1, 1, 10, serverPrivKey) ack.Signature = *plMgr.SignAck(b).Sig buf := bytes.Buffer{} err = ack.BtcEncode(&buf, 1) if err != nil { t.Errorf("Error:", err) } b1 := buf.Bytes() err = ack.BtcDecode(&buf, 1) buf2 := bytes.Buffer{} err = ack.BtcEncode(&buf2, 1) if err != nil { t.Errorf("Error:", err) } b2 := buf2.Bytes() if bytes.Compare(b1, b2) != 0 { t.Errorf("Invalid output") } }
// Initialize server private key and server public key for milestone 1 func initServerKeys() { if nodeMode == common.SERVER_NODE { var err error serverPrivKey, err = common.NewPrivateKeyFromHex(serverPrivKeyHex) if err != nil { panic("Cannot parse Server Private Key from configuration file: " + err.Error()) } } serverPubKey = common.PubKeyFromString(common.SERVER_PUB_KEY) }
// Initialize server private key and server public key for milestone 1 func initServerKeys() { if nodeMode == common.SERVER_NODE { var err error serverPrivKey, err = common.NewPrivateKeyFromHex(serverPrivKeyHex) if err != nil { panic("Cannot parse Server Private Key from configuration file: " + err.Error()) } //Set server's public key serverPubKey = serverPrivKey.Pub } else { cfg := util.ReadConfig().App serverPubKey = common.PubKeyFromString(cfg.ServerPubKey) } }
// InitRPCClient is used to create rpc client for btcd and btcwallet // and it can be used to test connecting to btcd / btcwallet servers // running in different machine. func InitRPCClient() error { anchorLog.Debug("init RPC client") cfg = util.ReadConfig() certHomePath := cfg.Btc.CertHomePath rpcClientHost := cfg.Btc.RpcClientHost rpcClientEndpoint := cfg.Btc.RpcClientEndpoint rpcClientUser := cfg.Btc.RpcClientUser rpcClientPass := cfg.Btc.RpcClientPass certHomePathBtcd := cfg.Btc.CertHomePathBtcd rpcBtcdHost := cfg.Btc.RpcBtcdHost confirmationsNeeded = cfg.Anchor.ConfirmationsNeeded //Added anchor parameters var err error serverECKey, err = common.NewPrivateKeyFromHex(cfg.Anchor.ServerECKey) if err != nil { panic("Cannot parse Server EC Key from configuration file: " + err.Error()) } anchorChainID, err = common.HexToHash(cfg.Anchor.AnchorChainID) anchorLog.Debug("anchorChainID: ", anchorChainID) if err != nil || anchorChainID == nil { panic("Cannot parse Server AnchorChainID from configuration file: " + err.Error()) } // Connect to local btcwallet RPC server using websockets. ntfnHandlers := createBtcwalletNotificationHandlers() certHomeDir := btcutil.AppDataDir(certHomePath, false) anchorLog.Debug("btcwallet.cert.home=", certHomeDir) certs, err := ioutil.ReadFile(filepath.Join(certHomeDir, "rpc.cert")) if err != nil { return fmt.Errorf("cannot read rpc.cert file: %s\n", err) } connCfg := &btcrpcclient.ConnConfig{ Host: rpcClientHost, Endpoint: rpcClientEndpoint, User: rpcClientUser, Pass: rpcClientPass, Certificates: certs, } wclient, err = btcrpcclient.New(connCfg, &ntfnHandlers) if err != nil { return fmt.Errorf("cannot create rpc client for btcwallet: %s\n", err) } anchorLog.Debug("successfully created rpc client for btcwallet") // Connect to local btcd RPC server using websockets. dntfnHandlers := createBtcdNotificationHandlers() certHomeDir = btcutil.AppDataDir(certHomePathBtcd, false) anchorLog.Debug("btcd.cert.home=", certHomeDir) certs, err = ioutil.ReadFile(filepath.Join(certHomeDir, "rpc.cert")) if err != nil { return fmt.Errorf("cannot read rpc.cert file for btcd rpc server: %s\n", err) } dconnCfg := &btcrpcclient.ConnConfig{ Host: rpcBtcdHost, Endpoint: rpcClientEndpoint, User: rpcClientUser, Pass: rpcClientPass, Certificates: certs, } dclient, err = btcrpcclient.New(dconnCfg, &dntfnHandlers) if err != nil { return fmt.Errorf("cannot create rpc client for btcd: %s\n", err) } anchorLog.Debug("successfully created rpc client for btcd") return nil }