Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/essentialkaos/branca

Authenticated encrypted API tokens (IETF XChaCha20-Poly1305 AEAD) for Golang
https://github.com/essentialkaos/branca

branca golang jwt tokens

Last synced: 19 days ago
JSON representation

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

Awesome Lists containing this project

README

        


PkgGoDev
GoReportCard
Codacy
Code Climate Maintainability


Coverage Status
GitHub Actions CI Status
GitHub Actions CodeQL Status

InstallationUsage exampleBenchmarksBuild StatusLicense


`branca.go` is [branca token specification](https://github.com/tuupola/branca-spec) implementation for [Go 1.18+](https://github.com/essentialkaos/.github/blob/master/GO-VERSION-SUPPORT.md).

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.18+](https://github.com/essentialkaos/.github/blob/master/GO-VERSION-SUPPORT.md) workspace (_[instructions](https://go.dev/doc/install)_), then:

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

### Usage example

```go
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](https://kaos.sh/w/branca/ci.svg?branch=master)](https://kaos.sh/w/branca/ci?query=branch:master) |
| `develop` | [![CI](https://kaos.sh/w/branca/ci.svg?branch=develop)](https://kaos.sh/w/branca/ci?query=branch:develop) |

### License

[MIT](LICENSE)