Skip to content

Instantly share code, notes, and snippets.

@yujp
Created August 29, 2021 02:10
Show Gist options
  • Save yujp/426bf8f68819991144070ef0ec6b61d8 to your computer and use it in GitHub Desktop.
Save yujp/426bf8f68819991144070ef0ec6b61d8 to your computer and use it in GitHub Desktop.
package main
import (
//"crypto/ed25519"
"golang.org/x/crypto/ed25519"
"log"
"time"
"github.com/o1egl/paseto"
)
func main() {
pub, prv, err := ed25519.GenerateKey(nil)
if err != nil {
log.Fatalf("failed ed25519.GenerateKey: %+v", err)
}
log.Printf("PublicKey :%x", pub)
log.Printf("PrivateKey: %x", prv)
publicKey := pub
privateKey := prv
now := time.Now()
jsonToken := paseto.JSONToken{
Audience: "Audience",
Issuer: "Issuer",
Subject: "Subject",
Jti: "Jti",
Expiration: time.Now().Add(1 * time.Minute),
IssuedAt: now,
NotBefore: now,
}
jsonToken.Set("custom-value", "VALUE")
footer := "footer"
v2 := paseto.NewV2()
token, err := v2.Sign(privateKey, jsonToken, footer)
if err != nil {
log.Fatalf("failed v2.Sign: %+v", err)
}
log.Printf("token: %s", token)
var newJsonToken paseto.JSONToken
var newFooter string
if err := v2.Verify(token, publicKey, &newJsonToken, &newFooter); err != nil {
log.Fatalf("failed v2.Verify: %+v", err)
}
log.Printf("verified: %+v", &newJsonToken)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment