Skip to content

Commit 88cb2a1

Browse files
committed
autodoc updates
1 parent 3e7b1f3 commit 88cb2a1

1 file changed

Lines changed: 84 additions & 0 deletions

File tree

README.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)