Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/essentialkaos/branca
- Owner: essentialkaos
- License: mit
- Created: 2018-12-29T15:38:30.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-17T08:09:30.000Z (about 2 months ago)
- Last Synced: 2024-10-19T10:59:05.789Z (about 2 months ago)
- Topics: branca, golang, jwt, tokens
- Language: Go
- Homepage: https://kaos.sh/g/branca.v2
- Size: 164 KB
- Stars: 84
- Watchers: 6
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-go - branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
- awesome-go - branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
- awesome-go-stars - branca(stars: 75) - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
- awesome-go - branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
- awesome-go - branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
- awesome-go-with-stars - branca - branca token <code> 228</code> [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
- awesome-go - branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
- fucking-awesome-go - branca - branca token <b><code> 228⭐</code></b> <b><code> 7🍴</code></b> [specification implementation](https://github.com/tuupola/branca-spec)) for Golang 1.15+. (Authentication and OAuth)
- fucking-awesome-go - branca - branca token <b><code> 223⭐</code></b> <b><code> 7🍴</code></b> [specification implementation](https://github.com/tuupola/branca-spec)) for Golang 1.15+. (Authentication and OAuth)
- awesome-go-cn - branca - spec)用于Golang 1.15+。 [![近一周有更新][G]](https://github.com/essentialkaos/branca) [![godoc][D]](https://godoc.org/github.com/essentialkaos/branca) (身份验证和OAuth)
- awesome-go-plus - branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. ![stars](https://img.shields.io/badge/stars-85-blue) (Authentication and OAuth)
- awesome-go-plus - branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+. (Authentication and OAuth)
README
Installation • Usage example • Benchmarks • Build Status • License
`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 mainimport (
"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/amd64BrancaSuite.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)