Skip to content

Commit 4144faa

Browse files
Remove vault.secrets.get from gateway; add workflow-based secret retrieval and cross-namespace E2E tests (#21660)
* Remove vault.secrets.get from gateway and add workflow-based secret retrieval tests Remove the `vault.secrets.get` method from the gateway surface entirely: - Remove `GetSupportedMethods()` dev-build conditional that exposed the method - Remove `handleSecretsGet()` and `getEncryptionKeys()` from the gateway handler - Remove the `MethodSecretsGet` case from the gateway-side handler and aggregator - Remove the now-unused `capRegistry` field from `GatewayHandler` Replace the commented-out gateway-based get test with a WASM workflow that calls `runtime.GetSecret()`, and add cross-namespace E2E coverage proving that secrets with the same ID in different namespaces are fully independent (create, get, update, list, delete all scoped to their namespace). Made-with: Cursor * Harden negative test and registry update in vault E2E - In the vaultsecret WASM workflow, check that the GetSecret error specifically contains "key does not exist" instead of accepting any error as proof the secret was deleted. This prevents config-propagation, transport, or decryption failures from masking real bugs. - In updateVaultCapabilityConfigInRegistry, replace the fire-and-sleep pattern with sethClient.WaitMined + receipt status assertion so a reverted or stuck tx fails the test immediately instead of causing a downstream workflow flake. Made-with: Cursor * Fix CI failures: goimports, go.md, and vault DON lookup - Fix goimports import ordering in v2_vault_don_test.go - Add vaultsecret module to go.md dependency graph - Fix updateVaultCapabilityConfigInRegistry to dynamically find the DON that has vault@1.0.0 instead of hardcoding "workflow-don", which fails in the workflow-gateway-capabilities topology where vault lives on "capabilities-don" Made-with: Cursor * fix: add MethodConfigs for vault capability to enable remote execution in multi-DON topology In the workflow-gateway-capabilities topology, the vault capability runs on a separate capabilities-don. Without MethodConfigs, the launcher treats vault as a V1 capability and passes nil transmissionConfig. Since secrets.go doesn't set Config on the CapabilityRequest, the V1 fallback path fails with "cannot unwrap nil values.Map" when extracting transmission config. Adding RemoteExecutableConfig for the vault.secrets.get method ensures the V2 Don2Don framework is used, which sets transmissionConfig from the on-chain registry config rather than requiring it per-request. * Address review feedback: parallelize vault tests, use seth.Decode, reduce sleeps - Split ExecuteVaultTest into two parallel subtests (basic_crud + cross_namespace), each with its own per-test keys, ChIP sink, and channels. Follows the same pattern as HTTP Action tests. When parallelEnabled && fanoutEnabled, both subtests run concurrently. - Replace manual deployerKey/deployerOpts + WaitMined + receipt check with a deployer seth client and sethClient.Decode() per Tofel's review. - Remove redundant 30s "Vault DON ready" sleep. - Reduce registry syncer wait from 30s to 15s (polls every 12s). - Reduce allowlist sleep from 10s to 6s (polls every 5s). - Remove unused consensus workflow deployment from vault test setup. * Fix OwnershipLinkDoesNotExist error in vault subtests Each subtest creates a new per-test key that hasn't completed the linkOwner flow on the workflow registry. Call creworkflow.LinkOwner() explicitly before any allowlistRequest operations. Made-with: Cursor
1 parent 8644cc1 commit 4144faa

16 files changed

Lines changed: 436 additions & 173 deletions

File tree

core/capabilities/vault/gw_handler.go

Lines changed: 2 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ package vault
22

33
import (
44
"context"
5-
"encoding/hex"
65
"encoding/json"
76
"errors"
87
"fmt"
9-
"sort"
108

119
"go.opentelemetry.io/otel/attribute"
1210
"go.opentelemetry.io/otel/metric"
13-
"google.golang.org/protobuf/proto"
1411

1512
"github.com/smartcontractkit/chainlink-common/pkg/beholder"
1613
vaultcommon "github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/vault"
@@ -62,21 +59,19 @@ type GatewayHandler struct {
6259
services.Service
6360
eng *services.Engine
6461

65-
capRegistry core.CapabilitiesRegistry
6662
secretsService vaulttypes.SecretsService
6763
gatewayConnector gatewayConnector
6864
lggr logger.Logger
6965
metrics *metrics
7066
}
7167

72-
func NewGatewayHandler(capabilitiesRegistry core.CapabilitiesRegistry, secretsService vaulttypes.SecretsService, connector gatewayConnector, lggr logger.Logger) (*GatewayHandler, error) {
68+
func NewGatewayHandler(secretsService vaulttypes.SecretsService, connector gatewayConnector, lggr logger.Logger) (*GatewayHandler, error) {
7369
metrics, err := newMetrics()
7470
if err != nil {
7571
return nil, fmt.Errorf("failed to create metrics: %w", err)
7672
}
7773

7874
gh := &GatewayHandler{
79-
capRegistry: capabilitiesRegistry,
8075
secretsService: secretsService,
8176
gatewayConnector: connector,
8277
lggr: lggr.Named(HandlerName),
@@ -109,7 +104,7 @@ func (h *GatewayHandler) ID(ctx context.Context) (string, error) {
109104
}
110105

111106
func (h *GatewayHandler) Methods() []string {
112-
return vaulttypes.GetSupportedMethods(h.lggr)
107+
return vaulttypes.Methods
113108
}
114109

115110
func (h *GatewayHandler) HandleGatewayMessage(ctx context.Context, gatewayID string, req *jsonrpc.Request[json.RawMessage]) (err error) {
@@ -119,8 +114,6 @@ func (h *GatewayHandler) HandleGatewayMessage(ctx context.Context, gatewayID str
119114
switch req.Method {
120115
case vaulttypes.MethodSecretsCreate:
121116
response = h.handleSecretsCreate(ctx, gatewayID, req)
122-
case vaulttypes.MethodSecretsGet:
123-
response = h.handleSecretsGet(ctx, gatewayID, req)
124117
case vaulttypes.MethodSecretsUpdate:
125118
response = h.handleSecretsUpdate(ctx, gatewayID, req)
126119
case vaulttypes.MethodSecretsDelete:
@@ -183,51 +176,6 @@ func (h *GatewayHandler) handleSecretsUpdate(ctx context.Context, gatewayID stri
183176
return jsonResponse
184177
}
185178

186-
func (h *GatewayHandler) handleSecretsGet(ctx context.Context, gatewayID string, req *jsonrpc.Request[json.RawMessage]) *jsonrpc.Response[json.RawMessage] {
187-
var request vaultcommon.GetSecretsRequest
188-
if err := json.Unmarshal(*req.Params, &request); err != nil {
189-
return h.errorResponse(ctx, gatewayID, req, api.UserMessageParseError, err)
190-
}
191-
encryptionKeys, err := h.getEncryptionKeys(ctx)
192-
if err != nil {
193-
return h.errorResponse(ctx, gatewayID, req, api.FatalError, err)
194-
}
195-
getSecretsRequest := vaultcommon.GetSecretsRequest{}
196-
for _, reqItem := range request.Requests {
197-
getSecretsRequest.Requests = append(getSecretsRequest.Requests, &vaultcommon.SecretRequest{
198-
Id: &vaultcommon.SecretIdentifier{
199-
Owner: reqItem.Id.Owner,
200-
Namespace: reqItem.Id.Namespace,
201-
Key: reqItem.Id.Key,
202-
},
203-
EncryptionKeys: encryptionKeys,
204-
})
205-
}
206-
vaultCapResponse, err := h.secretsService.GetSecrets(ctx, req.ID, &getSecretsRequest)
207-
if err != nil {
208-
return h.errorResponse(ctx, gatewayID, req, api.FatalError, err)
209-
}
210-
211-
vaultResponseProto := &vaultcommon.GetSecretsResponse{}
212-
err = proto.Unmarshal(vaultCapResponse.Payload, vaultResponseProto)
213-
if err != nil {
214-
h.lggr.Errorf("Debugging: handleSecretsCreate failed to unmarshal response: %s. Payload was: %s", err.Error(), string(vaultCapResponse.Payload))
215-
return h.errorResponse(ctx, gatewayID, req, api.NodeReponseEncodingError, err)
216-
}
217-
218-
vaultAPIResponseBytes, err := json.Marshal(vaultResponseProto)
219-
if err != nil {
220-
return h.errorResponse(ctx, gatewayID, req, api.NodeReponseEncodingError, err)
221-
}
222-
vaultAPIResponseJSON := json.RawMessage(vaultAPIResponseBytes)
223-
return &jsonrpc.Response[json.RawMessage]{
224-
Version: jsonrpc.JsonRpcVersion,
225-
ID: req.ID,
226-
Method: req.Method,
227-
Result: &vaultAPIResponseJSON,
228-
}
229-
}
230-
231179
func (h *GatewayHandler) handleSecretsDelete(ctx context.Context, gatewayID string, req *jsonrpc.Request[json.RawMessage]) *jsonrpc.Response[json.RawMessage] {
232180
r := &vaultcommon.DeleteSecretsRequest{}
233181
if err := json.Unmarshal(*req.Params, r); err != nil {
@@ -324,26 +272,6 @@ func (h *GatewayHandler) errorResponse(
324272
}
325273
}
326274

327-
// getEncryptionKeys retrieves the encryption keys of all members in the Workflow DON.
328-
func (h *GatewayHandler) getEncryptionKeys(ctx context.Context) ([]string, error) {
329-
myNode, err := h.capRegistry.LocalNode(ctx)
330-
if err != nil {
331-
return nil, errors.New("failed to get local node from registry" + err.Error())
332-
}
333-
334-
encryptionKeys := make([]string, 0, len(myNode.WorkflowDON.Members))
335-
for _, peerID := range myNode.WorkflowDON.Members {
336-
peerNode, err := h.capRegistry.NodeByPeerID(ctx, peerID)
337-
if err != nil {
338-
return nil, errors.New("failed to get node info for peerID: " + peerID.String() + " - " + err.Error())
339-
}
340-
encryptionKeys = append(encryptionKeys, hex.EncodeToString(peerNode.EncryptionPublicKey[:]))
341-
}
342-
// Sort the encryption keys to ensure consistent ordering across all nodes.
343-
sort.Strings(encryptionKeys)
344-
return encryptionKeys, nil
345-
}
346-
347275
func toJSONResponse(vaultCapResponse *vaulttypes.Response, method string) (*jsonrpc.Response[json.RawMessage], error) {
348276
vaultResponseBytes, err := vaultCapResponse.ToJSONRPCResult()
349277
if err != nil {

core/capabilities/vault/gw_handler_test.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
vaultcommon "github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/vault"
1313
jsonrpc "github.com/smartcontractkit/chainlink-common/pkg/jsonrpc2"
14-
core_mocks "github.com/smartcontractkit/chainlink-common/pkg/types/core/mocks"
1514
vaultcap "github.com/smartcontractkit/chainlink/v2/core/capabilities/vault"
1615
"github.com/smartcontractkit/chainlink/v2/core/capabilities/vault/vaulttypes"
1716
vaulttypesmocks "github.com/smartcontractkit/chainlink/v2/core/capabilities/vault/vaulttypes/mocks"
@@ -167,11 +166,10 @@ func TestGatewayHandler_HandleGatewayMessage(t *testing.T) {
167166
t.Run(tt.name, func(t *testing.T) {
168167
secretsService := vaulttypesmocks.NewSecretsService(t)
169168
gwConnector := connector_mocks.NewGatewayConnector(t)
170-
capRegistry := core_mocks.NewCapabilitiesRegistry(t)
171169

172170
tt.setupMocks(secretsService, gwConnector)
173171

174-
handler, err := vaultcap.NewGatewayHandler(capRegistry, secretsService, gwConnector, lggr)
172+
handler, err := vaultcap.NewGatewayHandler(secretsService, gwConnector, lggr)
175173
require.NoError(t, err)
176174

177175
err = handler.HandleGatewayMessage(ctx, "gateway-1", tt.request)
@@ -191,19 +189,18 @@ func TestGatewayHandler_Lifecycle(t *testing.T) {
191189

192190
secretsService := vaulttypesmocks.NewSecretsService(t)
193191
gwConnector := connector_mocks.NewGatewayConnector(t)
194-
capRegistry := core_mocks.NewCapabilitiesRegistry(t)
195192

196-
handler, err := vaultcap.NewGatewayHandler(capRegistry, secretsService, gwConnector, lggr)
193+
handler, err := vaultcap.NewGatewayHandler(secretsService, gwConnector, lggr)
197194
require.NoError(t, err)
198195

199196
t.Run("start", func(t *testing.T) {
200-
gwConnector.On("AddHandler", mock.Anything, vaulttypes.GetSupportedMethods(lggr), handler).Return(nil).Once()
197+
gwConnector.On("AddHandler", mock.Anything, vaulttypes.Methods, handler).Return(nil).Once()
201198
err := handler.Start(ctx)
202199
require.NoError(t, err)
203200
})
204201

205202
t.Run("close", func(t *testing.T) {
206-
gwConnector.On("RemoveHandler", mock.Anything, vaulttypes.GetSupportedMethods(lggr)).Return(nil).Once()
203+
gwConnector.On("RemoveHandler", mock.Anything, vaulttypes.Methods).Return(nil).Once()
207204
err := handler.Close()
208205
require.NoError(t, err)
209206
})

core/capabilities/vault/vaulttypes/types.go

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"encoding/binary"
66
"encoding/json"
77
"fmt"
8-
"slices"
98
"time"
109

1110
"github.com/ethereum/go-ethereum/common"
@@ -15,8 +14,6 @@ import (
1514

1615
"github.com/smartcontractkit/chainlink-common/keystore/corekeys/ocr2key"
1716
vaultcommon "github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/vault"
18-
"github.com/smartcontractkit/chainlink-common/pkg/logger"
19-
"github.com/smartcontractkit/chainlink/v2/core/build"
2017
)
2118

2219
var DefaultNamespace = "main"
@@ -38,27 +35,12 @@ const (
3835
MaxBatchSize = 10
3936
)
4037

41-
var (
42-
// MethodSecretsGet is intentionally omitted from this list, as it is not exposed
43-
// to external clients, but rather used internally by the Workflow DON.
44-
Methods = []string{
45-
MethodSecretsCreate,
46-
MethodSecretsUpdate,
47-
MethodSecretsDelete,
48-
MethodSecretsList,
49-
MethodPublicKeyGet,
50-
}
51-
)
52-
53-
func GetSupportedMethods(lggr logger.Logger) []string {
54-
methods := slices.Clone(Methods)
55-
if build.IsDev() {
56-
// Allow secrets get in non-prod environments for testing purposes
57-
// This should never be enabled in production
58-
methods = append(methods, MethodSecretsGet)
59-
lggr.Warnw("enabling vault.secrets.get method since it is not a production build", "build-mode", build.Mode())
60-
}
61-
return methods
38+
var Methods = []string{
39+
MethodSecretsCreate,
40+
MethodSecretsUpdate,
41+
MethodSecretsDelete,
42+
MethodSecretsList,
43+
MethodPublicKeyGet,
6244
}
6345

6446
// SignedOCRResponse is the response format for OCR signed reports, as returned by the Vault DON.

core/services/gateway/handlers/vault/aggregator.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,6 @@ func (a *baseAggregator) validateUsingSignatures(don capabilities.DON, nodes []c
139139
return nil, errors.New("response result and error both are is nil: cannot validate signatures")
140140
}
141141

142-
if resp.Method == vaulttypes.MethodSecretsGet {
143-
// SecretsGet responses are not signed.
144-
return resp, errors.New("cannot validate signatures for Get requests")
145-
}
146-
147142
r := &vaulttypes.SignedOCRResponse{}
148143
err := json.Unmarshal(*resp.Result, r)
149144
if err != nil {

core/services/gateway/handlers/vault/aggregator_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func newMessage(t *testing.T) *jsonrpc.Response[json.RawMessage] {
9999
return &jsonrpc.Response[json.RawMessage]{
100100
Version: jsonrpc.JsonRpcVersion,
101101
ID: "1",
102-
Method: vaulttypes.MethodSecretsGet,
102+
Method: vaulttypes.MethodSecretsCreate,
103103
Result: (*json.RawMessage)(&rawResp),
104104
}
105105
}
@@ -119,7 +119,7 @@ func TestAggregator_Valid_FallsBackToQuorum(t *testing.T) {
119119
currResp := jsonrpc.Response[json.RawMessage]{
120120
Version: jsonrpc.JsonRpcVersion,
121121
ID: "1",
122-
Method: vaulttypes.MethodSecretsGet,
122+
Method: vaulttypes.MethodSecretsCreate,
123123
Result: (*json.RawMessage)(nil),
124124
Error: &jsonrpc.WireError{
125125
Code: 123,
@@ -180,7 +180,7 @@ func TestAggregator_InsufficientResponses(t *testing.T) {
180180
currResp := jsonrpc.Response[json.RawMessage]{
181181
Version: jsonrpc.JsonRpcVersion,
182182
ID: "1",
183-
Method: vaulttypes.MethodSecretsGet,
183+
Method: vaulttypes.MethodSecretsCreate,
184184
Result: &rm,
185185
}
186186
responses := map[string]jsonrpc.Response[json.RawMessage]{
@@ -206,21 +206,21 @@ func TestAggregator_QuorumUnobtainable(t *testing.T) {
206206
resp1 := &jsonrpc.Response[json.RawMessage]{
207207
Version: jsonrpc.JsonRpcVersion,
208208
ID: "1",
209-
Method: vaulttypes.MethodSecretsGet,
209+
Method: vaulttypes.MethodSecretsCreate,
210210
Result: &rm1,
211211
}
212212
rm2 := json.RawMessage([]byte(`{"foo": "bar"}`))
213213
resp2 := &jsonrpc.Response[json.RawMessage]{
214214
Version: jsonrpc.JsonRpcVersion,
215215
ID: "1",
216-
Method: vaulttypes.MethodSecretsGet,
216+
Method: vaulttypes.MethodSecretsCreate,
217217
Result: &rm2,
218218
}
219219
rm3 := json.RawMessage([]byte(`{"baz": "qux"}`))
220220
resp3 := &jsonrpc.Response[json.RawMessage]{
221221
Version: jsonrpc.JsonRpcVersion,
222222
ID: "1",
223-
Method: vaulttypes.MethodSecretsGet,
223+
Method: vaulttypes.MethodSecretsCreate,
224224
Result: &rm3,
225225
}
226226
responses := map[string]jsonrpc.Response[json.RawMessage]{

core/services/gateway/handlers/vault/handler.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ func (h *handler) removeExpiredRequests(ctx context.Context) {
326326
}
327327

328328
func (h *handler) Methods() []string {
329-
return vaulttypes.GetSupportedMethods(h.lggr)
329+
return vaulttypes.Methods
330330
}
331331

332332
func (h *handler) HandleLegacyUserMessage(_ context.Context, _ *api.Message, _ gwhandlers.Callback) error {
@@ -361,9 +361,6 @@ func (h *handler) HandleJSONRPCUserMessage(ctx context.Context, req jsonrpc.Requ
361361
h.lggr.Debugw("returning cached public key response")
362362
return h.handlePublicKeyGetSynchronously(ctx, req, publicKeyResponseBytes, callback)
363363

364-
case vaulttypes.MethodSecretsGet:
365-
h.lggr.Errorw("Get requests not allowed", "requestID", req.ID)
366-
return errors.New("get request not allowed")
367364
}
368365

369366
isAuthorized, owner, err := h.requestAuthorizer.AuthorizeRequest(ctx, req)

core/services/ocr2/delegate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,7 @@ func (d *Delegate) newServicesVaultPlugin(
726726
}
727727
srvs = append(srvs, vaultCapability)
728728

729-
handler, err := vaultcap.NewGatewayHandler(capabilitiesRegistry, vaultCapability, gwconnector, d.lggr)
729+
handler, err := vaultcap.NewGatewayHandler(vaultCapability, gwconnector, d.lggr)
730730
if err != nil {
731731
return nil, fmt.Errorf("failed to instantiate vault plugin: failed to create vault handler: %w", err)
732732
}

go.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ flowchart LR
486486
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/evmread
487487
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/httpaction
488488
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/solana/solwrite
489+
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/vaultsecret
489490
click chainlink/system-tests/tests href "https://github.com/smartcontractkit/chainlink"
490491
chainlink/system-tests/tests/regression/cre/consensus --> cre-sdk-go/capabilities/scheduler/cron
491492
click chainlink/system-tests/tests/regression/cre/consensus href "https://github.com/smartcontractkit/chainlink"
@@ -517,6 +518,8 @@ flowchart LR
517518
chainlink/system-tests/tests/smoke/cre/solana/solwrite --> cre-sdk-go/capabilities/blockchain/solana
518519
chainlink/system-tests/tests/smoke/cre/solana/solwrite --> cre-sdk-go/capabilities/scheduler/cron
519520
click chainlink/system-tests/tests/smoke/cre/solana/solwrite href "https://github.com/smartcontractkit/chainlink"
521+
chainlink/system-tests/tests/smoke/cre/vaultsecret --> cre-sdk-go/capabilities/scheduler/cron
522+
click chainlink/system-tests/tests/smoke/cre/vaultsecret href "https://github.com/smartcontractkit/chainlink"
520523
chainlink/v2 --> chainlink-automation
521524
chainlink/v2 --> chainlink-ccv
522525
chainlink/v2 --> chainlink-evm/contracts/cre/gobindings
@@ -590,6 +593,7 @@ flowchart LR
590593
chainlink/system-tests/tests/smoke/cre/evmread
591594
chainlink/system-tests/tests/smoke/cre/httpaction
592595
chainlink/system-tests/tests/smoke/cre/solana/solwrite
596+
chainlink/system-tests/tests/smoke/cre/vaultsecret
593597
chainlink/v2
594598
end
595599
click chainlink-repo href "https://github.com/smartcontractkit/chainlink"

system-tests/lib/cre/features/vault/vault.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/hex"
66
"fmt"
77
"strconv"
8+
"time"
89

910
"dario.cat/mergo"
1011
"github.com/Masterminds/semver/v3"
@@ -13,6 +14,7 @@ import (
1314
"github.com/pelletier/go-toml/v2"
1415
"github.com/pkg/errors"
1516
"github.com/rs/zerolog"
17+
"google.golang.org/protobuf/types/known/durationpb"
1618

1719
chainselectors "github.com/smartcontractkit/chain-selectors"
1820
"github.com/smartcontractkit/smdkg/dkgocr/dkgocrtypes"
@@ -105,7 +107,8 @@ func (o *Vault) PreEnvStartup(
105107
CapabilityType: 1, // ACTION
106108
},
107109
Config: &capabilitiespb.CapabilityConfig{
108-
LocalOnly: don.HasOnlyLocalCapabilities(),
110+
LocalOnly: don.HasOnlyLocalCapabilities(),
111+
MethodConfigs: vaultMethodConfigs(),
109112
},
110113
}}
111114

@@ -385,6 +388,20 @@ func reportingPluginConfigOverride(vaultDKGOCR3Addr *common.Address, creEnv *cre
385388
return cfgb, nil
386389
}
387390

391+
func vaultMethodConfigs() map[string]*capabilitiespb.CapabilityMethodConfig {
392+
return map[string]*capabilitiespb.CapabilityMethodConfig{
393+
vaultprotos.MethodGetSecrets: {
394+
RemoteConfig: &capabilitiespb.CapabilityMethodConfig_RemoteExecutableConfig{
395+
RemoteExecutableConfig: &capabilitiespb.RemoteExecutableConfig{
396+
RequestTimeout: durationpb.New(2 * time.Minute),
397+
ServerMaxParallelRequests: 10,
398+
RequestHasherType: capabilitiespb.RequestHasherType_Simple,
399+
},
400+
},
401+
},
402+
}
403+
}
404+
388405
func EncryptSecret(secret, masterPublicKeyStr string, owner common.Address) (string, error) {
389406
masterPublicKey := tdh2easy.PublicKey{}
390407
masterPublicKeyBytes, err := hex.DecodeString(masterPublicKeyStr)

0 commit comments

Comments
 (0)