37 lines
1.3 KiB
Go
37 lines
1.3 KiB
Go
|
/*
|
||
|
Package keypairs complements Go's standard keypair-related packages
|
||
|
(encoding/pem, crypto/x509, crypto/rsa, crypto/ecdsa, crypto/elliptic)
|
||
|
with JWK encoding support and typesafe PrivateKey and PublicKey interfaces.
|
||
|
|
||
|
Basics
|
||
|
|
||
|
key, err := keypairs.ParsePrivateKey(bytesForJWKOrPEMOrDER)
|
||
|
|
||
|
pub, err := keypairs.ParsePublicKey(bytesForJWKOrPEMOrDER)
|
||
|
|
||
|
jwk, err := keypairs.MarshalJWKPublicKey(pub, time.Now().Add(2 * time.Day))
|
||
|
|
||
|
kid, err := keypairs.ThumbprintPublicKey(pub)
|
||
|
|
||
|
Convenience functions are available which will fetch keys
|
||
|
(or retrieve them from cache) via OIDC, .well-known/jwks.json, and direct urls.
|
||
|
All keys are cached by Thumbprint, as well as kid(@issuer), if available.
|
||
|
|
||
|
import "github.com/big-squid/go-keypairs/keyfetch"
|
||
|
|
||
|
pubs, err := keyfetch.OIDCJWKs("https://example.com/")
|
||
|
pubs, err := keyfetch.OIDCJWK(keyIDOrThumb, "https://example.com/")
|
||
|
|
||
|
pubs, err := keyfetch.WellKnownJWKs("https://example.com/")
|
||
|
pubs, err := keyfetch.WellKnownJWK(keyIDOrThumb, "https://example.com/")
|
||
|
|
||
|
pubs, err := keyfetch.JWKs("https://example.com/path/to/jwks/")
|
||
|
pubs, err := keyfetch.JWK(keyIDOrThumb, "https://example.com/path/to/jwks/)
|
||
|
|
||
|
pubs, err := keyfetch.Get("https://example.com/jwk.json)
|
||
|
|
||
|
A non-caching version with the same capabilities is also available.
|
||
|
|
||
|
*/
|
||
|
package keypairs
|