package sessiontest import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "github.com/google/uuid" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neofs-sdk-go/session" "github.com/nspcc-dev/neofs-sdk-go/user" ) var p *keys.PrivateKey func init() { var err error p, err = keys.NewPrivateKey() if err != nil { panic(err) } } // Token returns random session.Token. // // Resulting token is unsigned. func Token() *session.Token { tok := session.NewToken() uid, err := uuid.New().MarshalBinary() if err != nil { panic(err) } priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { panic(err) } var ownerID user.ID user.IDFromKey(&ownerID, priv.PublicKey) keyBin := p.PublicKey().Bytes() tok.SetID(uid) tok.SetOwnerID(&ownerID) tok.SetSessionKey(keyBin) tok.SetExp(11) tok.SetNbf(22) tok.SetIat(33) return tok } // SignedToken returns signed random session.Token. // // Panics if token could not be signed (actually unexpected). func SignedToken() *session.Token { tok := Token() err := tok.Sign(&p.PrivateKey) if err != nil { panic(err) } return tok }