Skip to content

Commit cd141b1

Browse files
committed
Implement signer interface with local and kms signers
1 parent c8aaaab commit cd141b1

16 files changed

Lines changed: 1341 additions & 191 deletions

File tree

e2e/base_test.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/fystack/mpcium/pkg/client"
1919
"github.com/fystack/mpcium/pkg/event"
2020
"github.com/fystack/mpcium/pkg/kvstore"
21+
"github.com/fystack/mpcium/pkg/types"
2122
"github.com/hashicorp/consul/api"
2223
"github.com/nats-io/nats.go"
2324
"github.com/stretchr/testify/require"
@@ -184,9 +185,17 @@ func (s *E2ETestSuite) SetupMPCClient(t *testing.T) {
184185
t.Fatalf("Key file does not exist: %s. Make sure setupTestNodes ran successfully.", keyPath)
185186
}
186187

188+
// Create local signer for Ed25519 (default for E2E tests)
189+
localSigner, err := client.NewLocalSigner(types.EventInitiatorKeyTypeEd25519, client.LocalSignerOptions{
190+
KeyPath: keyPath,
191+
})
192+
if err != nil {
193+
t.Fatalf("Failed to create local signer: %v", err)
194+
}
195+
187196
mpcClient := client.NewMPCClient(client.Options{
188197
NatsConn: s.natsConn,
189-
KeyPath: keyPath,
198+
Signer: localSigner,
190199
})
191200
s.mpcClient = mpcClient
192201
t.Log("MPC client created")

