# go で fernet token を使う
# fernet/fernet-go
こちら (opens new window)を使います、こんなかんじ
import (
"fmt"
"time"
"github.com/fernet/fernet-go"
)
func cntlDecodeFernetMessage(c *gin.Context) {
message := c.Param("message")
k := fernet.MustDecodeKeys("cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4=")
msg := fernet.VerifyAndDecrypt([]byte(message), 60*time.Second, k)
fmt.Println(string(msg))
}
fernet.MustDecodeKeys
の引数の key はkey format (opens new window) の仕様どおり 32バイトのバイト列を base64url エンコーディングしたもので、こちらのように以下のように作るとよいと思います
dd if=/dev/urandom bs=32 count=1 2>/dev/null | openssl base64 | tr +/ -_
YGhOn9OzAYQnE16wL-Vaw2rTgo4e0_rjSZWFyPBDo_o=