41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.4 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 "git.rootprojects.org/root/keypairs/keyfetch"
 | |
| 
 | |
| 	pubs, err := keyfetch.OIDCJWKs("https://example.com/")
 | |
| 	pubs, err := keyfetch.OIDCJWK(ThumbOrKeyID, "https://example.com/")
 | |
| 
 | |
| 	pubs, err := keyfetch.WellKnownJWKs("https://example.com/")
 | |
| 	pubs, err := keyfetch.WellKnownJWK(ThumbOrKeyID, "https://example.com/")
 | |
| 
 | |
| 	pubs, err := keyfetch.JWKs("https://example.com/path/to/jwks/")
 | |
| 	pubs, err := keyfetch.JWK(ThumbOrKeyID, "https://example.com/path/to/jwks/")
 | |
| 
 | |
| 	// From URL
 | |
| 	pub, err := keyfetch.Fetch("https://example.com/jwk.json")
 | |
| 
 | |
| 	// From Cache only
 | |
| 	pub := keyfetch.Get(thumbprint, "https://example.com/jwk.json")
 | |
| 
 | |
| A non-caching version with the same capabilities is also available.
 | |
| 
 | |
| */
 | |
| package keypairs
 |