2019-11-18 13:34:06 +00:00
|
|
|
package session
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"crypto/ecdsa"
|
|
|
|
|
2020-03-31 07:05:26 +00:00
|
|
|
"github.com/nspcc-dev/neofs-api-go/refs"
|
2019-11-18 13:34:06 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type (
|
|
|
|
// KeyStore is an interface that describes storage,
|
|
|
|
// that allows to fetch public keys by OwnerID.
|
|
|
|
KeyStore interface {
|
|
|
|
Get(ctx context.Context, id refs.OwnerID) ([]*ecdsa.PublicKey, error)
|
|
|
|
}
|
|
|
|
|
|
|
|
// TokenStore is a PToken storage manipulation interface.
|
|
|
|
TokenStore interface {
|
|
|
|
// New returns new token with specified parameters.
|
2020-04-29 08:52:05 +00:00
|
|
|
New(p TokenParams) PrivateToken
|
2019-11-18 13:34:06 +00:00
|
|
|
|
|
|
|
// Fetch tries to fetch a token with specified id.
|
2020-04-29 08:52:05 +00:00
|
|
|
Fetch(id TokenID) PrivateToken
|
2019-11-18 13:34:06 +00:00
|
|
|
|
|
|
|
// Remove removes token with id from store.
|
|
|
|
Remove(id TokenID)
|
|
|
|
}
|
|
|
|
|
|
|
|
// TokenParams contains params to create new PToken.
|
|
|
|
TokenParams struct {
|
|
|
|
FirstEpoch uint64
|
|
|
|
LastEpoch uint64
|
2020-04-28 10:09:18 +00:00
|
|
|
Address Address
|
2019-11-18 13:34:06 +00:00
|
|
|
OwnerID OwnerID
|
2020-04-28 10:09:18 +00:00
|
|
|
Verb Verb
|
2019-11-18 13:34:06 +00:00
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
// NewInitRequest returns new initialization CreateRequest from passed Token.
|
|
|
|
func NewInitRequest(t *Token) *CreateRequest {
|
|
|
|
return &CreateRequest{Message: &CreateRequest_Init{Init: t}}
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewSignedRequest returns new signed CreateRequest from passed Token.
|
|
|
|
func NewSignedRequest(t *Token) *CreateRequest {
|
|
|
|
return &CreateRequest{Message: &CreateRequest_Signed{Signed: t}}
|
|
|
|
}
|