Skip to content
Snippets Groups Projects

Bee/upgrade

Files

+ 19
17
@@ -8,6 +8,7 @@
@@ -8,6 +8,7 @@
package client
package client
import (
import (
 
"crypto"
"crypto/tls"
"crypto/tls"
"encoding/base64"
"encoding/base64"
"git.xx.network/elixxir/mainnet-commitments/messages"
"git.xx.network/elixxir/mainnet-commitments/messages"
@@ -19,8 +20,8 @@ import (
@@ -19,8 +20,8 @@ import (
utils2 "gitlab.com/xx_network/primitives/utils"
utils2 "gitlab.com/xx_network/primitives/utils"
)
)
func SignAndTransmit(keyPath, idfPath, contractPath, wallet, serverAddress, serverCertPath string) error {
func SignAndTransmit(keyPath, idfPath, nominatorWallet, validatorWallet, serverAddress, serverCert, contract string) error {
var key, idfBytes, contractBytes []byte
var key, idfBytes []byte
var err error
var err error
var ep string
var ep string
@@ -44,23 +45,20 @@ func SignAndTransmit(keyPath, idfPath, contractPath, wallet, serverAddress, serv
@@ -44,23 +45,20 @@ func SignAndTransmit(keyPath, idfPath, contractPath, wallet, serverAddress, serv
return err
return err
}
}
if ep, err = utils2.ExpandPath(contractPath); err == nil {
h := crypto.BLAKE2b_512.New()
contractBytes, err = utils2.ReadFile(ep)
_, err = h.Write([]byte(contract))
if err != nil {
if err != nil {
return err
return errors.WithMessage(err, "Failed to write contract to hash")
}
} else {
return err
}
}
return signAndTransmit(key, idfBytes, contractBytes, wallet, serverAddress, serverCertPath)
return signAndTransmit(key, idfBytes, h.Sum(nil), nominatorWallet, validatorWallet, serverAddress, serverCert)
}
}
// SignAndTransmit creates a Client object & transmits commitment info to the server
// SignAndTransmit creates a Client object & transmits commitment info to the server
func signAndTransmit(pk, idfBytes, contractBytes []byte, wallet, serverAddress, serverCertPath string) error {
func signAndTransmit(pk, idfBytes, contractBytes []byte, nominatorWallet, validatorWallet, serverAddress, serverCert string) error {
// Create new resty client
// Create new resty client
cl := resty.New()
cl := resty.New()
cl.SetRootCertificate(serverCertPath) // Set commitments root certificate
cl.SetRootCertificateFromString(serverCert)
cl.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
cl.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
// Hash & sign node info
// Hash & sign node info
@@ -68,7 +66,7 @@ func signAndTransmit(pk, idfBytes, contractBytes []byte, wallet, serverAddress,
@@ -68,7 +66,7 @@ func signAndTransmit(pk, idfBytes, contractBytes []byte, wallet, serverAddress,
if err != nil {
if err != nil {
return errors.WithMessage(err, "Failed to load private key")
return errors.WithMessage(err, "Failed to load private key")
}
}
hashed, hash, err := utils.HashNodeInfo(wallet, idfBytes, contractBytes)
hashed, hash, err := utils.HashNodeInfo(nominatorWallet, validatorWallet, idfBytes, contractBytes)
if err != nil {
if err != nil {
return errors.WithMessage(err, "Failed to hash node info")
return errors.WithMessage(err, "Failed to hash node info")
}
}
@@ -79,10 +77,11 @@ func signAndTransmit(pk, idfBytes, contractBytes []byte, wallet, serverAddress,
@@ -79,10 +77,11 @@ func signAndTransmit(pk, idfBytes, contractBytes []byte, wallet, serverAddress,
// Build message body & post to server
// Build message body & post to server
body := messages.Commitment{
body := messages.Commitment{
IDF: base64.URLEncoding.EncodeToString(idfBytes),
IDF: base64.URLEncoding.EncodeToString(idfBytes),
Contract: base64.URLEncoding.EncodeToString(contractBytes),
Contract: base64.URLEncoding.EncodeToString(contractBytes),
Wallet: wallet,
NominatorWallet: nominatorWallet,
Signature: base64.URLEncoding.EncodeToString(sig),
ValidatorWallet: validatorWallet,
 
Signature: base64.URLEncoding.EncodeToString(sig),
}
}
resp, err := cl.R().
resp, err := cl.R().
SetHeader("Content-Type", "application/json").
SetHeader("Content-Type", "application/json").
@@ -92,6 +91,9 @@ func signAndTransmit(pk, idfBytes, contractBytes []byte, wallet, serverAddress,
@@ -92,6 +91,9 @@ func signAndTransmit(pk, idfBytes, contractBytes []byte, wallet, serverAddress,
if err != nil {
if err != nil {
return errors.WithMessagef(err, "Failed to register commitment, received response: %+v", resp)
return errors.WithMessagef(err, "Failed to register commitment, received response: %+v", resp)
 
} else if resp.IsError() {
 
return errors.Errorf("Failed to register commitment, received response: %+v", resp)
}
}
 
return nil
return nil
}
}
Loading