fwt

package module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Aug 4, 2023 License: MIT Imports: 15 Imported by: 0

README

FastWebToken

Build, Test

Small, Fast and simple JWT alternative that uses CBOR for serialization and EdDSA, HMAC, blake2b and blake3 for signing.

Structure

Header Payload Signature
1 (SignatureType) + 8 byte (Payload size) Varies based on the Payload size 32 bytes for HMACSha256, Blake2b256, blake3 or 64 bytes for Ed25519, HMACSha512, Blake2b512 or 114 bytes for Ed448
  1. Header: This begins with a single byte that determines the SignatureType. The available options are Ed25519 (0x00), Ed448 (0x01), HMACSha256 (0x02), HMACSha512 (0x03), Blake2b256 (0x04), Blake2b512 (0x05) and Blake3 (0x06). Following 8-byte block represents the size of the payload.
  2. Payload: Payload that encoded in MessagePack format. The size of the payload is specified in the header.
  3. Signature: This is either 64 or 114 bytes depending on the SignatureType specified in the header.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewAESCBCDecrypter

func NewAESCBCDecrypter(key []byte) func([]byte) ([]byte, error)

func NewAESCBCEncryptor

func NewAESCBCEncryptor(key []byte) func([]byte) ([]byte, error)

func NewBlake2b256Signer

func NewBlake2b256Signer(key []byte) func([]byte) ([]byte, error)

func NewBlake2b256Verifier

func NewBlake2b256Verifier(key []byte) func([]byte, []byte) error

func NewBlake2b512Signer

func NewBlake2b512Signer(key []byte) func([]byte) ([]byte, error)

func NewBlake2b512Verifier

func NewBlake2b512Verifier(key []byte) func([]byte, []byte) error

func NewBlake3Signer

func NewBlake3Signer(key []byte) func([]byte) ([]byte, error)

func NewBlake3Verifier

func NewBlake3Verifier(key []byte) func([]byte, []byte) error

func NewEd448Signer

func NewEd448Signer(key ed448.PrivateKey) func([]byte) ([]byte, error)

func NewEd448Verifier

func NewEd448Verifier(key ed448.PublicKey) func([]byte, []byte) error

func NewEd25519Signer

func NewEd25519Signer(key ed25519.PrivateKey) func([]byte) ([]byte, error)

func NewEd25519Verifier

func NewEd25519Verifier(key ed25519.PublicKey) func([]byte, []byte) error

func NewHMACSha256Signer

func NewHMACSha256Signer(key []byte) func([]byte) ([]byte, error)

func NewHMACSha256Verifier

func NewHMACSha256Verifier(key []byte) func([]byte, []byte) error

func NewHMACSha512Signer

func NewHMACSha512Signer(key []byte) func([]byte) ([]byte, error)

func NewHMACSha512Verifier

func NewHMACSha512Verifier(key []byte) func([]byte, []byte) error

func NewXChaCha20PolyDecrypter

func NewXChaCha20PolyDecrypter(key []byte) func([]byte) ([]byte, error)

func NewXChaCha20PolyEncryptor

func NewXChaCha20PolyEncryptor(key []byte) func([]byte) ([]byte, error)

Types

type SignatureType

type SignatureType int
const (
	SignatureTypeEd25519 SignatureType = iota
	SignatureTypeEd448
	SignatureTypeHMACSha256
	SignatureTypeHMACSha512
	SignatureTypeBlake2b256
	SignatureTypeBlake2b512
	SignatureTypeBlake3
)

type Signer

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

func NewSigner

func NewSigner(signer func([]byte) ([]byte, error), encryptor func([]byte) ([]byte, error), signatureType SignatureType) *Signer

func (*Signer) Sign

func (s *Signer) Sign(data any) (string, error)

type Verifier

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

func NewVerifier

func NewVerifier(verifier func([]byte, []byte) error, decrypter func([]byte) ([]byte, error), signatureType SignatureType) *Verifier

func (*Verifier) Verify

func (v *Verifier) Verify(token string) error

func (*Verifier) VerifyAndUnmarshal

func (v *Verifier) VerifyAndUnmarshal(token string, dst any) error

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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