From c1b5f8af08545deb46da789c376be2309fa40355 Mon Sep 17 00:00:00 2001 From: Divya Jain Date: Tue, 13 May 2025 21:33:02 +0000 Subject: [PATCH] cmd/genjwks: add generate jwks script --- cmd/genjwks/main.go | 42 ++++++++++++++++++++++++++++++++++++++++++ scripts/generate-jwks.sh | 5 +++++ 2 file(s) changed, 47 insertion(s)(+), 0 deletion(s)(-) diff --git a/cmd/genjwks/main.go b/cmd/genjwks/main.go new file mode 100644 --- /dev/null +++ b/cmd/genjwks/main.go @@ -0,0 +1,42 @@ +// adapted from https://github.com/haileyok/atproto-oauth-golang + +package main + +import ( + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "encoding/json" + "fmt" + "os" + "time" + + "github.com/lestrrat-go/jwx/v2/jwk" +) + +func main() { + privKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + panic(err) + } + + key, err := jwk.FromRaw(privKey) + if err != nil { + panic(err) + } + + kid := fmt.Sprintf("%d", time.Now().Unix()) + + if err := key.Set(jwk.KeyIDKey, kid); err != nil { + panic(err) + } + + b, err := json.Marshal(key) + if err != nil { + panic(err) + } + + if err := os.WriteFile("./jwks.json", b, 0644); err != nil { + panic(err) + } +} diff --git a/scripts/generate-jwks.sh b/scripts/generate-jwks.sh new file mode 100644 --- /dev/null +++ b/scripts/generate-jwks.sh @@ -0,0 +1,5 @@ +#! /usr/bin/env bash + +set -e + +go run ./cmd/genjwks/ -- tangled.sh