Documentation ¶
Overview ¶
Package branca implements branca token specification
Index ¶
- Constants
- Variables
- func DecodeBase62(src string) ([]byte, error)
- func EncodeBase62(src []byte) string
- type Branca
- func (b *Branca) Decode(token []byte) (Token, error)
- func (b *Branca) DecodeString(token string) (Token, error)
- func (b *Branca) Encode(payload []byte) ([]byte, error)
- func (b *Branca) EncodeToString(payload []byte) (string, error)
- func (b *Branca) IsExpired(t Token) bool
- func (b *Branca) SetTTL(ttl uint32)
- type Token
Examples ¶
Constants ¶
View Source
const ( // KEY_SIZE is Branca key is always 32 bytes (i.e 256 bit) KEY_SIZE = 32 // MIN_TOKEN_SIZE is minimal token size is 45 bytes (with empty payload) MIN_TOKEN_SIZE = 45 )
View Source
const ( // VERSION_SIZE is Branca version size (1B) VERSION_SIZE = 1 // TIMESTAMP_SIZE is Branca timestamp size (4B) TIMESTAMP_SIZE = 4 // NONCE_SIZE is Branca nonce size (24B) NONCE_SIZE = 24 // HEADER_SIZE is Branca header size (29B) HEADER_SIZE = VERSION_SIZE + TIMESTAMP_SIZE + NONCE_SIZE )
Variables ¶
View Source
var ( // ErrInvalidToken means that given data doesn't look like branca token ErrInvalidToken = errors.New("Token is invalid") // ErrInvalidVersion means that token has an unsupported version ErrInvalidVersion = errors.New("Token has invalid version") // ErrBadKeyLength is returned if key not equal to 32 bytes ErrBadKeyLength = errors.New("Key must be 32 bytes long") )
View Source
var ErrNonBase62Char = errors.New("Got non Base62 character")
ErrNonBase62Char means that given string contains symbol which is not a part of the Base62 alphabet
Functions ¶
func DecodeBase62 ¶
DecodeBase62 decodes bases62 encoded string to byte slice
func EncodeBase62 ¶
EncodeBase62 encodes bytes slice to base62 encoded string
Types ¶
type Branca ¶
type Branca struct {
// contains filtered or unexported fields
}
Branca is branca struct
func NewBranca ¶
NewBranca creates new branca struct
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } payload := "MySecretData" token, err := brc.EncodeToString([]byte(payload)) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Token: %s\n", token)
Output:
func (*Branca) Decode ¶
Decode extract payload from branca token
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } data := []byte{186, 92, 40, 2, 172, 169, 93, 187, 60, 216, 139, 79, 89, 25, 68, 191, 235, 113, 237, 55, 133, 168, 158, 255, 160, 36, 98, 222, 110, 242, 182, 153, 143, 206, 44, 141, 59, 46, 81, 124, 114, 25, 117, 85, 156, 170, 204, 175, 164, 57, 5, 235, 56, 1, 115, 5, 222} token, err := brc.Decode(data) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Payload: %s\n", string(token.Payload()))
Output: Payload: MySecretData
func (*Branca) DecodeString ¶
DecodeString extract payload from Base62 encoded token
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } data := "87yoI2tNmtPGYxQMYExUw6Yn0zRJccwIiMZxAQ7OBNoLl2P2stmAfD1BLvHOIdwmjGIWxnLrNmHLG" token, err := brc.DecodeString(data) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Payload: %s\n", string(token.Payload()))
Output: Payload: MySecretData
func (*Branca) Encode ¶
Encode encodes payload to branca token
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } payload := "MySecretData" token, err := brc.Encode([]byte(payload)) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Token: %v\n", token)
Output:
func (*Branca) EncodeToString ¶
EncodeToString create Base62 encoded token with given payload
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } payload := "MySecretData" token, err := brc.EncodeToString([]byte(payload)) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Token: %s\n", token)
Output:
func (*Branca) IsExpired ¶
IsExpired returns true if given token is expired
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } data := "87yoI2tNmtPGYxQMYExUw6Yn0zRJccwIiMZxAQ7OBNoLl2P2stmAfD1BLvHOIdwmjGIWxnLrNmHLG" token, err := brc.DecodeString(data) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Token expired: %t", brc.IsExpired(token))
Output: Token expired: true
type Token ¶
type Token struct {
// contains filtered or unexported fields
}
Token is branca token
func (*Token) Payload ¶
Payload returns token payload
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } data := "87yoI2tNmtPGYxQMYExUw6Yn0zRJccwIiMZxAQ7OBNoLl2P2stmAfD1BLvHOIdwmjGIWxnLrNmHLG" token, err := brc.DecodeString(data) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Payload: %s\n", string(token.Payload()))
Output: Payload: MySecretData
func (*Token) Timestamp ¶
Timestamp returns token timestamp
Example ¶
key := "mysupppadupppasecretkeyforbranca" brc, err := NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } data := "87yoI2tNmtPGYxQMYExUw6Yn0zRJccwIiMZxAQ7OBNoLl2P2stmAfD1BLvHOIdwmjGIWxnLrNmHLG" token, err := brc.DecodeString(data) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Timestamp: %v\n", token.Timestamp())
Output:
Click to show internal directories.
Click to hide internal directories.