diff --git a/pkg/token/session.go b/pkg/token/session.go new file mode 100644 index 00000000..eec6fd32 --- /dev/null +++ b/pkg/token/session.go @@ -0,0 +1,35 @@ +package token + +import ( + "github.com/google/uuid" +) + +type SessionToken struct { + id uuid.UUID + pubKey []byte +} + +func CreateSessionToken(id, pub []byte) (*SessionToken, error) { + var tokenID uuid.UUID + + err := tokenID.UnmarshalBinary(id) + if err != nil { + return nil, err + } + + key := make([]byte, len(pub)) + copy(key[:], pub) + + return &SessionToken{ + id: tokenID, + pubKey: key, + }, nil +} + +func (s SessionToken) SessionKey() []byte { + return s.pubKey +} + +func (s SessionToken) ID() []byte { + return s.id[:] +}