package jst

import "git.sr.ht/~pingoo/stdx/jst"

Index

Constants

const (
	V1KeySize = 32
)

Variables

var (
	ErrTokenIsNotValid     = errors.New("jst: token is not valid")
	ErrSignatureIsNotValid = errors.New("jst: signature is not valid")
	ErrTokenHasExpired     = errors.New("jst: token has expired")
)
var (
	ErrKeyNotFound = func(keyId string) error {
		return fmt.Errorf("key (%s) not found", keyId)
	}
)

Types

type HeaderV1

type HeaderV1 struct {
	ExpiresAt   *time.Time `json:"expires_at,omitempty"`
	NotBefore   *time.Time `json:"not_before,omitempty"`
	IssuedAt    *time.Time `json:"issued_at,omitempty"`
	KeyID       string     `json:"key_id,omitempty"`
	Compression string     `json:"compression,omitempty"`
	Nonce       []byte     `json:"nonce"`
}

type KeyProvider

type KeyProvider interface {
	GetKey(keyId string) (key []byte, err error)
}

type KeyProviderMemory

type KeyProviderMemory struct {
	// contains filtered or unexported fields
}

func NewKeyProviderMemory

func NewKeyProviderMemory(keys map[string][]byte) *KeyProviderMemory

func (*KeyProviderMemory) GetKey

func (provider *KeyProviderMemory) GetKey(keyId string) (key []byte, err error)

type Provider

type Provider struct {
	// contains filtered or unexported fields
}

func NewProvider

func NewProvider(keyProvider KeyProvider, defaultKey string) (provider *Provider, err error)

func (*Provider) IssueToken

func (provider *Provider) IssueToken(payload any, expiresAt *time.Time, options *TokenOptions) (token string, err error)

func (*Provider) VerifyToken

func (provider *Provider) VerifyToken(token string, data any) (header HeaderV1, err error)

type TokenOptions

type TokenOptions struct {
	NotBefore   *time.Time
	IssuedAt    *time.Time
	KeyID       string
	Compression string
}

Source Files

jst.go keys.go keys_memory.go

Version
v0.0.0-20240218134121-094174641f6e (latest)
Published
Feb 18, 2024
Platform
linux/amd64
Imports
11 packages
Last checked
4 months ago

Tools for package owners.