@@ -12,7 +12,91 @@ Import this package for its side effects to register Ed448 with `jwx`:
1212
1313<!-- INCLUDE(example_test.go) -->
1414``` go
15+ package ed448_test
16+
17+ import (
18+ " encoding/json"
19+ " fmt"
20+
21+ " github.com/cloudflare/circl/sign/ed448"
22+ " github.com/lestrrat-go/jwx/v3/jwa"
23+ " github.com/lestrrat-go/jwx/v3/jwk"
24+ " github.com/lestrrat-go/jwx/v3/jws"
25+
26+ _ " github.com/lestrrat-go/jwx-circl-ed448"
27+ )
28+
29+ func Example () {
30+ // Generate an Ed448 key pair
31+ pub , priv , err := ed448.GenerateKey (nil )
32+ if err != nil {
33+ fmt.Printf (" failed to generate key: %s \n " , err)
34+ return
35+ }
36+
37+ payload := []byte (" Hello, Ed448!" )
38+
39+ // Sign and verify with raw keys
40+ signed , err := jws.Sign (payload, jws.WithKey (jwa.EdDSAEd448 (), priv))
41+ if err != nil {
42+ fmt.Printf (" failed to sign: %s \n " , err)
43+ return
44+ }
45+
46+ verified , err := jws.Verify (signed, jws.WithKey (jwa.EdDSAEd448 (), pub))
47+ if err != nil {
48+ fmt.Printf (" failed to verify: %s \n " , err)
49+ return
50+ }
51+ fmt.Printf (" %s \n " , verified)
52+
53+ // Import raw keys into JWK
54+ jwkPriv , err := jwk.Import (priv)
55+ if err != nil {
56+ fmt.Printf (" failed to import private key: %s \n " , err)
57+ return
58+ }
59+
60+ jwkPub , err := jwk.Import (pub)
61+ if err != nil {
62+ fmt.Printf (" failed to import public key: %s \n " , err)
63+ return
64+ }
65+
66+ // Sign and verify with JWK keys
67+ signed, err = jws.Sign (payload, jws.WithKey (jwa.EdDSAEd448 (), jwkPriv))
68+ if err != nil {
69+ fmt.Printf (" failed to sign with JWK key: %s \n " , err)
70+ return
71+ }
72+
73+ verified, err = jws.Verify (signed, jws.WithKey (jwa.EdDSAEd448 (), jwkPub))
74+ if err != nil {
75+ fmt.Printf (" failed to verify with JWK key: %s \n " , err)
76+ return
77+ }
78+ fmt.Printf (" %s \n " , verified)
79+
80+ // JWK JSON round-trip
81+ buf , err := json.MarshalIndent (jwkPriv, " " , " " )
82+ if err != nil {
83+ fmt.Printf (" failed to marshal JWK: %s \n " , err)
84+ return
85+ }
86+
87+ parsed , err := jwk.ParseKey (buf)
88+ if err != nil {
89+ fmt.Printf (" failed to parse JWK: %s \n " , err)
90+ return
91+ }
92+ _ = parsed
93+
94+ // Output:
95+ // Hello, Ed448!
96+ // Hello, Ed448!
97+ }
1598```
99+ source: [ example_test.go] ( https://github.com/lestrrat-go/jwx-circl-ed448/blob/main/example_test.go )
16100<!-- END INCLUDE -->
17101
18102# Installation
0 commit comments