e2e/go.mod

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,20 @@ require (
1717
github.com/agl/ed25519 v0.0.0-20200225211852-fd4d107ace12 // indirect
1818
github.com/armon/go-metrics v0.4.1 // indirect
1919
github.com/avast/retry-go v3.0.0+incompatible // indirect
20+
github.com/aws/aws-sdk-go-v2 v1.38.2 // indirect
21+
github.com/aws/aws-sdk-go-v2/config v1.31.4 // indirect
22+
github.com/aws/aws-sdk-go-v2/credentials v1.18.8 // indirect
23+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.5 // indirect
24+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.5 // indirect
25+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.5 // indirect
26+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
27+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect
28+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.5 // indirect
29+
github.com/aws/aws-sdk-go-v2/service/kms v1.45.0 // indirect
30+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.3 // indirect
31+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.1 // indirect
32+
github.com/aws/aws-sdk-go-v2/service/sts v1.38.1 // indirect
33+
github.com/aws/smithy-go v1.23.0 // indirect
2034
github.com/bnb-chain/tss-lib/v2 v2.0.2 // indirect
2135
github.com/btcsuite/btcd v0.24.2 // indirect
2236
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect

e2e/go.sum

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,34 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj
1717
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
1818
github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0=
1919
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
20+
github.com/aws/aws-sdk-go-v2 v1.38.2 h1:QUkLO1aTW0yqW95pVzZS0LGFanL71hJ0a49w4TJLMyM=
21+
github.com/aws/aws-sdk-go-v2 v1.38.2/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY=
22+
github.com/aws/aws-sdk-go-v2/config v1.31.4 h1:aY2IstXOfjdLtr1lDvxFBk5DpBnHgS5GS3jgR/0BmPw=
23+
github.com/aws/aws-sdk-go-v2/config v1.31.4/go.mod h1:1IAykiegrTp6n+CbZoCpW6kks1I74fEDgl2BPQSkLSU=
24+
github.com/aws/aws-sdk-go-v2/credentials v1.18.8 h1:0FfdP0I9gs/f1rwtEdkcEdsclTEkPB8o6zWUG2Z8+IM=
25+
github.com/aws/aws-sdk-go-v2/credentials v1.18.8/go.mod h1:9UReQ1UmGooX93JKzHyr7PRF3F+p3r+PmRwR7+qHJYA=
26+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.5 h1:ul7hICbZ5Z/Pp9VnLVGUVe7rqYLXCyIiPU7hQ0sRkow=
27+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.5/go.mod h1:5cIWJ0N6Gjj+72Q6l46DeaNtcxXHV42w/Uq3fIfeUl4=
28+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.5 h1:d45S2DqHZOkHu0uLUW92VdBoT5v0hh3EyR+DzMEh3ag=
29+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.5/go.mod h1:G6e/dR2c2huh6JmIo9SXysjuLuDDGWMeYGibfW2ZrXg=
30+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.5 h1:ENhnQOV3SxWHplOqNN1f+uuCNf9n4Y/PKpl6b1WRP0Q=
31+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.5/go.mod h1:csQLMI+odbC0/J+UecSTztG70Dc4aTCOu4GyPNDNpVo=
32+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
33+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
34+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM=
35+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8=
36+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.5 h1:Cx1M/UUgYu9UCQnIMKaOhkVaFvLy1HneD6T4sS/DlKg=
37+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.5/go.mod h1:fTRNLgrTvPpEzGqc9QkeO4hu/3ng+mdtUbL8shUwXz4=
38+
github.com/aws/aws-sdk-go-v2/service/kms v1.45.0 h1:WYQcp4o0/X+Xd50dSFluzKk3Lee2mP+tP39uMI60s1M=
39+
github.com/aws/aws-sdk-go-v2/service/kms v1.45.0/go.mod h1:le5DfWrncVIxOWL2Q0NnDqvhH8ULiGYgC9iS8BtwcZE=
40+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.3 h1:z6lajFT/qGlLRB/I8V5CCklqSuWZKUkdwRAn9leIkiQ=
41+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.3/go.mod h1:BnyjuIX0l+KXJVl2o9Ki3Zf0M4pA2hQYopFCRUj9ADU=
42+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.1 h1:8yI3jK5JZ310S8RpgdZdzwvlvBu3QbG8DP7Be/xJ6yo=
43+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.1/go.mod h1:HPzXfFgrLd02lYpcFYdDz5xZs94LOb+lWlvbAGaeMsk=
44+
github.com/aws/aws-sdk-go-v2/service/sts v1.38.1 h1:3kWmIg5iiWPMBJyq/I55Fki5fyfoMtrn/SkUIpxPwHQ=
45+
github.com/aws/aws-sdk-go-v2/service/sts v1.38.1/go.mod h1:yi0b3Qez6YamRVJ+Rbi19IgvjfjPODgVRhkWA6RTMUM=
46+
github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE=
47+
github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
2048
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
2149
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
2250
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=

examples/generate/main.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,16 @@ func main() {
6262
defer natsConn.Drain()
6363
defer natsConn.Close()
6464

65+
localSigner, err := client.NewLocalSigner(types.EventInitiatorKeyType(algorithm), client.LocalSignerOptions{
66+
KeyPath: "./event_initiator.key",
67+
})
68+
if err != nil {
69+
logger.Fatal("Failed to create local signer", err)
70+
}
71+
6572
mpcClient := client.NewMPCClient(client.Options{
66-
Algorithm: types.EventInitiatorKeyType(algorithm),
67-
NatsConn: natsConn,
68-
KeyPath: "./event_initiator.key",
73+
NatsConn: natsConn,
74+
Signer: localSigner,
6975
})
7076

7177
var walletStartTimes sync.Map

examples/reshare/main.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,16 @@ func main() {
5353
defer natsConn.Drain()
5454
defer natsConn.Close()
5555

56+
localSigner, err := client.NewLocalSigner(types.EventInitiatorKeyType(algorithm), client.LocalSignerOptions{
57+
KeyPath: "./event_initiator.key",
58+
})
59+
if err != nil {
60+
logger.Fatal("Failed to create local signer", err)
61+
}
62+
5663
mpcClient := client.NewMPCClient(client.Options{
57-
Algorithm: types.EventInitiatorKeyType(algorithm),
58-
NatsConn: natsConn,
59-
KeyPath: "./event_initiator.key",
64+
NatsConn: natsConn,
65+
Signer: localSigner,
6066
})
6167

6268
// 3) Listen for signing results

examples/sign/main.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,16 @@ func main() {
5353
defer natsConn.Drain()
5454
defer natsConn.Close()
5555

56+
localSigner, err := client.NewLocalSigner(types.EventInitiatorKeyType(algorithm), client.LocalSignerOptions{
57+
KeyPath: "./event_initiator.key",
58+
})
59+
if err != nil {
60+
logger.Fatal("Failed to create local signer", err)
61+
}
62+
5663
mpcClient := client.NewMPCClient(client.Options{
57-
Algorithm: types.EventInitiatorKeyType(algorithm),
58-
NatsConn: natsConn,
59-
KeyPath: "./event_initiator.key",
64+
NatsConn: natsConn,
65+
Signer: localSigner,
6066
})
6167

6268
// 2) Once wallet exists, immediately fire a SignTransaction

go.mod

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ toolchain go1.23.5
77
require (
88
filippo.io/age v1.2.1
99
github.com/avast/retry-go v3.0.0+incompatible
10+
github.com/aws/aws-sdk-go-v2/config v1.31.4
11+
github.com/aws/aws-sdk-go-v2/service/kms v1.45.0
1012
github.com/bnb-chain/tss-lib/v2 v2.0.2
1113
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.3
1214
github.com/dgraph-io/badger/v4 v4.7.0
@@ -19,12 +21,25 @@ require (
1921
github.com/spf13/viper v1.18.0
2022
github.com/stretchr/testify v1.10.0
2123
github.com/urfave/cli/v3 v3.3.2
24+
golang.org/x/crypto v0.37.0
2225
golang.org/x/term v0.31.0
2326
)
2427

2528
require (
2629
github.com/agl/ed25519 v0.0.0-20200225211852-fd4d107ace12 // indirect
2730
github.com/armon/go-metrics v0.4.1 // indirect
31+
github.com/aws/aws-sdk-go-v2 v1.38.2 // indirect
32+
github.com/aws/aws-sdk-go-v2/credentials v1.18.8 // indirect
33+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.5 // indirect
34+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.5 // indirect
35+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.5 // indirect
36+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
37+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect
38+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.5 // indirect
39+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.3 // indirect
40+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.1 // indirect
41+
github.com/aws/aws-sdk-go-v2/service/sts v1.38.1 // indirect
42+
github.com/aws/smithy-go v1.23.0 // indirect
2843
github.com/btcsuite/btcd v0.24.2 // indirect
2944
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
3045
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect
@@ -71,6 +86,7 @@ require (
7186
github.com/spf13/afero v1.11.0 // indirect
7287
github.com/spf13/cast v1.6.0 // indirect
7388
github.com/spf13/pflag v1.0.6 // indirect
89+
github.com/stretchr/objx v0.5.2 // indirect
7490
github.com/subosito/gotenv v1.6.0 // indirect
7591
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
7692
go.opentelemetry.io/otel v1.35.0 // indirect
@@ -80,7 +96,6 @@ require (
8096
go.uber.org/goleak v1.3.0 // indirect
8197
go.uber.org/multierr v1.9.0 // indirect
8298
go.uber.org/zap v1.21.0 // indirect
83-
golang.org/x/crypto v0.37.0 // indirect
8499
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
85100
golang.org/x/net v0.39.0 // indirect
86101
golang.org/x/sys v0.33.0 // indirect

go.sum

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,34 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj
1717
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
1818
github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0=
1919
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
20+
github.com/aws/aws-sdk-go-v2 v1.38.2 h1:QUkLO1aTW0yqW95pVzZS0LGFanL71hJ0a49w4TJLMyM=
21+
github.com/aws/aws-sdk-go-v2 v1.38.2/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY=
22+
github.com/aws/aws-sdk-go-v2/config v1.31.4 h1:aY2IstXOfjdLtr1lDvxFBk5DpBnHgS5GS3jgR/0BmPw=
23+
github.com/aws/aws-sdk-go-v2/config v1.31.4/go.mod h1:1IAykiegrTp6n+CbZoCpW6kks1I74fEDgl2BPQSkLSU=
24+
github.com/aws/aws-sdk-go-v2/credentials v1.18.8 h1:0FfdP0I9gs/f1rwtEdkcEdsclTEkPB8o6zWUG2Z8+IM=
25+
github.com/aws/aws-sdk-go-v2/credentials v1.18.8/go.mod h1:9UReQ1UmGooX93JKzHyr7PRF3F+p3r+PmRwR7+qHJYA=
26+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.5 h1:ul7hICbZ5Z/Pp9VnLVGUVe7rqYLXCyIiPU7hQ0sRkow=
27+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.5/go.mod h1:5cIWJ0N6Gjj+72Q6l46DeaNtcxXHV42w/Uq3fIfeUl4=
28+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.5 h1:d45S2DqHZOkHu0uLUW92VdBoT5v0hh3EyR+DzMEh3ag=
29+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.5/go.mod h1:G6e/dR2c2huh6JmIo9SXysjuLuDDGWMeYGibfW2ZrXg=
30+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.5 h1:ENhnQOV3SxWHplOqNN1f+uuCNf9n4Y/PKpl6b1WRP0Q=
31+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.5/go.mod h1:csQLMI+odbC0/J+UecSTztG70Dc4aTCOu4GyPNDNpVo=
32+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
33+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
34+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM=
35+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8=
36+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.5 h1:Cx1M/UUgYu9UCQnIMKaOhkVaFvLy1HneD6T4sS/DlKg=
37+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.5/go.mod h1:fTRNLgrTvPpEzGqc9QkeO4hu/3ng+mdtUbL8shUwXz4=
38+
github.com/aws/aws-sdk-go-v2/service/kms v1.45.0 h1:WYQcp4o0/X+Xd50dSFluzKk3Lee2mP+tP39uMI60s1M=
39+
github.com/aws/aws-sdk-go-v2/service/kms v1.45.0/go.mod h1:le5DfWrncVIxOWL2Q0NnDqvhH8ULiGYgC9iS8BtwcZE=
40+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.3 h1:z6lajFT/qGlLRB/I8V5CCklqSuWZKUkdwRAn9leIkiQ=
41+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.3/go.mod h1:BnyjuIX0l+KXJVl2o9Ki3Zf0M4pA2hQYopFCRUj9ADU=
42+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.1 h1:8yI3jK5JZ310S8RpgdZdzwvlvBu3QbG8DP7Be/xJ6yo=
43+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.1/go.mod h1:HPzXfFgrLd02lYpcFYdDz5xZs94LOb+lWlvbAGaeMsk=
44+
github.com/aws/aws-sdk-go-v2/service/sts v1.38.1 h1:3kWmIg5iiWPMBJyq/I55Fki5fyfoMtrn/SkUIpxPwHQ=
45+
github.com/aws/aws-sdk-go-v2/service/sts v1.38.1/go.mod h1:yi0b3Qez6YamRVJ+Rbi19IgvjfjPODgVRhkWA6RTMUM=
46+
github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE=
47+
github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
2048
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
2149
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
2250
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=

0 commit comments

Comments
 (0)