From c1b5f8af08545deb46da789c376be2309fa40355 Mon Sep 17 00:00:00 2001 From: Divya Jain Date: Wed, 14 May 2025 03:03:02 +0530 Subject: [PATCH] cmd/genjwks: add generate jwks script --- cmd/genjwks/main.go | 42 ++++++++++++++++++++++++++++++++++++++++ scripts/generate-jwks.sh | 5 +++++ 2 files changed, 47 insertions(+) create mode 100644 cmd/genjwks/main.go create mode 100755 scripts/generate-jwks.sh diff --git a/cmd/genjwks/main.go b/cmd/genjwks/main.go new file mode 100644 index 00000000..cfa9c083 --- /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 100755 index 00000000..66a7b709 --- /dev/null +++ b/scripts/generate-jwks.sh @@ -0,0 +1,5 @@ +#! /usr/bin/env bash + +set -e + +go run ./cmd/genjwks/ -- 2.51.2