jwt

package module
v0.0.0-...-e36d8ac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2020 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	ErrValidAud = errors.New("invalid aud")
	ErrValidExp = errors.New("invalid exp")
	ErrValidIat = errors.New("invalid iat")
	ErrValidIss = errors.New("invalid iss")
	ErrValidJti = errors.New("invalid jti")
	ErrValidNbf = errors.New("invalid nbf")
	ErrValidSub = errors.New("invalid sub")
)
View Source
var Epoch = time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC)

Functions

func Validate

func Validate(pl Payload, vs ...Validator) error

Types

type Audience

type Audience []string

Audience RFC 7519.

func (Audience) MarshalJSON

func (a Audience) MarshalJSON() ([]byte, error)

func (*Audience) UnmarshalJSON

func (a *Audience) UnmarshalJSON(b []byte) error

type Payload

type Payload struct {
	PrivateKey     ed25519.PrivateKey `json:"-"`
	PublicKey      ed25519.PublicKey  `json:"-"`
	Validator      []Validator        `json:"-"`
	Issuer         string             `json:"iss,omitempty"`
	Subject        string             `json:"sub,omitempty"`
	Audience       Audience           `json:"aud,omitempty"`
	ExpirationTime *Time              `json:"exp,omitempty"`
	NotBefore      *Time              `json:"nbf,omitempty"`
	IssuedAt       *Time              `json:"iat,omitempty"`
	JWTID          string             `json:"jti,omitempty"`
}
Example
seed, err := base64.RawURLEncoding.DecodeString("9ZmhLw2OOCeTXHj02b6LI7Irl7Hw97msGd7o_jhiDkU")
if err != nil {
	panic(err)
}

pk := ed25519.NewKeyFromSeed(seed)

p1 := Payload{
	PrivateKey: pk,
	Subject:    "sub",
}
j, err := json.Marshal(p1)
if err != nil {
	fmt.Println(err)
}
// fmt.Println(string(j))

p2 := Payload{
	PublicKey: pk.Public().(ed25519.PublicKey),
	Validator: []Validator{ValidSubject("sub")},
}
err = json.Unmarshal(j, &p2)
if err != nil {
	fmt.Println(err)
}
fmt.Printf("%s", p2.Subject)
Output:

sub

func (Payload) MarshalJSON

func (p Payload) MarshalJSON() ([]byte, error)

func (*Payload) UnmarshalJSON

func (p *Payload) UnmarshalJSON(b []byte) error

type Time

type Time struct {
	time.Time
}

func NumericDate

func NumericDate(tt time.Time) *Time

func (Time) MarshalJSON

func (t Time) MarshalJSON() ([]byte, error)

func (*Time) UnmarshalJSON

func (t *Time) UnmarshalJSON(b []byte) error

type Validator

type Validator func(Payload) error

func ValidAudience

func ValidAudience(aud Audience) Validator

func ValidExpirationTime

func ValidExpirationTime(now time.Time) Validator

func ValidID

func ValidID(jti string) Validator

func ValidIssuedAt

func ValidIssuedAt(now time.Time) Validator

func ValidIssuer

func ValidIssuer(iss string) Validator

func ValidNotBefore

func ValidNotBefore(now time.Time) Validator

func ValidSubject

func ValidSubject(sub string) Validator

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL