Branca
Authenticated encrypted API tokens (IETF XChaCha20-Poly1305 AEAD) for Golang
Install / Use
/learn @essentialkaos/BrancaREADME
<p align="center"><a href="#readme"><img src=".github/images/card.svg"/></a></p>
<p align="center">
<a href="https://kaos.sh/g/branca.v2"><img src=".github/images/godoc.svg" alt="PkgGoDev" /></a>
<a href="https://kaos.sh/r/branca"><img src="https://kaos.sh/r/branca.svg" alt="GoReportCard" /></a>
<a href="https://kaos.sh/y/branca"><img src="https://kaos.sh/y/93833817a18343c1888050402e7d8d41.svg" alt="Codacy" /></a>
<br/>
<a href="https://kaos.sh/c/branca"><img src="https://kaos.sh/c/branca.svg" alt="Coverage Status" /></a>
<a href="https://kaos.sh/w/branca/ci"><img src="https://kaos.sh/w/branca/ci.svg" alt="GitHub Actions CI Status" /></a>
<a href="https://kaos.sh/w/branca/codeql"><img src="https://kaos.sh/w/branca/codeql.svg" alt="GitHub Actions CodeQL Status" /></a>
<a href="#license"><img src=".github/images/license.svg"/></a>
</p>
<p align="center"><a href="#installation">Installation</a> • <a href="#usage-example">Usage example</a> • <a href="#benchmarks">Benchmarks</a> • <a href="#build-status">Build Status</a> • <a href="#license">License</a></p>
<br/>
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.
