diff --git a/cmd/neofs-node/object.go b/cmd/neofs-node/object.go index 548873dce..c27f666a4 100644 --- a/cmd/neofs-node/object.go +++ b/cmd/neofs-node/object.go @@ -300,6 +300,7 @@ func initObjectService(c *cfg) { ), ), searchsvc.WithNetMapSource(c.cfgNetmap.wrapper), + searchsvc.WithKeyStorage(keyStorage), ) sSearchV2 := searchsvcV2.NewService( @@ -317,6 +318,7 @@ func initObjectService(c *cfg) { ), ), getsvc.WithNetMapSource(c.cfgNetmap.wrapper), + getsvc.WithKeyStorage(keyStorage), ) sGetV2 := getsvcV2.NewService( diff --git a/pkg/services/object/delete/v2/util.go b/pkg/services/object/delete/v2/util.go index 894c0b871..72b18a1ab 100644 --- a/pkg/services/object/delete/v2/util.go +++ b/pkg/services/object/delete/v2/util.go @@ -18,9 +18,7 @@ func (s *Service) toPrm(req *objectV2.DeleteRequest, respBody *objectV2.DeleteRe } p := new(deletesvc.Prm) - p.SetCommonParameters(commonPrm. - WithKeyStorage(s.keyStorage), - ) + p.SetCommonParameters(commonPrm) body := req.GetBody() p.WithAddress(object.NewAddressFromV2(body.GetAddress())) diff --git a/pkg/services/object/get/exec.go b/pkg/services/object/get/exec.go index 63c0a220b..34855636b 100644 --- a/pkg/services/object/get/exec.go +++ b/pkg/services/object/get/exec.go @@ -105,7 +105,7 @@ func (exec execCtx) isChild(obj *object.Object) bool { } func (exec execCtx) key() (*ecdsa.PrivateKey, error) { - return exec.prm.common.KeyStorage().GetKey(exec.prm.common.SessionToken()) + return exec.svc.keyStore.GetKey(exec.prm.common.SessionToken()) } func (exec execCtx) callOptions() ([]client.CallOption, error) { diff --git a/pkg/services/object/get/service.go b/pkg/services/object/get/service.go index d17d60d41..df3df599e 100644 --- a/pkg/services/object/get/service.go +++ b/pkg/services/object/get/service.go @@ -1,7 +1,10 @@ package getsvc import ( + "crypto/ecdsa" + objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object" + "github.com/nspcc-dev/neofs-api-go/pkg/session" "github.com/nspcc-dev/neofs-node/pkg/core/client" "github.com/nspcc-dev/neofs-node/pkg/core/netmap" "github.com/nspcc-dev/neofs-node/pkg/core/object" @@ -44,6 +47,10 @@ type cfg struct { currentEpochReceiver interface { currentEpoch() (uint64, error) } + + keyStore interface { + GetKey(token *session.Token) (*ecdsa.PrivateKey, error) + } } func defaultCfg() *cfg { @@ -119,3 +126,11 @@ func WithNetMapSource(nmSrc netmap.Source) Option { } } } + +// WithKeyStorage returns option to set private +// key storage for session tokens and node key. +func WithKeyStorage(store *util.KeyStorage) Option { + return func(c *cfg) { + c.keyStore = store + } +} diff --git a/pkg/services/object/get/v2/util.go b/pkg/services/object/get/v2/util.go index b80d31904..9085d590c 100644 --- a/pkg/services/object/get/v2/util.go +++ b/pkg/services/object/get/v2/util.go @@ -38,9 +38,7 @@ func (s *Service) toPrm(req *objectV2.GetRequest, stream objectSvc.GetObjectStre } p := new(getsvc.Prm) - p.SetCommonParameters(commonPrm. - WithKeyStorage(s.keyStorage), - ) + p.SetCommonParameters(commonPrm) body := req.GetBody() p.WithAddress(objectSDK.NewAddressFromV2(body.GetAddress())) @@ -165,9 +163,7 @@ func (s *Service) toRangePrm(req *objectV2.GetRangeRequest, stream objectSvc.Get } p := new(getsvc.RangePrm) - p.SetCommonParameters(commonPrm. - WithKeyStorage(s.keyStorage), - ) + p.SetCommonParameters(commonPrm) body := req.GetBody() p.WithAddress(objectSDK.NewAddressFromV2(body.GetAddress())) @@ -266,9 +262,7 @@ func (s *Service) toHashRangePrm(req *objectV2.GetRangeHashRequest) (*getsvc.Ran } p := new(getsvc.RangeHashPrm) - p.SetCommonParameters(commonPrm. - WithKeyStorage(s.keyStorage), - ) + p.SetCommonParameters(commonPrm) body := req.GetBody() p.WithAddress(objectSDK.NewAddressFromV2(body.GetAddress())) @@ -324,9 +318,7 @@ func (s *Service) toHeadPrm(ctx context.Context, req *objectV2.HeadRequest, resp } p := new(getsvc.HeadPrm) - p.SetCommonParameters(commonPrm. - WithKeyStorage(s.keyStorage), - ) + p.SetCommonParameters(commonPrm) body := req.GetBody() p.WithAddress(objectSDK.NewAddressFromV2(body.GetAddress())) diff --git a/pkg/services/object/search/service.go b/pkg/services/object/search/service.go index 14d7342ef..940404301 100644 --- a/pkg/services/object/search/service.go +++ b/pkg/services/object/search/service.go @@ -1,8 +1,11 @@ package searchsvc import ( + "crypto/ecdsa" + cid "github.com/nspcc-dev/neofs-api-go/pkg/container/id" "github.com/nspcc-dev/neofs-api-go/pkg/object" + "github.com/nspcc-dev/neofs-api-go/pkg/session" "github.com/nspcc-dev/neofs-node/pkg/core/client" "github.com/nspcc-dev/neofs-node/pkg/core/netmap" "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/engine" @@ -47,6 +50,10 @@ type cfg struct { currentEpochReceiver interface { currentEpoch() (uint64, error) } + + keyStore interface { + GetKey(token *session.Token) (*ecdsa.PrivateKey, error) + } } func defaultCfg() *cfg { @@ -109,3 +116,11 @@ func WithNetMapSource(nmSrc netmap.Source) Option { } } } + +// WithKeyStorage returns option to set private +// key storage for session tokens and node key. +func WithKeyStorage(store *util.KeyStorage) Option { + return func(c *cfg) { + c.keyStore = store + } +} diff --git a/pkg/services/object/search/util.go b/pkg/services/object/search/util.go index 2a36a7009..1513f912a 100644 --- a/pkg/services/object/search/util.go +++ b/pkg/services/object/search/util.go @@ -83,7 +83,7 @@ func (c *clientWrapper) searchObjects(exec *execCtx, info client.NodeInfo) ([]*o return exec.prm.forwarder(info, c.client) } - key, err := exec.prm.common.KeyStorage().GetKey(exec.prm.common.SessionToken()) + key, err := exec.svc.keyStore.GetKey(exec.prm.common.SessionToken()) if err != nil { return nil, err } diff --git a/pkg/services/object/search/v2/util.go b/pkg/services/object/search/v2/util.go index 72bedf47f..a1dcb2522 100644 --- a/pkg/services/object/search/v2/util.go +++ b/pkg/services/object/search/v2/util.go @@ -30,9 +30,7 @@ func (s *Service) toPrm(req *objectV2.SearchRequest, stream objectSvc.SearchStre } p := new(searchsvc.Prm) - p.SetCommonParameters(commonPrm. - WithKeyStorage(s.keyStorage), - ) + p.SetCommonParameters(commonPrm) p.SetWriter(&streamWriter{ stream: stream, diff --git a/pkg/services/object/util/prm.go b/pkg/services/object/util/prm.go index 261475027..cd0fb95e9 100644 --- a/pkg/services/object/util/prm.go +++ b/pkg/services/object/util/prm.go @@ -20,8 +20,6 @@ type CommonPrm struct { bearer *token.BearerToken - keyStor *KeyStorage - callOpts []client.CallOption } @@ -63,24 +61,6 @@ func (p *CommonPrm) WithBearerToken(token *token.BearerToken) *CommonPrm { return p } -// WithKeyStorage sets private key storage to use during execution. -func (p *CommonPrm) WithKeyStorage(stor *KeyStorage) *CommonPrm { - if p != nil { - p.keyStor = stor - } - - return p -} - -// KeyStorage returns private key storage to use during execution. -func (p *CommonPrm) KeyStorage() *KeyStorage { - if p != nil { - return p.keyStor - } - - return nil -} - // WithRemoteCallOptions sets call options remote remote client calls. func (p *CommonPrm) WithRemoteCallOptions(opts ...client.CallOption) *CommonPrm { if p != nil {