diff --git a/go.mod b/go.mod index 4f5af7b..fb45e42 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( filippo.io/age v1.2.1 github.com/avast/retry-go v3.0.0+incompatible github.com/bnb-chain/tss-lib/v2 v2.0.2 - github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/decred/dcrd/dcrec/edwards/v2 v2.0.3 github.com/dgraph-io/badger/v4 v4.2.0 github.com/google/uuid v1.6.0 @@ -27,8 +26,9 @@ require ( require ( github.com/agl/ed25519 v0.0.0-20200225211852-fd4d107ace12 // indirect github.com/armon/go-metrics v0.4.1 // indirect - github.com/btcsuite/btcd v0.23.4 // indirect - github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect + github.com/btcsuite/btcd v0.24.2 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/btcsuite/btcutil v1.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect diff --git a/go.sum b/go.sum index 38d7e8c..3c448e3 100644 --- a/go.sum +++ b/go.sum @@ -30,8 +30,9 @@ github.com/bnb-chain/tss-lib/v2 v2.0.2 h1:dL2GJFCSYsYQ0bHkGll+hNM2JWsC1rxDmJJJQE github.com/bnb-chain/tss-lib/v2 v2.0.2/go.mod h1:s4LRfEqj89DhfNb+oraW0dURt5LtOHWXb9Gtkghn0L8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= -github.com/btcsuite/btcd v0.23.4 h1:IzV6qqkfwbItOS/sg/aDfPDsjPP8twrCOE2R93hxMlQ= github.com/btcsuite/btcd v0.23.4/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= +github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= @@ -39,8 +40,9 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= diff --git a/pkg/encoding/ecdsa.go b/pkg/encoding/ecdsa.go index e5d8aac..d7bdf38 100644 --- a/pkg/encoding/ecdsa.go +++ b/pkg/encoding/ecdsa.go @@ -2,20 +2,9 @@ package encoding import ( "crypto/ecdsa" - "math/big" - - "github.com/btcsuite/btcd/btcec/v2" ) func EncodeS256PubKey(pubKey *ecdsa.PublicKey) ([]byte, error) { publicKeyBytes := append(pubKey.X.Bytes(), pubKey.Y.Bytes()...) return publicKeyBytes, nil } - -func DecodeECDSAPubKey(encodedKey []byte) (*ecdsa.PublicKey, error) { - xBytes := encodedKey[:32] // 32 bytes for X coordinate - yBytes := encodedKey[32:] // 32 bytes for Y coordinate - x := new(big.Int).SetBytes(xBytes) - y := new(big.Int).SetBytes(yBytes) - return &ecdsa.PublicKey{Curve: btcec.S256(), X: x, Y: y}, nil -} diff --git a/pkg/encoding/ecdsa_test.go b/pkg/encoding/ecdsa_test.go deleted file mode 100644 index c1d647b..0000000 --- a/pkg/encoding/ecdsa_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package encoding - -import ( - "log" - "testing" - - "github.com/btcsuite/btcd/btcec/v2" - "github.com/stretchr/testify/assert" -) - -func TestEncodeDecodeKey(t *testing.T) { - // generate public key with ecdsa - privateKey, err := btcec.NewPrivateKey() - if err != nil { - log.Fatal("Error generating private key:", err) - } - - // Extract the public key from the private key - publicKey := privateKey.PubKey() - - encodedKey, err := EncodeS256PubKey(publicKey.ToECDSA()) - assert.NoError(t, err) - assert.NotNil(t, encodedKey) - - decodedPubKey, err := DecodeECDSAPubKey(encodedKey) - assert.NoError(t, err) - assert.Equal(t, publicKey.X(), decodedPubKey.X) - assert.Equal(t, publicKey.Y(), decodedPubKey.Y) -} diff --git a/pkg/mpc/ecdsa_keygen_session.go b/pkg/mpc/ecdsa_keygen_session.go index 2f751cc..98dee70 100644 --- a/pkg/mpc/ecdsa_keygen_session.go +++ b/pkg/mpc/ecdsa_keygen_session.go @@ -140,27 +140,6 @@ func (s *KeygenSession) GenerateKey(done func()) { } s.pubkeyBytes = pubKeyBytes done() - // successEvent := KeygenSuccessEvent{ - // WalletID: s.walletID, - // PubKey: pubKeyBytes, - // } - - // successEventBytes, err := json.Marshal(successEvent) - // if err != nil { - // s.ErrCh <- fmt.Errorf("failed to marshal success event: %w", err) - // return - // } - - // err = s.successQueue.Enqueue(fmt.Sprintf(TypeGenerateWalletSuccess, s.walletID), successEventBytes, &messaging.EnqueueOptions{ - // IdempotententKey: fmt.Sprintf(TypeGenerateWalletSuccess, s.walletID), - // }) - // if err != nil { - // logger.Error("Failed to publish key generation success message", err) - // s.ErrCh <- fmt.Errorf("Failed to publish key generation success message %w", err) - // return - // } - - // logger.Info("[COMPLETED KEY GEN] Key generation completed successfully", "walletID", s.walletID) err = s.Close() if err != nil { logger.Error("Failed to close session", err) diff --git a/pkg/mpc/eddsa_keygen_session.go b/pkg/mpc/eddsa_keygen_session.go index e36e3cc..7a1b325 100644 --- a/pkg/mpc/eddsa_keygen_session.go +++ b/pkg/mpc/eddsa_keygen_session.go @@ -6,12 +6,12 @@ import ( "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" "github.com/bnb-chain/tss-lib/v2/tss" + "github.com/decred/dcrd/dcrec/edwards/v2" "github.com/fystack/mpcium/pkg/identity" "github.com/fystack/mpcium/pkg/keyinfo" "github.com/fystack/mpcium/pkg/kvstore" "github.com/fystack/mpcium/pkg/logger" "github.com/fystack/mpcium/pkg/messaging" - "github.com/decred/dcrd/dcrec/edwards/v2" ) type EDDSAKeygenSession struct { @@ -132,65 +132,6 @@ func (s *EDDSAKeygenSession) GenerateKey(done func()) { } done() return - - // solanaAddress := base58.Encode(pubKeyBytes) - - // logger.Info("solana address", "address", solanaAddress) - - // bytes, err := encoding.EncodeEDDSAPubKey(&pk) - // if err != nil { - // s.ErrCh <- err - // } - - // k, err := encoding.DecodeEDDSAPubKey(bytes) - // if err != nil { - // s.ErrCh <- err - // } - - // x := k.X - // y := k.Y - - // logger.Info("comparing", "x", x.Cmp(pk.X)) - // logger.Info("comparing", "y", y.Cmp(pk.Y)) - - // logger.Info("solana address", "address", solanaAddress) - - // pubKey := &ecdsa.PublicKey{ - // Curve: publicKey.Curve(), - // X: publicKey.X(), - // Y: publicKey.Y(), - // } - - // pubKeyBytes, err := encoding.EncodeS256PubKey(pubKey) - // if err != nil { - // logger.Error("failed to encode public key", err) - // s.ErrCh <- fmt.Errorf("failed to encode public key: %w", err) - // return - // } - - // successEvent := KeygenSuccessEvent{ - // WalletID: s.walletID, - // PubKey: pubKeyBytes, - // } - - // successEventBytes, err := json.Marshal(successEvent) - // if err != nil { - // s.ErrCh <- fmt.Errorf("failed to marshal success event: %w", err) - // return - // } - - // err = s.successQueue.Enqueue(fmt.Sprintf(TypeGenerateWalletSuccess, s.walletID), successEventBytes, &messaging.EnqueueOptions{ - // IdempotententKey: fmt.Sprintf(TypeGenerateWalletSuccess, s.walletID), - // }) - // if err != nil { - // logger.Error("Failed to publish key generation success message", err) - // s.ErrCh <- fmt.Errorf("Failed to publish key generation success message %w", err) - // return - // } - - // logger.Info("[COMPLETED KEY GEN] Key generation completed successfully", "walletID", s.walletID) - // done() - // return } } }