Authenticated encrypted API tokens (IETF XChaCha20-Poly1305 AEAD) for Golang
Installation • Usage example • Benchmarks • Build Status • License
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 | | |
develop | |
Contributing
Before contributing to this project please read our Contributing Guidelines.