+64
cmd/genjwks/main.go
+64
cmd/genjwks/main.go
···
1
+
// MIT License
2
+
//
3
+
// Copyright (c) 2025 Anirudh Oppiliappan, Akshay Oppiliappan and
4
+
// contributors.
5
+
//
6
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
7
+
// of this software and associated documentation files (the "Software"), to deal
8
+
// in the Software without restriction, including without limitation the rights
9
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+
// copies of the Software, and to permit persons to whom the Software is
11
+
// furnished to do so, subject to the following conditions:
12
+
//
13
+
// The above copyright notice and this permission notice shall be included in all
14
+
// copies or substantial portions of the Software.
15
+
//
16
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+
// SOFTWARE.
23
+
24
+
package main
25
+
26
+
import (
27
+
"crypto/ecdsa"
28
+
"crypto/elliptic"
29
+
"crypto/rand"
30
+
"encoding/json"
31
+
"fmt"
32
+
"time"
33
+
34
+
"github.com/lestrrat-go/jwx/v2/jwk"
35
+
)
36
+
37
+
func main() {
38
+
privKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
39
+
if err != nil {
40
+
panic(err)
41
+
}
42
+
43
+
key, err := jwk.FromRaw(privKey)
44
+
if err != nil {
45
+
panic(err)
46
+
}
47
+
48
+
kid := fmt.Sprintf("%d", time.Now().Unix())
49
+
50
+
if err := key.Set(jwk.KeyIDKey, kid); err != nil {
51
+
panic(err)
52
+
}
53
+
54
+
if err := key.Set("use", "sig"); err != nil {
55
+
panic(err)
56
+
}
57
+
58
+
b, err := json.Marshal(key)
59
+
if err != nil {
60
+
panic(err)
61
+
}
62
+
63
+
fmt.Println(string(b))
64
+
}