Skip to content

essentialkaos/branca

PkgGoDev GoReportCard Codacy
Coverage Status GitHub Actions CI Status GitHub Actions CodeQL Status

InstallationUsage exampleBenchmarksBuild StatusLicense


branca.go is branca token specification implementation for Go 1.23+.

Features and benefits:

  • Pure Go implementation;
  • No third-party dependencies at all;
  • 100% code coverage;
  • Fuzz tests.

Installation

Make sure you have a working Go 1.23+ workspace (instructions), then:

go get -u github.com/essentialkaos/branca/v2

Usage example

package main import ( "fmt" "github.com/essentialkaos/branca/v2" ) func main() { key := "abcd1234abcd1234abcd1234abcd1234" brc, err := branca.NewBranca([]byte(key)) if err != nil { fmt.Printf("Error: %v\n", err) return } payload := "MySuperSecretData" token, err := brc.EncodeToString([]byte(payload)) if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("Token: %s\n", token) }

Benchmarks

You can run benchmarks by yourself using make benchmark command.

go version go1.23.2 linux/amd64 BrancaSuite.BenchmarkBase62Decoding 1000000 1106 ns/op 408 B/op 7 allocs/op BrancaSuite.BenchmarkBase62Encoding 1000000 1105 ns/op 512 B/op 6 allocs/op BrancaSuite.BenchmarkBrancaDecoding 5000000 421 ns/op 48 B/op 2 allocs/op BrancaSuite.BenchmarkBrancaDecodingFromString 1000000 1632 ns/op 456 B/op 9 allocs/op BrancaSuite.BenchmarkBrancaEncoding 1000000 2108 ns/op 152 B/op 4 allocs/op BrancaSuite.BenchmarkBrancaEncodingToString 500000 3854 ns/op 664 B/op 10 allocs/op 

Build Status

Branch Status
master CI
develop CI

Contributing

Before contributing to this project please read our Contributing Guidelines.

License

Apache License, Version 2.0

About

Authenticated encrypted API tokens (IETF XChaCha20-Poly1305 AEAD) for Golang

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors