refresh

package module
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2022 License: MIT Imports: 8 Imported by: 0

README

Go Refresh

Durudex Refresh Token implementation.

Setup

go get github.com/durudex/go-refresh

Usage

Generation of refresh token and receiving payload and full token:

import (
	"fmt"

	"github.com/durudex/go-refresh"
)

const (
	sessionId = "2Fj7R4ERGtDdM5SBGl6mDesP2Qm"
	objectId = "2Fj7R4WcK9KMn1FY2kCnKGbFtA0"
)

func main() {
	r, err := refresh.New()
	if err != nil { ... }

	fmt.Println("Payload:", r.String())
	fmt.Println("Token:", r.Token(sessionId, objectId))
}

Result:

Payload: ZpgdubxwoCROmgHJ0g8EzFhFsy5KopL4
Token: 2Fj7R4ERGtDdM5SBGl6mDesP2Qm.2Fj7R4WcK9KMn1FY2kCnKGbFtA0.ZpgdubxwoCROmgHJ0g8EzFhFsy5KopL4

Hashing of the refresh token using a secret key:

import (
	"fmt"

	"github.com/durudex/go-refresh"
)

const secretKey = "durudex"

func main() {
	r, err := refresh.New()
	if err != nil { ... }

	h := r.Hash([]byte(secretKey))

	fmt.Println("Hash:", fmt.Sprintf("%x", h))
}

Result:

Hash: 91b9b4ddda35be0338407fbaa76bb6adfe2dba8ad6719fe0ebae006c297b529f

Parsing refresh token from string:

import (
	"fmt"

	"github.com/durudex/go-refresh"
)

const fullToken = "2Fj7R4ERGtDdM5SBGl6mDesP2Qm.2Fj7R4WcK9KMn1FY2kCnKGbFtA0.ZpgdubxwoCROmgHJ0g8EzFhFsy5KopL4"

func main() {
	token, err := refresh.Parse(fullToken)
	if err != nil { ... }

	fmt.Println("Payload:", token.Payload.String())
	fmt.Println("Session Id:", token.Session)
	fmt.Println("Object Id:", token.Object)
}

Result:

Payload: ZpgdubxwoCROmgHJ0g8EzFhFsy5KopL4
Session Id: 2Fj7R4ERGtDdM5SBGl6mDesP2Qm
Object Id: 2Fj7R4WcK9KMn1FY2kCnKGbFtA0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Refresh token point count error.
	ErrPointCount = errors.New("error token point count must be less one")
	// Refresh token payload size error.
	ErrPayloadSize = errors.New("error token payload size")

	// Refresh token nil value.
	Nil Token
)

Functions

func SetRand

func SetRand(r io.Reader)

Sets the global source rander of random bytes for refresh token payload generation.

Types

type Payload added in v0.0.3

type Payload [bytesLength]byte

Refresh token payload type.

var (
	// Refresh token payload nil value.
	PayloadNil Payload
)

func FromBytes added in v0.0.2

func FromBytes(b []byte) (Payload, error)

Getting refresh token payload from bytes.

func FromBytesOrNil added in v0.0.2

func FromBytesOrNil(b []byte) Payload

Getting refresh token payload from bytes. Same behavior as FromBytes, but returns a Nil Token on error.

func New

func New() (Payload, error)

Generating a new refresh token payload.

func (Payload) Bytes added in v0.0.3

func (p Payload) Bytes() []byte

Getting refresh token payload in bytes.

func (Payload) Hash added in v0.0.3

func (p Payload) Hash(secret []byte) []byte

Hashing refresh token payload by secret key.

func (Payload) IsNil added in v0.0.3

func (p Payload) IsNil() bool

Checking refresh token payload is nil.

func (Payload) String added in v0.0.3

func (p Payload) String() string

Getting refresh token payload in string.

func (Payload) Token added in v0.0.3

func (p Payload) Token(session, object string) string

Getting full refresh token in string.

type Token

type Token struct {
	// Refresh token session id.
	Session string
	// Refresh token object id.
	Object string
	// Refresh token payload.
	Payload Payload
}

Refresh token structure.

func Parse

func Parse(t string) (Token, error)

Parsing refresh token string.

Jump to

Keyboard shortcuts

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