forked from TrueCloudLab/frostfs-node
[#1247] object: Return status errors from util.KeyStorage
Return `SessionTokenExpired`/`SessionTokenNotFound` error from `apistatus` package if private session token is expired/missing. These errors are returned by storage node's server as NeoFS API statuses. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
a4ee59977e
commit
f32c9670ad
1 changed files with 8 additions and 8 deletions
|
@ -2,18 +2,13 @@ package util
|
|||
|
||||
import (
|
||||
"crypto/ecdsa"
|
||||
"errors"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/pkg/core/netmap"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/services/session/storage"
|
||||
apistatus "github.com/nspcc-dev/neofs-sdk-go/client/status"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/session"
|
||||
)
|
||||
|
||||
var (
|
||||
errNoSessionToken = errors.New("session token does not exist")
|
||||
errSessionTokenExpired = errors.New("session token has been expired")
|
||||
)
|
||||
|
||||
// KeyStorage represents private key storage of the local node.
|
||||
type KeyStorage struct {
|
||||
key *ecdsa.PrivateKey
|
||||
|
@ -41,11 +36,16 @@ func (s *KeyStorage) GetKey(token *session.Token) (*ecdsa.PrivateKey, error) {
|
|||
pToken := s.tokenStore.Get(token.OwnerID(), token.ID())
|
||||
if pToken != nil {
|
||||
if pToken.ExpiredAt() <= s.networkState.CurrentEpoch() {
|
||||
return nil, errSessionTokenExpired
|
||||
var errExpired apistatus.SessionTokenExpired
|
||||
|
||||
return nil, errExpired
|
||||
}
|
||||
return pToken.SessionKey(), nil
|
||||
}
|
||||
return nil, errNoSessionToken
|
||||
|
||||
var errNotFound apistatus.SessionTokenNotFound
|
||||
|
||||
return nil, errNotFound
|
||||
}
|
||||
|
||||
return s.key, nil
|
||||
|
|
Loading…
Reference in a new issue