From 9dcb3211441e505f2862cebcaefeaafe1e88e2e1 Mon Sep 17 00:00:00 2001 From: Moein zargarzadeh Date: Wed, 1 Jan 2025 23:01:31 +0330 Subject: [PATCH 1/3] Add /getPK route --- services/tss-api/api/controller.go | 19 +++++++++++ services/tss-api/api/router.go | 1 + services/tss-api/app/interface/interface.go | 1 + services/tss-api/app/rosenTss.go | 37 +++++++++++++++++++++ services/tss-api/app/sign/ecdsa/ecdsa.go | 4 +-- services/tss-api/models/models.go | 6 ++++ services/tss-api/storage/storage.go | 4 +-- 7 files changed, 68 insertions(+), 4 deletions(-) diff --git a/services/tss-api/api/controller.go b/services/tss-api/api/controller.go index 2b49cec..6487d06 100644 --- a/services/tss-api/api/controller.go +++ b/services/tss-api/api/controller.go @@ -17,6 +17,7 @@ type TssController interface { Sign() echo.HandlerFunc Keygen() echo.HandlerFunc Message() echo.HandlerFunc + GetPublicKey() echo.HandlerFunc Validate(interface{}) error } @@ -198,3 +199,21 @@ func (tssController *tssController) Threshold() echo.HandlerFunc { return c.JSON(http.StatusOK, res) } } + +// returns echo handler, get public key of crypto +func (tssController *tssController) GetPublicKey() echo.HandlerFunc { + return func(c echo.Context) (err error) { + data := models.GetPublicKey{} + + if err = c.Bind(&data); err != nil { + return echo.NewHTTPError(http.StatusBadRequest, err.Error()) + } + + pk, err := tssController.rosenTss.GetPublicKey(data) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, err.Error()) + } + res := map[string]string{"publicKey": pk} + return c.JSON(http.StatusOK, res) + } +} diff --git a/services/tss-api/api/router.go b/services/tss-api/api/router.go index 5f4548f..7341f90 100644 --- a/services/tss-api/api/router.go +++ b/services/tss-api/api/router.go @@ -17,6 +17,7 @@ func InitRouting(e *echo.Echo, tssController TssController) { e.Use(middleware.Recover()) e.GET("/threshold", tssController.Threshold()) + e.POST("/getPK", tssController.GetPublicKey()) e.POST("/sign", tssController.Sign()) e.POST("/keygen", tssController.Keygen()) e.POST("/message", tssController.Message()) diff --git a/services/tss-api/app/interface/interface.go b/services/tss-api/app/interface/interface.go index ec0f2e2..36a08f0 100644 --- a/services/tss-api/app/interface/interface.go +++ b/services/tss-api/app/interface/interface.go @@ -42,4 +42,5 @@ type RosenTss interface { GetP2pId() string GetConfig() models.Config GetTrustKey() string + GetPublicKey(models.GetPublicKey) (string, error) } diff --git a/services/tss-api/app/rosenTss.go b/services/tss-api/app/rosenTss.go index 4f40ff7..fa166b4 100644 --- a/services/tss-api/app/rosenTss.go +++ b/services/tss-api/app/rosenTss.go @@ -1,8 +1,10 @@ package app import ( + "encoding/hex" "encoding/json" "fmt" + "github.com/bnb-chain/tss-lib/v2/tss" "os" ecdsaKeygen "rosen-bridge/tss-api/app/keygen/ecdsa" eddsaKeygen "rosen-bridge/tss-api/app/keygen/eddsa" @@ -196,6 +198,41 @@ func (r *rosenTss) StartNewSign(signMessage models.SignMessage) error { return nil } +// GetPublicKey get the compressed public key of crypto +func (r *rosenTss) GetPublicKey(pkData models.GetPublicKey) (string, error) { + switch pkData.Crypto { + case models.EDDSA: + tssConfigEDDSA, _, err := r.GetStorage().LoadEDDSAKeygen(r.GetPeerHome(), r.GetP2pId()) + if err != nil { + logging.Error(err) + return "", err + } + pub := tssConfigEDDSA.KeygenData.EDDSAPub + compressedPublicKey := utils.GetPKFromEDDSAPub(pub.X(), pub.Y()) + encodedPK := hex.EncodeToString(compressedPublicKey) + return encodedPK, nil + case models.ECDSA: + if len(pkData.DerivationPath) == 0 { + return "", fmt.Errorf(models.WrongDerivationPathError) + } + tssConfigECDSA, _, err := r.GetStorage().LoadECDSAKeygen(r.GetPeerHome(), r.GetP2pId()) + if err != nil { + logging.Error(err) + return "", err + } + _, extendedChildPk, err := ecdsaSign.DerivingPubkeyFromPath(tssConfigECDSA.KeygenData.ECDSAPub, []byte(pkData.ChainCode), pkData.DerivationPath, tss.S256()) + if err != nil { + return "", err + } + compressedPublicKey := utils.GetPKFromECDSAPub(extendedChildPk.X, extendedChildPk.Y) + encodedPK := hex.EncodeToString(compressedPublicKey) + + return encodedPK, nil + default: + return "", fmt.Errorf(models.WrongCryptoProtocolError) + } +} + // handles the receiving message from message route func (r *rosenTss) MessageHandler(message models.Message) error { diff --git a/services/tss-api/app/sign/ecdsa/ecdsa.go b/services/tss-api/app/sign/ecdsa/ecdsa.go index 8f312d3..289067f 100644 --- a/services/tss-api/app/sign/ecdsa/ecdsa.go +++ b/services/tss-api/app/sign/ecdsa/ecdsa.go @@ -203,7 +203,7 @@ func (h *handler) StartParty( } } - il, extendedChildPk, err := derivingPubkeyFromPath(h.savedData.ECDSAPub, []byte(signMsg.ChainCode), signMsg.DerivationPath, tss.S256()) + il, extendedChildPk, err := DerivingPubkeyFromPath(h.savedData.ECDSAPub, []byte(signMsg.ChainCode), signMsg.DerivationPath, tss.S256()) if err != nil { return err @@ -271,7 +271,7 @@ func (h *handler) GetData() ([]*big.Int, *big.Int) { // - derive on master pubKey according to bip32 (tss-lib modified version) // - return new keyDerivationDelta and extendedChildPk -func derivingPubkeyFromPath(masterPub *crypto.ECPoint, chainCode []byte, path []uint32, ec elliptic.Curve) (*big.Int, *ckd.ExtendedKey, error) { +func DerivingPubkeyFromPath(masterPub *crypto.ECPoint, chainCode []byte, path []uint32, ec elliptic.Curve) (*big.Int, *ckd.ExtendedKey, error) { // build ecdsa key pair pk := ecdsa.PublicKey{ Curve: ec, diff --git a/services/tss-api/models/models.go b/services/tss-api/models/models.go index b5351cc..1dbbaf5 100644 --- a/services/tss-api/models/models.go +++ b/services/tss-api/models/models.go @@ -44,6 +44,12 @@ type SignMessage struct { DerivationPath []uint32 `json:"derivationPath"` } +type GetPublicKey struct { + Crypto string `json:"crypto" validate:"required"` + ChainCode string `json:"chainCode" validate:"required"` + DerivationPath []uint32 `json:"derivationPath"` +} + type Peer struct { ShareID string `json:"shareID"` P2PID string `json:"p2pID"` diff --git a/services/tss-api/storage/storage.go b/services/tss-api/storage/storage.go index 6003884..3aa297f 100644 --- a/services/tss-api/storage/storage.go +++ b/services/tss-api/storage/storage.go @@ -92,7 +92,7 @@ func (f *storage) LoadEDDSAKeygen(peerHome string, p2pId string) (models.TssConf } } keyFilePath := filepath.Join(filePath, keygenFile) - logging.Infof("key file path: %v", keyFilePath) + logging.Debugf("key file path: %v", keyFilePath) // reading file bz, err := ioutil.ReadFile(keyFilePath) @@ -143,7 +143,7 @@ func (f *storage) LoadECDSAKeygen(peerHome string, p2pId string) (models.TssConf } } keyFilePath := filepath.Join(filePath, keygenFile) - logging.Infof("key file path: %v", keyFilePath) + logging.Debugf("key file path: %v", keyFilePath) // reading file bz, err := ioutil.ReadFile(keyFilePath) From 54dd132f2f33b1dd8b1e781203907a1ceb3d1372 Mon Sep 17 00:00:00 2001 From: Moein zargarzadeh Date: Wed, 1 Jan 2025 23:33:38 +0330 Subject: [PATCH 2/3] apply changeset --- .changeset/serious-wasps-clean.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/serious-wasps-clean.md diff --git a/.changeset/serious-wasps-clean.md b/.changeset/serious-wasps-clean.md new file mode 100644 index 0000000..6610577 --- /dev/null +++ b/.changeset/serious-wasps-clean.md @@ -0,0 +1,5 @@ +--- +'tss-api': minor +--- + +Add /getPK route From 3484619868f0ccae602241daeb1df542fb70dce4 Mon Sep 17 00:00:00 2001 From: Moein zargarzadeh Date: Thu, 2 Jan 2025 00:58:12 +0330 Subject: [PATCH 3/3] improve loading keygen data from file --- services/tss-api/app/rosenTss.go | 8 +- services/tss-api/app/sign/ecdsa/ecdsa.go | 10 +- services/tss-api/app/sign/eddsa/eddsa.go | 10 +- services/tss-api/main.go | 8 +- services/tss-api/models/models.go | 22 +++ services/tss-api/storage/storage.go | 196 +++++++++++++---------- 6 files changed, 147 insertions(+), 107 deletions(-) diff --git a/services/tss-api/app/rosenTss.go b/services/tss-api/app/rosenTss.go index fa166b4..0986a21 100644 --- a/services/tss-api/app/rosenTss.go +++ b/services/tss-api/app/rosenTss.go @@ -202,12 +202,12 @@ func (r *rosenTss) StartNewSign(signMessage models.SignMessage) error { func (r *rosenTss) GetPublicKey(pkData models.GetPublicKey) (string, error) { switch pkData.Crypto { case models.EDDSA: - tssConfigEDDSA, _, err := r.GetStorage().LoadEDDSAKeygen(r.GetPeerHome(), r.GetP2pId()) + eddsaKeygenData, err := r.GetStorage().LoadEDDSAKeygen(r.GetPeerHome(), r.GetP2pId()) if err != nil { logging.Error(err) return "", err } - pub := tssConfigEDDSA.KeygenData.EDDSAPub + pub := eddsaKeygenData.TssConfig.KeygenData.EDDSAPub compressedPublicKey := utils.GetPKFromEDDSAPub(pub.X(), pub.Y()) encodedPK := hex.EncodeToString(compressedPublicKey) return encodedPK, nil @@ -215,12 +215,12 @@ func (r *rosenTss) GetPublicKey(pkData models.GetPublicKey) (string, error) { if len(pkData.DerivationPath) == 0 { return "", fmt.Errorf(models.WrongDerivationPathError) } - tssConfigECDSA, _, err := r.GetStorage().LoadECDSAKeygen(r.GetPeerHome(), r.GetP2pId()) + ecdsaKeygenData, err := r.GetStorage().LoadECDSAKeygen(r.GetPeerHome(), r.GetP2pId()) if err != nil { logging.Error(err) return "", err } - _, extendedChildPk, err := ecdsaSign.DerivingPubkeyFromPath(tssConfigECDSA.KeygenData.ECDSAPub, []byte(pkData.ChainCode), pkData.DerivationPath, tss.S256()) + _, extendedChildPk, err := ecdsaSign.DerivingPubkeyFromPath(ecdsaKeygenData.TssConfig.KeygenData.ECDSAPub, []byte(pkData.ChainCode), pkData.DerivationPath, tss.S256()) if err != nil { return "", err } diff --git a/services/tss-api/app/sign/ecdsa/ecdsa.go b/services/tss-api/app/sign/ecdsa/ecdsa.go index 289067f..82a275d 100644 --- a/services/tss-api/app/sign/ecdsa/ecdsa.go +++ b/services/tss-api/app/sign/ecdsa/ecdsa.go @@ -245,18 +245,18 @@ func (h *handler) StartParty( func (h *handler) LoadData(rosenTss _interface.RosenTss) (*tss.PartyID, error) { _, err1 := rosenTss.GetMetaData(models.ECDSA) if h.savedData.ShareID == nil || (err1 != nil && err1.Error() == models.ECDSANoMetaDataFoundError) { - data, pID, err := rosenTss.GetStorage().LoadECDSAKeygen(rosenTss.GetPeerHome(), rosenTss.GetP2pId()) + data, err := rosenTss.GetStorage().LoadECDSAKeygen(rosenTss.GetPeerHome(), rosenTss.GetP2pId()) if err != nil { logging.Error(err) return nil, err } - if pID == nil { + if data.PartyID == nil { logging.Error("pID is nil") return nil, fmt.Errorf("pID is nil") } - h.savedData = data.KeygenData - h.pID = pID - err = rosenTss.SetMetaData(data.MetaData, models.ECDSA) + h.savedData = data.TssConfig.KeygenData + h.pID = data.PartyID + err = rosenTss.SetMetaData(data.TssConfig.MetaData, models.ECDSA) if err != nil { return nil, err } diff --git a/services/tss-api/app/sign/eddsa/eddsa.go b/services/tss-api/app/sign/eddsa/eddsa.go index fb1a160..f4af48c 100644 --- a/services/tss-api/app/sign/eddsa/eddsa.go +++ b/services/tss-api/app/sign/eddsa/eddsa.go @@ -215,18 +215,18 @@ func (h *handler) StartParty( func (h *handler) LoadData(rosenTss _interface.RosenTss) (*tss.PartyID, error) { _, err1 := rosenTss.GetMetaData(models.EDDSA) if h.savedData.ShareID == nil || (err1 != nil && err1.Error() == models.EDDSANoMetaDataFoundError) { - data, pID, err := rosenTss.GetStorage().LoadEDDSAKeygen(rosenTss.GetPeerHome(), rosenTss.GetP2pId()) + data, err := rosenTss.GetStorage().LoadEDDSAKeygen(rosenTss.GetPeerHome(), rosenTss.GetP2pId()) if err != nil { logging.Error(err) return nil, err } - if pID == nil { + if data.PartyID == nil { logging.Error("pID is nil") return nil, fmt.Errorf("pID is nil") } - h.savedData = data.KeygenData - h.pID = pID - err = rosenTss.SetMetaData(data.MetaData, models.EDDSA) + h.savedData = data.TssConfig.KeygenData + h.pID = data.PartyID + err = rosenTss.SetMetaData(data.TssConfig.MetaData, models.EDDSA) if err != nil { return nil, err } diff --git a/services/tss-api/main.go b/services/tss-api/main.go index c47b63f..aa96935 100644 --- a/services/tss-api/main.go +++ b/services/tss-api/main.go @@ -99,23 +99,23 @@ func main() { } // setting up meta data if exist for eddsa - eddsaMetaData, _, err := tss.GetStorage().LoadEDDSAKeygen(tss.GetPeerHome(), tss.GetP2pId()) + eddsaKeygenData, err := tss.GetStorage().LoadEDDSAKeygen(tss.GetPeerHome(), tss.GetP2pId()) if err != nil { logging.Warn(err) } - err = tss.SetMetaData(eddsaMetaData.MetaData, models.EDDSA) + err = tss.SetMetaData(eddsaKeygenData.TssConfig.MetaData, models.EDDSA) if err != nil { logging.Warn(models.EDDSANoMetaDataFoundError) } // setting up meta data if exist for ecdsa - ecdsaMetaData, _, err := tss.GetStorage().LoadECDSAKeygen(tss.GetPeerHome(), tss.GetP2pId()) + ecdsaKeygenData, err := tss.GetStorage().LoadECDSAKeygen(tss.GetPeerHome(), tss.GetP2pId()) if err != nil { logging.Warn(err) } - err = tss.SetMetaData(ecdsaMetaData.MetaData, models.ECDSA) + err = tss.SetMetaData(ecdsaKeygenData.TssConfig.MetaData, models.ECDSA) if err != nil { logging.Warn(models.ECDSANoMetaDataFoundError) } diff --git a/services/tss-api/models/models.go b/services/tss-api/models/models.go index 1dbbaf5..0f46a79 100644 --- a/services/tss-api/models/models.go +++ b/services/tss-api/models/models.go @@ -98,11 +98,33 @@ type TssConfigEDDSA struct { KeygenData eddsaKeygen.LocalPartySaveData `json:"keygenData"` } +type EDDSAKeygenData struct { + TssConfig TssConfigEDDSA + PartyID *tss.PartyID +} + +func (d EDDSAKeygenData) IsEmpty() bool { + return d.TssConfig.MetaData.PeersCount == 0 && + d.TssConfig.MetaData.Threshold == 0 && + d.PartyID == nil +} + type TssConfigECDSA struct { MetaData MetaData `json:"metaData"` KeygenData ecdsaKeygen.LocalPartySaveData `json:"keygenData"` } +type ECDSAKeygenData struct { + TssConfig TssConfigECDSA + PartyID *tss.PartyID +} + +func (d ECDSAKeygenData) IsEmpty() bool { + return d.TssConfig.MetaData.PeersCount == 0 && + d.TssConfig.MetaData.Threshold == 0 && + d.PartyID == nil +} + type TssData struct { PartyID *tss.PartyID Params *tss.Parameters diff --git a/services/tss-api/storage/storage.go b/services/tss-api/storage/storage.go index 3aa297f..df2e3ed 100644 --- a/services/tss-api/storage/storage.go +++ b/services/tss-api/storage/storage.go @@ -18,11 +18,14 @@ import ( type Storage interface { makefilePath(peerHome string, protocol string) string WriteData(data interface{}, peerHome string, fileFormat string, protocol string) error - LoadEDDSAKeygen(peerHome string, p2pId string) (models.TssConfigEDDSA, *tss.PartyID, error) - LoadECDSAKeygen(peerHome string, p2pId string) (models.TssConfigECDSA, *tss.PartyID, error) + LoadEDDSAKeygen(peerHome string, p2pId string) (models.EDDSAKeygenData, error) + LoadECDSAKeygen(peerHome string, p2pId string) (models.ECDSAKeygenData, error) } -type storage struct{} +type storage struct { + ecdsaKeygenData models.ECDSAKeygenData + eddsaKeygenData models.EDDSAKeygenData +} var logging *zap.SugaredLogger @@ -75,103 +78,118 @@ func (f *storage) WriteData(data interface{}, peerHome string, fileFormat string } // Loads the EDDSA keygen data from the file -func (f *storage) LoadEDDSAKeygen(peerHome string, p2pId string) (models.TssConfigEDDSA, *tss.PartyID, error) { - // locating file - var keygenFile string - - filePath := f.makefilePath(peerHome, models.EDDSA) - files, err := ioutil.ReadDir(filePath) - if err != nil || len(files) == 0 { - logging.Warnf("couldn't find eddsa keygen %v", err) - return models.TssConfigEDDSA{}, nil, errors.New(models.EDDSANoKeygenDataFoundError) - } +func (f *storage) LoadEDDSAKeygen(peerHome string, p2pId string) (models.EDDSAKeygenData, error) { + if !f.eddsaKeygenData.IsEmpty() { + return f.eddsaKeygenData, nil + } else { + // locating file + var keygenFile string + + filePath := f.makefilePath(peerHome, models.EDDSA) + files, err := ioutil.ReadDir(filePath) + if err != nil || len(files) == 0 { + logging.Warnf("couldn't find eddsa keygen %v", err) + return models.EDDSAKeygenData{}, errors.New(models.EDDSANoKeygenDataFoundError) + } - for _, File := range files { - if strings.Contains(File.Name(), "keygen") { - keygenFile = File.Name() + for _, File := range files { + if strings.Contains(File.Name(), "keygen") { + keygenFile = File.Name() + } } - } - keyFilePath := filepath.Join(filePath, keygenFile) - logging.Debugf("key file path: %v", keyFilePath) + keyFilePath := filepath.Join(filePath, keygenFile) + logging.Debugf("key file path: %v", keyFilePath) - // reading file - bz, err := ioutil.ReadFile(keyFilePath) - if err != nil { - return models.TssConfigEDDSA{}, nil, errors.Wrapf( - err, - "could not open the file for party in the expected location: %s. run keygen first.", keyFilePath, - ) - } - var tssConfig models.TssConfigEDDSA - if err = json.Unmarshal(bz, &tssConfig); err != nil { - return models.TssConfigEDDSA{}, nil, errors.Wrapf( - err, - "could not unmarshal data for party located at: %s", keyFilePath, - ) - } + // reading file + bz, err := ioutil.ReadFile(keyFilePath) + if err != nil { + return models.EDDSAKeygenData{}, errors.Wrapf( + err, + "could not open the file for party in the expected location: %s. run keygen first.", keyFilePath, + ) + } + var tssConfig models.TssConfigEDDSA + if err = json.Unmarshal(bz, &tssConfig); err != nil { + return models.EDDSAKeygenData{}, errors.Wrapf( + err, + "could not unmarshal data for party located at: %s", keyFilePath, + ) + } - //creating data from file - for _, kbxj := range tssConfig.KeygenData.BigXj { - kbxj.SetCurve(tss.Edwards()) + //creating data from file + for _, kbxj := range tssConfig.KeygenData.BigXj { + kbxj.SetCurve(tss.Edwards()) + } + tssConfig.KeygenData.EDDSAPub.SetCurve(tss.Edwards()) + id := p2pId + pMoniker := fmt.Sprintf("tssPeer/%s", p2pId) + partyID := tss.NewPartyID(id, pMoniker, tssConfig.KeygenData.ShareID) + + var parties tss.UnSortedPartyIDs + parties = append(parties, partyID) + sortedPIDs := tss.SortPartyIDs(parties) + f.eddsaKeygenData = models.EDDSAKeygenData{ + TssConfig: tssConfig, PartyID: sortedPIDs[0], + } + return f.eddsaKeygenData, nil } - tssConfig.KeygenData.EDDSAPub.SetCurve(tss.Edwards()) - id := p2pId - pMoniker := fmt.Sprintf("tssPeer/%s", p2pId) - partyID := tss.NewPartyID(id, pMoniker, tssConfig.KeygenData.ShareID) - - var parties tss.UnSortedPartyIDs - parties = append(parties, partyID) - sortedPIDs := tss.SortPartyIDs(parties) - return tssConfig, sortedPIDs[0], nil } // Loads the ECDSA keygen data from the file -func (f *storage) LoadECDSAKeygen(peerHome string, p2pId string) (models.TssConfigECDSA, *tss.PartyID, error) { - // locating file - var keygenFile string - - filePath := f.makefilePath(peerHome, models.ECDSA) - files, err := ioutil.ReadDir(filePath) - if err != nil || len(files) == 0 { - logging.Warnf("couldn't find ecdsa keygen %v", err) - return models.TssConfigECDSA{}, nil, errors.New(models.ECDSANoKeygenDataFoundError) - } +func (f *storage) LoadECDSAKeygen(peerHome string, p2pId string) (models.ECDSAKeygenData, error) { + + if !f.ecdsaKeygenData.IsEmpty() { + return f.ecdsaKeygenData, nil + } else { + // locating file + var keygenFile string + + filePath := f.makefilePath(peerHome, models.ECDSA) + files, err := ioutil.ReadDir(filePath) + if err != nil || len(files) == 0 { + logging.Warnf("couldn't find ecdsa keygen %v", err) + return models.ECDSAKeygenData{}, errors.New(models.ECDSANoKeygenDataFoundError) + } - for _, File := range files { - if strings.Contains(File.Name(), "keygen") { - keygenFile = File.Name() + for _, File := range files { + if strings.Contains(File.Name(), "keygen") { + keygenFile = File.Name() + } } - } - keyFilePath := filepath.Join(filePath, keygenFile) - logging.Debugf("key file path: %v", keyFilePath) + keyFilePath := filepath.Join(filePath, keygenFile) + logging.Debugf("key file path: %v", keyFilePath) - // reading file - bz, err := ioutil.ReadFile(keyFilePath) - if err != nil { - return models.TssConfigECDSA{}, nil, errors.Wrapf( - err, - "could not open the file for party in the expected location: %s. run keygen first.", keyFilePath, - ) - } - var tssConfig models.TssConfigECDSA - if err = json.Unmarshal(bz, &tssConfig); err != nil { - return models.TssConfigECDSA{}, nil, errors.Wrapf( - err, - "could not unmarshal data for party located at: %s", keyFilePath, - ) - } + // reading file + bz, err := ioutil.ReadFile(keyFilePath) + if err != nil { + return models.ECDSAKeygenData{}, errors.Wrapf( + err, + "could not open the file for party in the expected location: %s. run keygen first.", keyFilePath, + ) + } + var tssConfig models.TssConfigECDSA + if err = json.Unmarshal(bz, &tssConfig); err != nil { + return models.ECDSAKeygenData{}, errors.Wrapf( + err, + "could not unmarshal data for party located at: %s", keyFilePath, + ) + } - //creating data from file - for _, kbxj := range tssConfig.KeygenData.BigXj { - kbxj.SetCurve(tss.S256()) + //creating data from file + for _, kbxj := range tssConfig.KeygenData.BigXj { + kbxj.SetCurve(tss.S256()) + } + tssConfig.KeygenData.ECDSAPub.SetCurve(tss.S256()) + id := p2pId + pMoniker := fmt.Sprintf("tssPeer/%s", p2pId) + partyID := tss.NewPartyID(id, pMoniker, tssConfig.KeygenData.ShareID) + + var parties tss.UnSortedPartyIDs + parties = append(parties, partyID) + sortedPIDs := tss.SortPartyIDs(parties) + f.ecdsaKeygenData = models.ECDSAKeygenData{ + TssConfig: tssConfig, PartyID: sortedPIDs[0], + } + return f.ecdsaKeygenData, nil } - tssConfig.KeygenData.ECDSAPub.SetCurve(tss.S256()) - id := p2pId - pMoniker := fmt.Sprintf("tssPeer/%s", p2pId) - partyID := tss.NewPartyID(id, pMoniker, tssConfig.KeygenData.ShareID) - - var parties tss.UnSortedPartyIDs - parties = append(parties, partyID) - sortedPIDs := tss.SortPartyIDs(parties) - return tssConfig, sortedPIDs[0], nil }