fork of indigo with slightly nicer lexgen
at main 1.3 kB view raw
1package pds 2 3import ( 4 "bytes" 5 "crypto/ecdsa" 6 "crypto/elliptic" 7 "encoding/json" 8 "fmt" 9 "testing" 10 11 "github.com/lestrrat-go/jwx/v2/jwk" 12) 13 14// make a root signing key for testing 15func TestJWK_GenKey(t *testing.T) { 16 // to get the same values every time, we need to create a static source 17 // of "randomness" 18 rdr := bytes.NewReader([]byte("01234567890123456789012345678901234567890123456789ABCDEF")) 19 raw, err := ecdsa.GenerateKey(elliptic.P384(), rdr) 20 if err != nil { 21 fmt.Printf("failed to generate new ECDSA private key: %s\n", err) 22 return 23 } 24 25 key, err := jwk.FromRaw(raw) 26 if err != nil { 27 fmt.Printf("failed to create ECDSA key: %s\n", err) 28 return 29 } 30 if _, ok := key.(jwk.ECDSAPrivateKey); !ok { 31 fmt.Printf("expected jwk.ECDSAPrivateKey, got %T\n", key) 32 return 33 } 34 35 key.Set(jwk.KeyIDKey, "mykey") 36 37 buf, err := json.MarshalIndent(key, "", " ") 38 if err != nil { 39 fmt.Printf("failed to marshal key into JSON: %s\n", err) 40 return 41 } 42 fmt.Printf("%s\n", buf) 43 44 // OUTPUT: 45 // { 46 // "crv": "P-384", 47 // "d": "ODkwMTIzNDU2Nzg5MDEyMz7deMbyLt8g4cjcxozuIoygLLlAeoQ1AfM9TSvxkFHJ", 48 // "kid": "mykey", 49 // "kty": "EC", 50 // "x": "gvvRMqm1w5aHn7sVNA2QUJeOVcedUnmiug6VhU834gzS9k87crVwu9dz7uLOdoQl", 51 // "y": "7fVF7b6J_6_g6Wu9RuJw8geWxEi5ja9Gp2TSdELm5u2E-M7IF-bsxqcdOj3n1n7N" 52 // } 53}